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

Administration MySQL Discussion :

show processlist : des processus de plus de 10000 sec.


Sujet :

Administration MySQL

  1. #1
    Membre actif
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Points : 207
    Points
    207
    Par défaut show processlist : des processus de plus de 10000 sec.
    salut,
    quand je tappe dans mysql :
    j'ai 10 processus, qui sont tous en Sleep et dont certains ont déjà 10000 secondes au compteur.

    je voudrais savoir si c'est normal ? est-ce que vous avec des trucs comme ca vous ? (j'ai rien touché a la config, un mdk10.0 official) ?

    merci.

    question annexe : comment on fixe la limite max du nombre de connection ? (j'ai peur de manquer )

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 894
    Points : 6 023
    Points
    6 023
    Par défaut
    Pour les process en sleep :

    Citation Envoyé par Aide MySQL
    Sleeping
    Le thread attend que le client envoie une nouvelle commande.
    une connexion non fermée ?
    une transaction non commitée ?

    Citation Envoyé par hpfx
    comment on fixe la limite max du nombre de connection ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET max_connections = nnnnn
    (100 par défaut) depuis la console mysql
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Membre actif
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Points : 207
    Points
    207
    Par défaut
    Citation Envoyé par qi130
    Pour les process en sleep :

    Citation Envoyé par Aide MySQL
    Sleeping
    Le thread attend que le client envoie une nouvelle commande.
    une connexion non fermée ?
    une transaction non commitée ?
    J'utilise des pconnect justement (qui d'apres la doc n'ont pas besoin d'être fermé, enfin c'est ce que j'ai compris)

    au fait, c'est dans du php.
    et je n'utilise pas de transaction.

    dois-je donc considere celà comme normal. ?
    pour info je n'utilise rien de particulier, des simple requetes SELECT.

    Je voulais savoir si chez vous aussi vous avez queques connections en sleeping ? merci.
    Ce qui est marrant, c'est que j'en ai exactement et tout le temps 10, jamais une de plus, a noter que la base en en cours d'utilsiation par plusieurs utilisateurs en permance (la charge est assez faible quand même)

  4. #4
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 894
    Points : 6 023
    Points
    6 023
    Par défaut
    Citation Envoyé par hpfx
    J'utilise des pconnect justement
    Tu utilises ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Memcache::pconnect
    ou encore cà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_pconnect()
    mais :
    Citation Envoyé par Aide PHP 4
    mysql_pconnect() établit une connexion persistante à un serveur MySQL.
    Tu lis comme moi persistante ?

    et dans Memcache::pconnect , le p veut aussi dire persistant.....

    0 pointé pour la traduction que tu as eu
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  5. #5
    Membre actif
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Points : 207
    Points
    207
    Par défaut
    Citation Envoyé par qi130
    ou encore cà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_pconnect()
    oui, j'utilise ca.
    Citation Envoyé par qi130
    mais :
    Citation Envoyé par Aide PHP 4
    mysql_pconnect() établit une connexion persistante à un serveur MySQL.
    Tu lis comme moi persistante ?
    et dans Memcache::pconnect , le p veut aussi dire persistant.....
    0 pointé pour la traduction que tu as eu
    et ?...
    que dois-je en deduire ? y a t'il un rapport ? est-ce que ca explique la constance de DIX connexion en permanance ? (qu'il y ait du monde ou pas du tout)
    bref, ca ne reponds pas a mes questions ? (avez-vous aussi des processus en sleeping chez vous?).
    Désolé d'insister, si vous voulez m'aider un peu, merci d'être plus explicatif envers moi, ben ouais je ne suis pas un expert (sinon je ne poserai pas cette question).

    j'ai pas trouvé d'info sur comment étais géré ces connexion "persistante" : la connexion reste en cours combien de temps ?
    Il semble que mes process disparaissent au bout d'un certain temps, mais ils sont remplacé au fur et a mesure par un autre, il y en a toujours dix, peut'il y avoir un rapport avec les pconnect ?
    est-ce que vous pouvez m'expliquer le fonctionnement de mysql_pconnect ?


    pour repondre a la remarque sur la traduction, depuis le site php.net, j'ai
    Citation Envoyé par php.net
    Deuxièmement, la connexion au serveur MySQL ne sera pas terminée avec la fin du script.
    Et j'ai écrit
    Citation Envoyé par hpfx
    qui d'apres la doc n'ont pas besoin d'être fermé, enfin c'est ce que j'ai compris
    J'ai un peu interpreté certe, mais est-ce si incoherent de se dire qu'on n'a pas besoin de faire un mysql_close ? "zéro pointé" c'est un peu dur, surtout sans explications.

    merci par avance.

  6. #6
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 894
    Points : 6 023
    Points
    6 023
    Par défaut
    Citation Envoyé par hpfx
    J'ai un peu interpreté


    ...c'est un euphémisme !

    Si les créateurs de php ont crée 2 commandes "connect", c'est qu'ils en ressentaient le besoin.

    Et effectivement, concernant le pconnect, le besoin est l'optimisation obtenue par la réutilisation de la connexion active versus la renégociation d'une nouvelle.

    Maintenant, lorsqu'on a une doc sous les yeux, il convient d'en tirer profit au maximum, ne serait-ce que par respect pour ceux qui la rédigent.

    Par suite, l'utilisation "les yeux fermés" d'une commande qui semble répondre au besoin (souvent plus pressenti que parfaitement cerné) est une démarche inconsistante qui est source d'errances sur les forums.

    L'emploi de pconnect fait que la connexion reste active. Si cette connexion ne doit pas rester active, il faut soit la fermer (mais c'est hélas impossible), soit ne pas utiliser pconnect.

    Cela me parait d'une évidence sans limite, et ce n'est pas de tergiverser sur le nombre de connexions actives sur mon serveur MySQL qui fera avancer les choses.

    D'autant que l'on se trouve sur le forum MySQL, ici, et que le problème tient plus de "la bonne compréhension des différentes façons de se connecter à MySQL dans un script PHP" ou encore "du bon usage des connect et pconnect dans un script PHP" (encore PHP!).

    J'estime donc nécéssaire que ce post soit clos puisque l'origine des process en sleep est identifié.

    Pour les autres interrogations, elles méritent un post sur le forum PHP, en accord avec les règles du forum ("Poster au bon endroit" & "1 pb par post")

    Et je passe sous silence l'impression vehiculée par
    et ?...
    que dois-je en deduire ? y a t'il un rapport ?
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  7. #7
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    mysql_pconnect crée une connexion persisitante. Donc quand le script php se termine la connexion est toujours active.

    mysql_connect crée une connexion non persisitante. Donc quand le script php se termine la connexion est coupée.

    Néanmoins, je t'invite à toujours fermer tes connexions avec un mysql_close car tu peux libérer des connxions. Ceci est pratique quand un hébergeur ne tolère que 15 connexions par site hébergé. Si ta connexion est coupée à la moitié de ton script php, alors c'est "comme si" l'hébergeur te laissait plus de connexions. Tu libères de la mémoire, tu accélère le traitement, etc...
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  8. #8
    Membre actif
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Points : 207
    Points
    207
    Par défaut
    Citation Envoyé par qi130
    Si les créateurs de php ont crée 2 commandes "connect", c'est qu'ils en ressentaient le besoin.

    ......
    Maintenant, lorsqu'on a une doc sous les yeux, il convient d'en tirer profit au maximum, ne serait-ce que par respect pour ceux qui la rédigent.
    Merci pour ce conseil plein de bon sens, ok.
    Mais j'ai posé plein de question auquel je n'ai pas eut de reponse non plus
    Citation Envoyé par qi130
    Par suite, l'utilisation "les yeux fermés" d'une commande qui semble répondre au besoin (souvent plus pressenti que parfaitement cerné) est une démarche inconsistante qui est source d'errances sur les forums.
    oui, je suis ok... j'ai compris.
    Citation Envoyé par qi130
    L'emploi de pconnect fait que la connexion reste active. Si cette connexion ne doit pas rester active, il faut soit la fermer (mais c'est hélas impossible), soit ne pas utiliser pconnect.
    c'est ce que j'avais compris de la doc, merci.
    Citation Envoyé par qi130
    Cela me parait d'une évidence sans limite, et ce n'est pas de tergiverser sur le nombre de connexions actives sur mon serveur MySQL qui fera avancer les choses.
    merci.
    Citation Envoyé par qi130
    D'autant que l'on se trouve sur le forum MySQL, ici, et que le problème tient plus de "la bonne compréhension des différentes façons de se connecter à MySQL dans un script PHP" ou encore "du bon usage des connect et pconnect dans un script PHP" (encore PHP!).


    J'estime donc nécéssaire que ce post soit clos puisque l'origine des process en sleep est identifié.
    Oui mais non, je te remercie, mais apres une telle lecon, j'aimerais bien que tu m'explique des trucs, car tu dois bien t'y connaitre.
    Alors je me permet de ré-iterer une question :
    a la fin du script php (ou autre), que se passe t'il ? combien de temps la connexion reste t'elle ouverte ? (car il semble qu'elle n'est pas infinie, ca je l'interprete d'apres ce que j'ai vu, mais tu ne m'en tiendra pas rigeur puisque nulle part dans la doc il n'en est fait question, et ni toi qui aime si bien me fustiger n'y fait mention)
    donc à la cloture de la connexion (deja combien de temps ? est-ce que ca se regle quelques part ?) que se passe t'il ? est-ce qu'il y a une nouvelle connexion de crée (je ne sais pas, c'est juste uen question).

    Si je pose ces questions, c'est pas pour qu'on me dise pour la 10eme fois que OUI le pconnect fait des connexion persistante, merci, j'ai bien compris.
    et que oui, la doc il faut la lire. (mais je dois être trop stupide, il y a des trucs que j'ai pas forcement compris dedans).



    Citation Envoyé par qi130
    Et je passe sous silence l'impression vehiculée par
    "et ?...
    que dois-je en deduire ? y a t'il un rapport ?
    ben pareil, j'ai un peu l'impression d'avoir été pris pour un idiot. (je n'ai fait que repondre, et ton dernier post n'est pas mal non plus... ("Tu lis comme moi"/"zéro pointé"/"par respect"/"évidence sans limite"....... tres sympatique)
    être un veterant sur un site, n'empeche pas de la retenue et ne pas renvoyer ceux qui posent des questions et qui pour tout n'est pas trivial. si c'est trop dur, il vaut mieux s'abstenir, jeune homme on est tous debutant dans quelque chose.

    en prendre plein la gueule par nu type qui reponds aux question, je veux bien et je fermerai ma gueule si j'avais eut toutes les reponses... mais si c'est juste pour reciter php.net, avec les commentaire sympathique juste pour me rabaisser, merci bien


    PS : quand je dis que je pense qu'une connexion (==processus??) pconnect n'a pas une dure de vie infinie c'est parceque la machine a un uptime de 2 semaines, et mon plus gros processus à une duré de vie de l'ordre de 10500 secondes... (en gros : 2 heures quoi).

  9. #9
    Membre actif
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Points : 207
    Points
    207
    Par défaut
    Citation Envoyé par Alexandre T
    mysql_pconnect crée une connexion persisitante. Donc quand le script php se termine la connexion est toujours active.

    Néanmoins, je t'invite à toujours fermer tes connexions avec un mysql_close car tu peux libérer des connxions....
    Merci pour le conseil.
    Mais j'ai encore une question (je suis un peu chiant?), dans la doc ils disent que "mysql_close() ne terminera pas une connexion persistante établie par mysql_pconnect()", avec quoi faut'il la fermer (j'ai pas trouvé de mysql_pclose() ) ?

    bonne soirée.

  10. #10
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Citation Envoyé par hpfx
    dans la doc ils disent que "mysql_close() ne terminera pas une connexion persistante établie par mysql_pconnect()", avec quoi faut'il la fermer (j'ai pas trouvé de mysql_pclose() ) ?

    bonne soirée.
    Tiens je n'avais jamais remarqué cela ! Je vais me renseigné, je suis surpris !
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  11. #11
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Salut,

    Un certain nombre de posts sur ce forum (malheureusement je crois qu'ils ont été effacés ) faisaient état de problèmes de saturation du serveur liés à l'utilisation de connexions persistantes. Ca rejoint indirectement ta question de départ (pourquoi tant de process idle ?)

    On peut trouver un élément de réponse dans les user comments du manuel PHP sur mysql_pconnect, ainsi que sur cette page :

    Normally you do NOT want to use mysql_pconnect. This function is designed for environments which have a high overhead to connecting to the database. In a typical MySQL / Apache / PHP environment, Apache will create many child processes which lie in idle waiting for a web request to be assigned to them. Each of these child processes will open and hold its own MySQL connection. So if you have a MySQL server which has a limit of 50 connections, but Apache keeps more than 50 child processes running, each of these child processes can hold a connection to your MySQL server, even while they are idle (idle httpd child processes don't lend their MySQL connection to other httpd children, they hold their own). So even if you only have a few pages which actually connect to MySQL on a busy site, you can run out of connections, with all of them not actually being used.

    In general use mysql_connect() for connecting to MySQL unless that connection takes a long time to establish.
    Pour résumer, donc :

    If anyone ever wonders why the number of idle db process (open connections) seems to grow even though you are using persistent connections, here's why:

    "You are probably using a multi-process web server such as Apache. Since
    database connections cannot be shared among different processes a new
    one is created if the request happen to come to a different web server
    child process."
    Personnellement, j'éviterais d'utiliser mysql_pconnect à moins d'avoir un délai d'ouverture d'une nouvelle connexion (overhead) au serveur MySQL très élevé.

    J'espère t'avoir éclairé sur le problème...
    Pensez au bouton

  12. #12
    Membre actif
    Inscrit en
    Septembre 2003
    Messages
    391
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 391
    Points : 207
    Points
    207
    Par défaut
    Citation Envoyé par Maximilian
    Salut,

    Un certain nombre de posts sur ce forum (malheureusement je crois qu'ils ont été effacés ) faisaient état de problèmes de saturation du serveur liés à l'utilisation de connexions persistantes.
    Oui j'ai dejà vu que des posts etaient effacé (trouvé depuis google par exemple).
    j'avais fait une recherche et je crois que j'avais trouvé que 1 ou 2 posts sur le sujet "show processlist" je crois. (je n'avais pas pensé a ce moment au pconnect)
    Citation Envoyé par Maximilian
    Pour résumer, donc :

    If anyone ever wonders why the number of idle db process (open connections) seems to grow even though you are using persistent connections, here's why:

    "You are probably using a multi-process web server such as Apache. Since
    database connections cannot be shared among different processes a new
    one is created if the request happen to come to a different web server
    child process."
    Personnellement, j'éviterais d'utiliser mysql_pconnect à moins d'avoir un délai d'ouverture d'une nouvelle connexion (overhead) au serveur MySQL très élevé.

    J'espère t'avoir éclairé sur le problème...
    Tres interressant !
    merci pour cette info.
    je vais mettre resolu, je pense avoir fait le tour de la question.
    merci a vous tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/04/2013, 16h04
  2. [C#] Configuration du niveau de priorite des processus
    Par stephdiplo150 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 23/04/2007, 00h29
  3. lancer des processus
    Par dylan dans le forum Général Python
    Réponses: 2
    Dernier message: 10/06/2004, 15h02
  4. [langage] fonctionnement des Processus
    Par GMI3 dans le forum Langage
    Réponses: 3
    Dernier message: 19/09/2003, 12h12
  5. Réponses: 2
    Dernier message: 04/10/2002, 10h13

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