IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tomcat et TomEE Java Discussion :

Perte de mes connexions Oracle après une période d'inactivité


Sujet :

Tomcat et TomEE Java

  1. #1
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut Perte de mes connexions Oracle après une période d'inactivité
    Bonjour à tous,

    J'ai configuré un pool de connexions dans Tomcat 7 (Java 6) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <Resource auth="Container" 
    driverClassName="oracle.jdbc.driver.OracleDriver" 
    name="jdbc/ds_monprojet"
    logAbandoned="true"  
    initialSize="10" 
    minIdle="10"  
    maxActive="20" 
    maxIdle="20" 
    maxWait="10000"
    password="PASS" 
    type="javax.sql.DataSource" 
    url="jdbc:oracle:thin:@host:1521:SID" 
    username="USER"
    autoReconnect="true" 
    removeAbandoned="true" 
    testOnBorrow="true" 
    testOnReturn="true" 
    validationQuery="select 1 from dual" 
    validationQueryTimeout="10"  />
    Comme vous le voyez, je m'acharne sur les param...

    En fait, le pool fonctionne super bien. Mais après 45 min (voire moins) d'inactivité, c'est comme si toutes les connexions étaient mortes.

    En gros tant que je les utilise, elles fonctionnent, ce qui me fait penser que je n'ai pas de fuite de connexion. Mais dès que je reste trop longtemps inactif, elles ne fonctionnent plus...

    Je n'ai ce problème que depuis que j'ai déployé en intégration. Ca marche ben en Dev. Ça peut donc venir du Tomcat, du réseau, du Oracle, de plein de trucs.

    Quelqu'un aurait des pistes intéressantes ?
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  2. #2
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Tu peux essayer de rajouter ?
    Sinon côté serveur tu as un paramètre SQLNET.EXPIRE_TIME dans sqlnet.ora

  3. #3
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    Ah génial. Je teste ça et je vous dis dans 45 min...
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  4. #4
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    Bon, le keepalive ne suffit pas :-(
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  5. #5
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    Et je n'ai pas de EXPIRE_TIME dans sqlnet.ora :-(
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  6. #6
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    Au final, j'ai mis ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     <Resource auth="Container" 
    driverClassName="oracle.jdbc.driver.OracleDriver" 
    name="jdbc/ds_FOO"
    logAbandoned="true"  
    initialSize="10" 
    minIdle="0"  
    maxActive="20" 
    maxIdle="20" 
    maxWait="10000"
    password="FOO" 
    type="javax.sql.DataSource" 
    url="jdbc:oracle:thin:@FOO:1521:FOO" 
    username="FOO"
    autoReconnect="true" 
    removeAbandoned="true" 
    removeAbandonedTimeout="120"    
    testOnBorrow="true" 
    testOnReturn="true" 
    validationQuery="select 1 from dual"
    validationQueryTimeout="10" 
    keepalive="true" 
    timeBetweenEvictionRunsMillis="59000" 
    minEvictableIdleTimeMillis="58000"     />
    Mais ça me recrée des connexions tout le temps au lieux de me les conserver ouvertes :-(

    Faut dire qu'Oracle me donne les logs suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Fatal NI connect error 12170.
     
      VERSION INFORMATION:
            TNS for Linux: Version 10.2.0.2.0 - Production
            Oracle Bequeath NT Protocol Adapter for Linux: Version 10.2.0.2.0 - Production
            TCP/IP NT Protocol Adapter for Linux: Version 10.2.0.2.0 - Production
      Time: 17-DEC-2012 13:49:55
      Tracing not turned on.
      Tns error struct:
        ns main err code: 12535
        TNS-12535: TNS:operation timed out
        ns secondary err code: 12560
        nt main err code: 505
        TNS-00505: Operation timed out
        nt secondary err code: 110
        nt OS err code: 0
      Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=00.00.00.00)(PORT=42015))
    Et apparemment error 12170 + code 12535, ça veut dire Firewall, comme je le pensais depuis le départ, d'après https://forums.oracle.com/forums/thr...readID=2429810

    Du coup, je ne sais pas trop si c'est "timeBetweenEvictionRunsMillis" ou "minEvictableIdleTimeMillis" qui me recrée mes connexions mais, au moins, ça fonctionne ;-) même si c'est crado :-(
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/01/2015, 02h26
  2. Réponses: 4
    Dernier message: 05/03/2014, 10h55
  3. Réponses: 11
    Dernier message: 21/02/2008, 02h47
  4. Réponses: 1
    Dernier message: 27/01/2007, 16h23
  5. Réponses: 2
    Dernier message: 02/10/2006, 09h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo