Bonjour,

Une erreur vient de survenir sur mon site "Erreur : SQLSTATE[08004] [1040] Too many connections" Je ne comprends pas ce qui se passe. Quelqu'un pour m'aider ?

12 réponses


C'est bizarre, une simple recherche de : Erreur : SQLSTATE[08004] [1040] Too many connections sur le web, permet de trouver la réponse.

Çan 'a rien de bizare, et il y a plusieurs réponses possiblee et puis je me suis dis oh un forum php pourrait sans doute m'aider.

Si tu avais fait la recherche et que tu avais regardé les réponses proposées, tu aurais créé le sujet dans MySQL et non dans PHP.
Bien que juste en regardant le début de l'erreur : ... SQLSTATE... ça se comprend.
Et puis le HELP en début du titre du sujet est en trop.
Bref.

Help en trop ? Comprends pas, poursuit s'il te plait...

Bonjour,
si vous avez accès a phpmyadmin, allez dans l'onglet variable et cherchez "max connections" et modifiez la valeur à 500 par exemple.
Voici la documentation.
Sinon par ligne de commande il faut taper ceci dans votre mysql

Set Global max_connections=500

Help en trop ? Comprends pas, poursuit s'il te plait...

Parce que certaines sections du forum, sont présentes pour demander de l'aide, dont celle-ci, il est donc totalement inutile de préciser dans le titre que l'on demande de l'aide.

Oui, mais le 'help' donnait un caractère urgent à ma question. Bref, le problème n'est plus sans que je modifie quoi que ce soit - je finis par me dire quej'ai peut-être eu plus de 150 connections d'un coup mais j'ai un doute - pas moyen de vérifier car site en ligne depuis hier et pas encore de stats - Merci TransientDev :-)

Oui, mais le 'help' donnait un caractère urgent à ma question.

Même, que ce soit urgent ou non, aucun sujet n'est traité en priorité par rapport aux autres, il est donc totalement inutile de mettre des termes du type : Help, Urgent, etc ... dans le titre d'un sujet.

Le sujet est intéressant.
Si le nombre de connections max est atteint c'est qu"il y a des connections ouvertes mais jamais fermées.
Normalement sur un site à trafic moyen, quelques connections suffisent. Pour info la limite chez ovh est de 30 (guide ovh), sur les vieux hébergements c'était 3 !!!
en PDO on peut utiliser un pool de connections en passant l'option PDO::PERSISTENT => true lors de l'instanciation de PDO.
avec mysqli il faut rajouter p: devant localhost, p:localhost
Mais de toutes façons il faut fermer ses connections
Pour vérifier, faire un test avec Apache bench (éviter ça chez un hébergeur)

ab -n500 -c10 http://monsite/mapage

ici on lance 500 requêtes par lot de 10

Merci Huggy, peux-tu me donner quelques précisions sur comment faire un test Apach ? Dois-je passer par mon terminal et me connecter en SSH ? Merci :-)

Apache benchmark est un outils lié au serveur Apache. Sous Windows on le trouve avec les binaires d'Apache : ab.exe.
Sous Linux il faut installer le package apache2-utils.
Via un terminal ssh, il suffit de taper la commande ci-dessus
Pas sûr qu'on puisse l'installer sur un mutualisé.