Trop de connexions TIME_WAIT
Nous avons une assez occupé site web (1 million de pages vues/jour) à l'aide d'Apache mod proxy qui ne cesse de devenir surchargé avec des connexions (>1 000) dans l'état TIME_WAIT. Les connexions sont pour le port 3306 (mysql), mais mysql ne montre que quelques connexions (afficher la liste des processus) et fonctionne très bien.
Nous avons essayé de changer un tas de choses (keep alive on/off), mais rien ne semble aider. Toutes les autres ressources du système sont dans la fourchette raisonnable.
J'ai cherché partout, ce qui semble indiquer la modification de la tcp_time_wait_interval. Mais cela semble un peu radical. J'ai travaillé sur occupation du site avant, mais n'a jamais eu ce problème.
Des suggestions?
Vous devez vous connecter pour publier un commentaire.
Chaque time_wait de connexion est une connexion qui a été fermé.
Vous êtes probablement de la connexion à mysql, l'émission d'une requête, puis de le déconnecter. Répétez l'opération pour chaque requête sur la page. Envisager l'utilisation d'un pool de connexion de l'outil, ou à tout le moins, une variable globale qui tient à votre connexion de base de données. Si vous utilisez un mondial, vous devrez fermer la connexion à la fin de la page. J'espère que vous avez un endroit commun, vous pouvez mettre que, comme un pied de page comprennent.
Comme un bonus, vous devez obtenir une plus rapide de chargement de la page. MySQL est rapide à se connecter, mais ne pas avoir à re-connecter est encore plus rapide.
Si vos clients sont des applications à l'aide de JDBC, vous risquez de vous frapper ce bug:
http://bugs.mysql.com/bug.php?id=56979
Je crois que php a le même problème
Cheers,
Gilles.
Nous avons eu un problème similaire, où nos serveurs web gelé parce que notre php a été l'établissement de connexions à un serveur mysql qui a été mis en place pour faire inverser hôte des recherches sur les connexions entrantes.
Quand les choses ont été lents il a bien fonctionné, mais sous la charge de la responstimes tourné à travers le toit et tous les serveurs apache, est resté coincé dans time_wait.
La façon dont nous avons pensé que le problème était grâce à l'aide de xdebug pour créer de profilage de données sur les scripts sous forte charge, et en la regardant. le mysql_connect appels a pris 80 à 90% du temps d'exécution.