Changer open-files-limit dans mysql 5.5


9

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é des problèmes en raison de la limite de 1024, et en fait la limite principale du système a été fixée à 1024, j'ai donc 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 ulimit pour root et même pour l'utilisateur mysql, les deux ont renvoyé la nouvelle valeur: 32000, donc je suppose que le changement a déjà été fait.

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

open-files-limit    = 24000

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

Avez-vous des idées sur la raison pour laquelle cela ne fonctionne pas et comment le résoudre de manière normale (le lancer via le service ...)?

Réponses:


9

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 de service (et donc, sous upstart), il remplace ces limites définies et utilise la valeur par défaut 1024.

La solution consiste à modifier le fichier mysql.conf qui définit le service upstart, il se trouve dans /etc/init/mysql.conf et ajoute les lignes suivantes avant le bloc de pré-démarrage:

# 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 souple, 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 à chaque service parvenu qui 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 soit.


1
Beau travail là-bas!
pkhamre

Cela a fait l'affaire ... l'homme qui était une douleur
Chad Scira
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.