mysql réglage automatique des valeurs de connexions max


11

J'ai défini des connexions maximales à environ 2000 dans le fichier my.cnf.

max_connections=2048

J'ai mis à niveau vers 5.5.20 et maintenant je vois la ligne suivante dans le journal des erreurs.

120201 19:40:24 [Warning] Changed limits: max_open_files: 1024  max_connections: 214  table_cache: 400

Pourquoi mysql a-t-il changé la valeur de connexions maximales à 214?

# mysqladmin variables | grep max_connections
| max_connections | 214                                               

Les fichiers ouverts mous et durs limités par le système d'exploitation sont 1024

# ulimit -Sa | grep "open files"
open files                      (-n) 1024

# ulimit -Ha | grep "open files"
open files                      (-n) 1024

Le nombre de connexions max réellement utilisées:

# mysql -e"show status like '%used_connections%'"
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Max_used_connections | 95     |
+----------------------+-------+

1
Essayez de définir les fichiers ouverts ulimit plus haut, comme 4096.ulimit -n 4096

Le comportement a-t-il changé? J'avais la version 5.0.77 et je n'ai pas remarqué ce problème. Ce n'est que lorsque je suis passé à 5.5.20 que j'ai changé les valeurs!
shantanuo

1
Je vais juste demander l'évidence. Avez-vous confirmé que la mise à niveau n'a pas changé votre my.cnf? Et quel OS? A-t-il été installé par un gestionnaire de packages tel que yum? Si oui, quel paquet?
Derek Downey

Réponses:


6

Cela me semble OK. Vous ne pouvez pas avoir max_connections plus grand que cela, car votre open_files_limit est trop faible. Pour chaque connexion, MySQL ouvre plusieurs fichiers. Jetez un oeil ici .

Ainsi, vous devrez augmenter la limite de fichiers ouverts sur votre système d'exploitation, et ensuite, vous pouvez mettre une valeur max_connections plus élevée.


5

Cela semble être le même problème auquel j'ai répondu dans stackoverflow ici , bien que j'utilisais CentOS 7 et MySQL 5.6.26

Vous devez augmenter votre limite de fichiers ouverts à la fois pour l'utilisateur mysql (dans limits.conf) et pour le service mysql (dans le fichier mysql.service)

ajoutez ces deux lignes à /etc/security/limits.conf

mysql hard nofile 65535
mysql soft nofile 65535

ajoutez cette ligne à /usr/lib/systemd/system/mysqld.service (dans la section [service])

LimitNOFILE=65535

puis redémarrez enfin et vérifiez que ces messages d'erreur ont disparu de votre journal des erreurs mysql.



@Nav - Oui, vous ne pouvez pas utiliser le nombre maximal de connexions configurées si votre système d'exploitation n'autorise pas le nombre approprié de descripteurs de fichiers à être utilisé par mysqld
MNB

De plus, Ubuntu 15.04+ a besoin d'une approche différente: stackoverflow.com/questions/23977095/…
Nav

0

Cela semble être un bug dans le nouveau mysqld. J'ai eu le même problème. La définition de max_connections sur 700 a fonctionné, mais si je l'ai définie sur 900, elle a été réinitialisée à 214 lors du démarrage. S'il s'agissait d'un changement intentionnel, il l'aurait abaissé à 700 ou quelque chose de similaire, la valeur 214 n'a pas de sens.
Quoi qu'il en soit, l'augmentation de la limite des descripteurs avec ulimit -n résout le problème.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.