Quand je vérifiais le temps de charge MySQL sur le site. J'ai eu des résultats montrant des connexions comme time_wait. Même si je ferme la connexion sur chaque page. Parfois, le site ne charge pas de dire trop de connexions. Quelle pourrait être une solution à ce problème? P>
Merci d'avance pour toutes les réponses ou suggestions p>
3 Réponses :
Comme @zimbabao suggéré dans le commentaire, déboguer votre code pour toutes les erreurs potentielles pouvant arrêter l'exécution de la fermeture de la connexion MySQL.
Si rien ne fonctionne, vérifiez votre my.cnf pour une variable système appelée c'est le nombre de secondes que le serveur attend l'activité sur une connexion non interactive avant de la clôtrer. Des informations supplémentaires peuvent être trouvées http: // dev. mysql.com/doc/refman/5.0/fr/server-system-variables.html#ssysvar_wait_timeout p> Ajustez la figure 3600 (1 heure) à vos besoins. P> HTH P> P> wait_timeout code>. Si ce n'est pas présent, ajoutez-le à la section [mysqld] code> et redémarrez votre serveur mysql. P>
J'avais essayé de vérifier en mettant la condition PHP si (mysql_close ($ Conn)) écho "Connexion fermée"; ?> Il imprime "connexion fermée". Existe-t-il une connexion explicite étroite dans PHP pour fermer la connexion DB?
Si vous obtenez beaucoup de connexions Time_WAIT sur le serveur MySQL, cela signifie que MySQL Server ferme la connexion. Le cas le plus probable dans ce cas serait qu'un hôte ou plusieurs hôtes ont été sur une liste de blocs. Vous pouvez effacer cela en exécutant
telnet mysqlserver 3306 Trying 192.168.1.102... Connected to mysqlserver. Escape character is '^]'. sHost 'clienthost.local' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'Connection closed by foreign host.
Si un client se connecte à un serveur MySQL, il ouvre généralement un port local, exemple: si le client ferme la connexion, le client obtient un temps_wait. En raison de la routage TCP, un paquet peut arriver en retard sur le port temporaire. Une connexion dans Time_Wait ne fait que rejette ces paquets. Sans un temps_frique, le port local peut être réutilisé pour une autre connexion et peut recevoir des paquets d'une autre connexion. P> sur une application haute fréquente sur le Web qui ouvre une connexion MySQL par demande, une quantité élevée de Les connexions time_wait sont attendues. Il n'y a rien de mal à cela. P> problèmes peut se produire si votre plage de ports locale est trop faible, vous ne pouvez plus ouvrir de plus les connexions sortantes. Le délai d'attente habituel est défini à 60 secondes. Donc, un problème peut déjà se produire sur plus de 400 demandes par seconde sur des gammes basses. P> Pour vérifier la quantité de délai_wait, vous pouvez utiliser La commande suivante: p> la valeur après "TW", dans ce cas 33365, montre la quantité de délai_wait. P> Solutions: p> a. TIME_WAIT TUNING (EXEMPLES OS BASE LINUX): P> Réduire le délai d'attente pour TIME_WAIT: P> # check, what you highest listening ports are, before setting this
echo 15000 65000 > /proc/sys/net/ipv4/ip_local_port_range
Si le client ferme la connexion, vous obtenez un Time_Wait. I> qui vous fait référence dans cette déclaration? Et si cela fait référence à «mysqlserver», cette instruction est incorrecte.
Doit être une fuite de connexion dans un chemin d'écoulement ou peut être des erreurs de lancer PHP avant que MySQL_Close ne soit appelée. Si vous utilisez mod_php, envisagez des connexions persistantes PHP.net/manual/fr/function. mysql-pconnect.php
Sa requête simple sélectionnée et j'utilise des fonctions MySQL_Connect () et MySQL_Close (). Je suppose que les connexions persistantes créent des problèmes, ils restent parfois en mode veille même lorsqu'ils sont fermés