PHP / mySQL: comment déboguer une erreur «trop de connexions»?


8

Je travaille en ce moment avec le site Web PHP sur le serveur dédié de mon client et j'obtiens périodiquement une erreur too many connectionsmais ~ 5 utilisateurs parcourent cette page.

Dans phpMyAdminje peux voir que la max connectionsvariable est définie sur 400.

Sur notre serveur MySQL local dans ma société, nous avons max connectionsdéfini 200et d'autres partenaires utilisent en même temps ce serveur.

J'ai entendu dire que sur leur serveur, un autre site Web utilise le même MySQL avec un grand trafic.

Voici mes questions:

  • Comment déboguer ce problème?
  • Puis-je consulter une liste de requêtes SQL exécutées au cours des 10 dernières minutes pour vérifier s'il s'agit de notre problème ou du leur?

Réponses:


2

Les symptômes que vous décrivez indiquent des connexions persistantes. Dans certaines configurations, PHP ne gère pas très bien les connexions persistantes: il a tendance à ouvrir de nouvelles connexions plutôt qu'à réutiliser les connexions existantes. Je vous suggère de désactiver cette fonctionnalité et de voir si le problème persiste:

Si vous constatez une amélioration, vous pouvez essayer d'affiner les appels persistants ou de vous en débarrasser définitivement.


Je tire également sur cette affaire. Je ne peux pas du tout modifier leur configuration web / serveur pour faire ces changements (mon site web ne l'utilise persistent connectionsnulle part). Demain, je vais rencontrer leur homme et je leur demanderai de le faire.
hsz

Cela ne nécessite aucune modification de la configuration du serveur. Il vous suffirait de mettre à jour les scripts PHP pour l'application.
Michael Mior

Bien sûr, mais je n'ai pas accès à la deuxième page Web qui utilise également le même serveur MySql - je ne peux donc pas mettre à jour leur script PHP qui peut utiliser mysql_pconnect. phpinfo()me montre que `mysql.allow_persistent` l'est On. Changer ce drapeau Offne donnera aucun résultat - il devrait être modifié sur leur machine.
hsz

Ils ont changé mysql.allow_persistentpour Offet notre CMS accéléré et maintenant il n'y a aucun problème avec les connexions. Merci! Mais je me demande toujours comment vérifier quels scripts se connectaient avec le serveur MySql?
hsz

SHOW PROCESSLIST vous indique l'utilisateur, l'hôte, la base de données et (si vous êtes chanceux) la requête.
Álvaro González
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.