9 votes

Modification de la limite d'ouverture des fichiers dans mysql 5.5

J'ai un problème avec mysql 5.5 fonctionnant sur Ubuntu 12.04 avec le paramètre open-files-limit.

J'ai récemment remarqué quelques problèmes dus à la limite de 1024, et en fait la limite du système principal était fixée à 1024, donc j'ai modifié /etc/security/limits.conf avec ce qui suit :

* soft nofile 32000
* hard nofile 32000
root soft nofile 32000
root hard nofile 32000

Après cela, je vérifie la valeur de ulimit pour root et même pour l'utilisateur mysql, les deux retournent la nouvelle valeur : 32000, donc je suppose que le changement a déjà été fait.

J'ai également modifié la valeur du fichier my.cnf, en fixant open-files-limit à 24000, comme ceci :

open-files-limit    = 24000

Maintenant vient la partie étrange, quand je redémarre le service mysql et vérifie la variable open_files_limit, il retourne qu'elle est toujours fixée à 1024, donc j'ai les mêmes problèmes qu'avant (évidemment), j'ai essayé d'utiliser open-files-limit au lieu de open_files_limit dans le fichier de configuration my.cnf, même résultat, MAIS si je surcharge la commande de service pour démarrer le service et démarrer seulement en utilisant mysqld (pas de paramètres supplémentaires), le service démarre et quand je vérifie le paramètre, il retourne 32000... Je ne sais pas où il prend cette valeur, car elle n'est pas définie dans my.cnf et elle n'est pas donnée par la ligne de commande, du moins, pas pour moi.

Avez-vous une idée de la raison pour laquelle la modification ne fonctionne pas et comment résoudre le problème de manière normale (en le lançant par le service...) ?

9voto

davidv Points 106

J'ai finalement trouvé le problème, il semble que upstart n'utilise pas les paramètres définis dans /etc/security/limits.conf, donc quand je lance mysql via la commande service (et donc, sous upstart), il passe outre ces limites définies et utilise les 1024 par défaut.

La solution est de modifier le fichier mysql.conf qui définit le service upstart, il est situé à /etc/init/mysql.conf et d'ajouter les lignes suivantes avant le bloc pre-start :

# NB: Upstart scripts do not respect
# /etc/security/limits.conf, so the open-file limits
# settings need to be applied here.
limit nofile 32000 32000
limit nproc 32000 32000

La première valeur définit la limite douce, l'autre, la limite dure, une fois ces lignes ajoutées, le service fonctionne comme prévu en appliquant les valeurs définies dans le fichier my.conf.

Cette limitation devrait s'appliquer pour chaque service upstart qu'il est défini dans /etc/init, donc si un service a le même problème avec la limite de fichiers ouverts, cette solution devrait fonctionner aussi.

1 votes

Beau travail !

0 votes

Ceci a fait l'affaire... c'était vraiment pénible...

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X