Bonne journée à tous. J'ai une erreur étrange. J'ai créé un chat qui fonctionne comme ceci:
Cela a bien fonctionné jusqu'à aujourd'hui quand j'ai eu cette erreur:
Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [1040] Too many connections' in /var/www/html/dbdev/include/Zend/Db/Adapter/Pdo/Abstract.php:129
Stack trace: #0 /var/www/html/dbdev/include/Zend/Db/Adapter/Pdo/Abstract.php(129): PDO->__construct('mysql:Host=loca...', '', '', Array)
s#1 /var/www/html/dbdev/include/Zend/Db/Adapter/Pdo/Mysql.php(96): Zend_Db_Adapter_Pdo_Abstract->_connect()
s#2 /var/www/html/dbdev/include/Zend/Db/Adapter/Abstract.php(448): Zend_Db_Adapter_Pdo_Mysql->_connect()
s#3 /var/www/html/dbdev/include/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('select profile_...', Array)
s#4 /var/www/html/dbdev/include/Zend/Db/Adapter/Abstract.php(782): Zend_Db_Adapter_Pdo_Abstract->query('select profile_...', Array)
s#5 /var/www/html/dbdev/include/Profile.php(43): Zend_Db_Adapter_Abstract->fetchPairs('select profile_...')
s#6 /var/www/html/dbdev/public_html/index.php(29): Profile->load()
s#7 {main} Next exception 'Zend_Db_Adapter_Exception' with in /var/www/html/dbdev/include/Zend/Db/Adapter/Pdo/Abstract.php on line 144
Le problème est que nous n'étions pas si nombreux ... (8) et je ne pense pas que la base de données ne puisse supporter plus de 8 à 16 connexions simultanément (les spécifications spécifient que le chat doit prendre en charge 50 à 100 utilisateurs; ... petit).
Alors ... tout le monde peut-il me dire pourquoi cela s’est produit (hier, nous avions 15 ans et nous avons bien fonctionné) et comment le résoudre? Merci de votre aide. Si vous avez besoin d'échantillons de code, n'hésitez pas.
Il y a un tas de raisons différentes pour l'erreur "Too Many Connections".
Consultez cette page FAQ sur MySQL.com: http://dev.mysql.com/doc/refman/5.5/fr/too-many-connections.html
Vérifiez votre fichier my.cnf pour "max_connections". S'il n'y en a pas, essayez:
[mysqld]
set-variable=max_connections=250
Cependant, la valeur par défaut est 151, vous devriez donc aller bien.
Si vous êtes sur un hôte partagé, il se peut que d'autres utilisateurs prennent trop de connexions.
L'utilisation de connexions persistantes et le manque d'espace disque constituent d'autres problèmes à surveiller.
L'erreur SQLSTATE[HY000] [1040] Too many connections
est une erreur SQL liée au serveur SQL. Il pourrait y avoir d'autres applications se connectant au serveur. Le serveur a un nombre maximal de connexions disponibles.
Si vous avez phpmyadmin, vous pouvez utiliser l'onglet "variables" pour vérifier quel est le paramètre.
Vous pouvez également interroger la table status de la manière suivante:
show status like '%onn%';
Ou un écart à ce sujet. vérifier le manuel pour quelles variables il y a
(sachez que 'connexions' n'est pas les connexions actuelles, vérifiez ce lien :))
Si vous atteignez la limite de connexion mac , Accédez à /etc/my.cnf
et dans la section [mysqld]
, ajoutez max_connections = 500
et redémarrez MySQL.
Veuillez vérifier si vous ouvrez une nouvelle connexion avec chacune de vos demandes (mysql_connect (...)). Si vous le faites, assurez-vous de fermer la connexion par la suite (en utilisant mysql_close ($ link)).
En outre, vous devriez envisager de modifier ce comportement, car le fait de conserver une connexion stable pour chaque utilisateur peut constituer un meilleur moyen d'accomplir votre tâche.
Si vous ne l'avez pas déjà fait, jetez un coup d'œil à cette source d'informations évidente mais néanmoins utile: http://php.net/manual/function.mysql-connect.php
Cela peut se produire en raison d'un nombre trop élevé de connexions en même temps ou de discussions en même temps. En outre, cela peut arriver à cause d'un trop grand nombre de sessions.
Le meilleur moyen de résoudre ce problème est de redémarrer MySQL.
service mysqld restart
ou
service mysql restart
ou
/etc/init.d/mysqld restart
Si vous devez augmenter le nombre de connexions MySQL sans redémarrer MySQL, procédez comme ci-dessous, également si vous ne connaissez pas le fichier de configuration, utilisez ci-dessous mysqlworkbench ou phpmyadmin ou la commande Invite pour s'exécuter sous les requêtes.
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+
1 row in set (0.00 sec)
mysql> SET GLOBAL max_connections = 250;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 250 |
+-----------------+-------+
1 row in set (0.00 sec)
Ces paramètres changeront lors du redémarrage de MySQL.
Pour les modifications permanentes, ajoutez la ligne ci-dessous dans my.cnf et redémarrez MySQL.
max_connections = 151