web-dev-qa-db-fra.com

Comment définir max_connections dans MySQL par programme

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?

30
antf

Comment changer 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)

À l'OP

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

MIS À JOUR

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.

48
Jason Heo

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

1
Sumit Kumar Gupta