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     |
+----------------------+-------+
shantanuo
la source
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.

Aleksandar Vucetic
la source
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.

MNB
la source
L'autre solution est: dba.stackexchange.com/questions/32987/…
Nav
@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.

Bart K
la source