|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : décembre 2008 Messages : 24 ![]() |
Bonjour,
Je possède un site qui peut être relativement visité à certaines heures de la journée (~1000 visiteurs simultanés). Lorsque le site atteint à peine ~200 visiteurs simu, il commence à ramer et à afficher des erreurs internes à foison. Ces erreurs 500 sont des exceptions lancées : Too many connections. La connexion qui foire est celle distante que je fais à mon serveur dédié (j'ai testé avec la même DB en local et tout fonctionne, pas d'erreur, donc j'en déduis que cette connexion qui foire. J'ai une seconde connexion qui est directement faite sur le site en local. Pas de soucis avec celle-ci). Cependant, le nombre max de connexion est à 350 dans le my.cnf de mon MySQL. J'ai fais différents tests, que ce soit avec PDO ou MySQLi : Code :
Pour vous donner une petite idée de l'architecture du serveur : http://www.ovh.com/fr/produits/eg_best_of.xml Un serveur de jeu tourne aussi sur le serveur. C'est la base de données de ce serveur que j'essaye d'atteindre. PHP 5.3 (testé sous PHP 5.2.3 aussi : même résultat). Auriez-vous une idée du pourquoi du comment je n'arrive pas à me défaire de ces erreurs de connexion malgré la configuration plus que correcte ? Petite précision, lorsque je tape SHOW PROCESSLIST, je n'ai qu'une dizaine de processus... Je vous remercie ! |
||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
c'est inutile de faire $pdo = null à la fin du script,
au niveau de mysqli il faut faire un mysqli_kill + mysqli_close
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : décembre 2008 Messages : 24 ![]() |
Ce n'était qu'un test avec mysqli.
En production j'utilise uniquement PDO. |
|
|
00
|
|
|
#4 |
![]() ![]() Développeur Web Inscription : décembre 2006 Messages : 2 335 ![]() |
Salut,
tu peux éviter de créer plusieurs connexions mysql, en adoptant des patterns qui permettent d'avoir une seul connexion pour tous les utilisateurs(un singleton par exemple).
__________________
Développeur | Zend Certified Engineer Étapes Pour mieux se servir du forum: 1. Commencez par lire les cours et tutoriels ; 2. Faites une recherche; 3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles; Nix>_Rien n'est plus pratique que la théorie |
|
|
01
|
|
|
#5 |
|
Invité de passage
![]() Inscription : décembre 2008 Messages : 24 ![]() |
J'utilise déjà un Singleton pour ma classe DataBase.
Comment peut-on enregistrer la connexion pour qu'elle soit réutilisée entre deux utilisateurs ? La classe PHP est bien censé être détruite à la fin de l'exécution du script ?! |
|
|
00
|
|
|
#6 |
![]() ![]() Développeur Web Inscription : décembre 2006 Messages : 2 335 ![]() |
Peut-on voir ta classe PHP ? Le mécanisme de cache fichier statique réduit également les connexions à la base de données.
__________________
Développeur | Zend Certified Engineer Étapes Pour mieux se servir du forum: 1. Commencez par lire les cours et tutoriels ; 2. Faites une recherche; 3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles; Nix>_Rien n'est plus pratique que la théorie |
|
|
00
|
|
|
#7 | ||
|
Expert Confirmé
![]() Olivier Développeur Web Inscription : août 2003 Messages : 1 837 ![]() |
Citation:
Note tout de même que 350 connexion mysql simultané sur ton type de serveur n'est pas énorme. Avec la quantité de ram que tu as tu dois pouvoir doublé ce chiffre sans aucun problème. Cf doc mysql : Citation:
|
||
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : décembre 2008 Messages : 24 ![]() |
Je veux bien, mais lorsque j'ai des erreurs Too many connections, je n'ai qu'à peine 5 ou 6 connexions sur l'utilisateur distant.
Je mettrais ma classe ce soir, là je ne peux pas. Je me suis aperçu que le problème pouvait venir du mutualisé, j'ai mis le script sur un serveur dédié ou en local, et je n'ai aucun soucis. Changement de position donc, ce sont les serveurs mutualisés qui buggent, mais d'où pourrait venir ce problème ? Note: je dis les serveurs mutualisés, car j'ai testé sur 1&1 et OVH et le problème est le même. |
|
|
00
|
|
|
#9 | ||
|
Invité de passage
![]() Inscription : décembre 2008 Messages : 24 ![]() |
Voici le script de ma base de données, comme promis, fait de tête car je ne pourrais pas l'avoir sous la main avant très certainement après demain :
Code :
|
||
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() Inscription : septembre 2002 Messages : 63 ![]() |
Bonjour,
Je sais que ce post a quelques mois déjà, mais je suis en train de me battre avec OVH pour un problème d'erreur MySQL Too many connections (1040). J'ai plusieurs sites chez OVH avec des erreurs aléatoires de ce type, alors qu'il n'y a qu'un seul visiteur. J'utilise Zend_Db pour accéder aux tables, donc normalement 1 seule connexion. J'ai testé sur une base de développement en mettant max_connections à 1 sans jamais avoir le problème. Avez-vous réussi à régler vote problème ? Cdt, Eric. |
|
|
00
|
|
|
#11 |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
c'est a toi de bien gérer ton appli, utilise les connexions persistantes et un système de cache
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#12 |
|
Membre du Club
![]() Inscription : septembre 2002 Messages : 63 ![]() |
Bonjour,
Merci de votre réponse. Comme indiqué, j'utilise le composant Zend_Db du Zend Framework qui est un singleton. J'ai fait l'essai sur une base de développement de configurer un serveur MySQL avec max_connections=1 sans jamais avoir le problème. J'ai aussi fait l'essai d'essayer d'ouvrir plusieurs connexions dans un même script php, ce qui est impossible avec la fonction mysql_connect si la base et l'utilisateur est le même à chaque connexion (voir doc mysql_connect). Autre chose qui me titille. Le message Too many connection (1040) est fait pour le paramètre max_connections. Pour le paramètre max_user_connections, il est différent : Code :
User eric already has more than 'max_user_connections' active connections
Enfin, c'est un phénomène très aléatoire, qui se produit alors qu'il n'y a qu'un seul visiteur; le problème dure alors entre 30s et 60s, me faisant plus penser à une charge ponctuelle du serveur en terme de nombre TOTAL de connections et non pas d'un problème applicatif. A titre indicatif, le dernier problème remonte à plusieurs jours, alors que le site est toujours opérationnel. Qu'en pensez vous ? Cdt, Eric. |
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() Baptiste ROUSSELÉtudiant Inscription : janvier 2011 Messages : 800 ![]() |
Serveur mutualisé... Et cela ne vous met pas la puce à l'oreille ? ^^
Il n'y a pas que le serveur web qui est mutualisé, mais aussi le sgbd... Donc c'est 350 connexions répartis sur l'ensemble des sites hébergés ! (et pas que les votres) Alors franchement 350 connexions s'il y a une dizaine de site je changerai directement de plateforme pour ma part.
__________________
|
|
|
10
|
Copyright © 2000-2012 - www.developpez.com