J'ai un serveur où de nombreux utilisateurs vont s'y connecter et utiliser une base de données là-bas, et j'utilise MySQL. Je sais que le nombre par défaut de max_connections
dans MySQL est 100 ou 150, mais je suis certain que j'ai besoin de dépasser ce nombre. J'ai donc utilisé les éléments suivants pour augmenter le nombre:
SET global max_connections = 1000000
Maintenant, j'essaie de vérifier le max_connections
comme suit:
show variables like 'max_connections'
Cela me donne:
max_connections; 100000;
Ce qui est un signe qu'il a réussi (à moins que je ne le comprenne mal). Lorsque mes utilisateurs commencent à se connecter, le serveur reçoit une erreur lorsque le nombre d'utilisateurs connectés dépasse 110. L'erreur est la suivante:
erreur de connexion: le délai a expiré. Le délai d'attente s'est écoulé avant pour obtenir une connexion de la piscine. Cela peut avoir eu lieu parce que toutes les connexions en pool étaient utilisées et que la taille maximale du pool était de atteint.
Pourquoi cette erreur me concerne-t-elle et comment y remédier?
max_connections
Vous pouvez changer max_connections
pendant que MySQL est exécuté via SET
:
mysql> SET GLOBAL max_connections = 5000;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE "max_connections";
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 5000 |
+-----------------+-------+
1 row in set (0.00 sec)
timeout
liéJe n'avais jamais vu votre message d'erreur auparavant, alors j'ai googlé. vous utilisez probablement Connector/Net. Connector/Net Manual indique que la taille maximale du pool de connexions est atteinte. (la valeur par défaut est 100) voir le tableau 22.21.
Je vous suggère d'augmenter cette valeur à 100k ou de désactiver le regroupement de connexions Pooling=false
il a deux questions.
Q1 - Que se passe-t-il si je désactive le pooling Ralentit la connexion à la base de données. connection pooling
est un mécanisme qui utilise une connexion à la base de données déjà établie. Le coût de l'établissement d'une nouvelle connexion est élevé. http://en.wikipedia.org/wiki/Connection_pool
Q2 - La valeur du pooling peut-elle être augmentée ou le maximum est 100?
vous pouvez augmenter mais je suis sûr quelle est la valeur MAX, peut-être max_connections
dans my.cnf
Ma suggestion est de ne pas désactiver le pooling, augmenter la valeur de 100 jusqu'à ce qu'il n'y ait plus d'erreur de connexion.
Si vous avez un outil de test de stress comme JMeter
, vous pouvez vous tester.
Vous pouvez définir le nombre maximal de connexions à l'aide de:
set global max_connections = '1 < your number > 100000';
Cela va définir votre nombre de connexions mysql uni