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

MySQL Discussion :

Augmenter la durée d'inactivité de ma connexion mysql


Sujet :

MySQL

  1. #1
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut Augmenter la durée d'inactivité de ma connexion mysql
    Bonjour

    Je viens d'héberger mon site web J2EE et comme c'est encore en phase test, j'ai pas beaucoup de visites et du coup le site reste inactif une bonne vingtaine de minutes. Suite à ça j'ai le message d'erreur suivant:

    dao.DAOException: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
    Et lorsque j'actualise tout redevient normal.

    En faisant mes recherches j'ai compris qu'il fallait augmenter la durée d'inactivité de mes connexions à mysql. Je suis aussi tombé sur ça:

    Your mySQL connections are timing out before your connection pool recognizes them. There are multiple ways to fix this:

    1. Increase the timeout value in mysql config file (my.ini)
    2. Reduce the idle time in your connection pool, so that it will discard the connection before mysql will close it
    3. Add a validate connection query in your pool config so that the pool tests each connection before it gives it to you, but this can slow down the system terribly.
    J'aimerais donc savoir quelle solution parmi les 3 vous me conseillez.

    Merci

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Euh...

    Normalement, un serveur web ne délivre des pages web que lorsqu'on les lui demande. Et c'est lors de cette demande de page que, si besoin pour générer la page à envoyer au demandeur, une connexion au SGBD va se faire. Le reste du temps, cette connexion est inutile et il est normal que les connexions soient fermées quand elles ne sont plus utiles.

    Je ne comprends donc pas la nature de votre problème.

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Si vous utilisez bien un pool de connexion, faîtes un mix de 1 et 2 afin d'être dans la configuration suivante :
    idle time connection pool < timeout mysql

  4. #4
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut
    J'ai contacté le service clientèle de mon hébergeur et voici ce qu'il ma conseillé:

    Dear Customer,

    In the server you located timeout is set to 10 minutes. Please note, that changing the timeout will affect all customers on the server, which may cause various issues.

    As a solution, we would like to suggest you to add in your jdbc connection string following command:
    &autoReconnect=true&failOverReadOnly=false&maxReconnects=10

    In this case, after timeout, you will be reconnected again.
    J'ai donc ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    url = jdbc:mysql://localhost:3306/ma_base_de_donnees&autoReconnect=true&failOverReadOnly=false&maxReconnects=10
    Mais quand je lance mon application j'ai l'erreur suivante dans le fichier log:

    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
    INFO [org.netbeans.modules.tomcat5.TomcatManagerImpl]: TomcatManagerImpl connecting to: http://localhost:8084/manager/text/deploy?config=file%3A%2FC%3A%2FUsers%2FMo%2FAppData%2FLocal%2FTemp%2Fcontext138676520858696842.xml&path=/MonSite
    INFO [org.netbeans.modules.j2ee.deployment.impl.TargetServer]: Cannot incrementally deploy to more than one target
    INFO [org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment]
    The module has not been deployed.
    See the server log for details.
    [catch] at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:210)
    	at org.netbeans.modules.j2ee.ant.Deploy.execute(Deploy.java:111)
    	at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    	at sun.reflect.GeneratedMethodAccessor76.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:606)
    	at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    	at org.apache.tools.ant.Task.perform(Task.java:348)
    	at org.apache.tools.ant.Target.execute(Target.java:392)
    	at org.apache.tools.ant.Target.performTasks(Target.java:413)
    	at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
    	at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
    	at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    	at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
    	at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:283)
    	at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:541)
    	at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:153)
    Merci

  5. #5
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut
    J'ai fait une petite erreur dans l'url, j'ai oublié le "?".

    Donc c'est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    url = jdbc:mysql://localhost:3306/ma_base_de_donnees?autoReconnect=true&failOverReadOnly=false&maxReconnects=10
    Au lieu de:

    url = jdbc:mysql://localhost:3306/ma_base_de_donnees&autoReconnect=true&failOverReadOnly=false&maxReconnects=10

  6. #6
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut
    Ok je n'ai plus d'erreur lors du lancement de l'application mais j'ai toujours le message d'erreur qui s'affiche après 10 minutes d'inactivité.

    Help please...

  7. #7
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Si vous utilisez bien un pool de connexion, faîtes un mix de 1 et 2 afin d'être dans la configuration suivante :
    idle time connection pool < timeout mysql
    J'ai pas bien saisi ce que tu veux dire par là

Discussions similaires

  1. la durée de vie d'une connexion mysql
    Par leo_OrNg dans le forum Administration
    Réponses: 1
    Dernier message: 31/12/2008, 21h52
  2. durée de vie d'une connexion mysql
    Par van-bom dans le forum MySQL
    Réponses: 1
    Dernier message: 08/11/2008, 18h07
  3. Comment augmenter la durée des sessions?
    Par dolf13 dans le forum Langage
    Réponses: 1
    Dernier message: 16/06/2007, 17h38
  4. Duree d'inactivite d'une base de donnees
    Par dehorter olivier dans le forum Bases de données
    Réponses: 2
    Dernier message: 02/11/2006, 18h08

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