Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/01/2005, 15h24   #1
Membre actif
 
Inscription : septembre 2003
Messages : 374
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 374
Points : 150
Points : 150
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 )
hpfx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2005, 11h11   #2
Expert Confirmé Sénior
 
Avatar de qi130
 
Homme Pierre
Ingénieur qualité méthodes
Inscription : mars 2003
Messages : 3 726
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 3 726
Points : 4 739
Points : 4 739
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 :
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
qi130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2005, 12h25   #3
Membre actif
 
Inscription : septembre 2003
Messages : 374
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 374
Points : 150
Points : 150
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)
hpfx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2005, 12h33   #4
Expert Confirmé Sénior
 
Avatar de qi130
 
Homme Pierre
Ingénieur qualité méthodes
Inscription : mars 2003
Messages : 3 726
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 3 726
Points : 4 739
Points : 4 739
Citation:
Envoyé par hpfx
J'utilise des pconnect justement
Tu utilises ça ?ou encore cà 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
qi130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2005, 21h03   #5
Membre actif
 
Inscription : septembre 2003
Messages : 374
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 374
Points : 150
Points : 150
Citation:
Envoyé par qi130
ou encore cà
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.
hpfx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2005, 22h50   #6
Expert Confirmé Sénior
 
Avatar de qi130
 
Homme Pierre
Ingénieur qualité méthodes
Inscription : mars 2003
Messages : 3 726
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 3 726
Points : 4 739
Points : 4 739
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
Citation:
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
qi130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2005, 19h15   #7
Membre Expert
 
Avatar de Alexandre T
 
Inscription : mai 2002
Messages : 1 022
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : mai 2002
Messages : 1 022
Points : 1 123
Points : 1 123
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 T.

PHP5/MySQL5 Codes prêts à l'emploi
30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc...

Mes articles
Alexandre T est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2005, 21h35   #8
Membre actif
 
Inscription : septembre 2003
Messages : 374
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 374
Points : 150
Points : 150
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).
hpfx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2005, 21h52   #9
Membre actif
 
Inscription : septembre 2003
Messages : 374
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 374
Points : 150
Points : 150
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.
hpfx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2005, 18h03   #10
Membre Expert
 
Avatar de Alexandre T
 
Inscription : mai 2002
Messages : 1 022
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : mai 2002
Messages : 1 022
Points : 1 123
Points : 1 123
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 T.

PHP5/MySQL5 Codes prêts à l'emploi
30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc...

Mes articles
Alexandre T est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2005, 18h58   #11
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
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 :

Citation:
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 :

Citation:
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
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2005, 20h28   #12
Membre actif
 
Inscription : septembre 2003
Messages : 374
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 374
Points : 150
Points : 150
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 :

Citation:
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.
hpfx est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h53.


 
 
 
 
Partenaires

Hébergement Web