Cambiar el límite de archivos abiertos en mysql 5.5

9

Tengo un problema con mysql 5.5 que se ejecuta en Ubuntu 12.04 con el parámetro open-files-limit.

Recientemente noté algunos problemas debido al límite de 1024, y en realidad el límite del sistema principal se estableció en 1024, por lo que modifiqué /etc/security/limits.conf con lo siguiente:

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

Después de eso, verifico el valor de ulimit para root e incluso para el usuario mysql, ambos devolvieron el nuevo valor: 32000, por lo que supongo que el cambio ya se ha realizado.

También cambié el valor en el archivo my.cnf, estableciendo open-files-limit en 24000, de esta manera:

open-files-limit    = 24000

Ahora viene la parte extraña, cuando reinicio el servicio mysql y compruebo la variable open_files_limit, devuelve que todavía está configurado en 1024, por lo que tengo los mismos problemas que antes (obviamente), intenté usar open-files-limit en su lugar, open_files_limit en el archivo de configuración my.cnf, el mismo resultado, PERO si anulo el comando de servicio para iniciar el servicio y empiezo solo con mysqld (sin parámetros adicionales), el servicio se inicia y cuando verifico el parámetro devuelve 32000 ... No sé de dónde está tomando ese valor, ya que no está configurado en my.cnf y no se da a través de la línea de comandos, al menos, no para mí.

¿Alguna idea sobre por qué no funciona el cambio y cómo resolverlo de la manera normal (lanzarlo a través del servicio ...)?

davidv
fuente

Respuestas:

9

Finalmente encontré el problema, parece que upstart no usa los parámetros definidos en /etc/security/limits.conf, por lo que cuando ejecuto mysql a través del comando de servicio (y por lo tanto, en upstart), anula esos límites y usos definidos el predeterminado 1024.

La solución es modificar el archivo mysql.conf que define el servicio de inicio, se encuentra en /etc/init/mysql.conf y agrega las siguientes líneas antes del bloque de preinicio:

# 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

El primer valor define el límite flexible, el otro, el límite rígido, una vez agregadas esas líneas, el servicio funciona como se espera aplicando los valores definidos en el archivo my.conf.

Esta limitación debería aplicarse a cada servicio inicial que se define en / etc / init, por lo que si algún servicio tiene el mismo problema con el límite de archivos abiertos, esta solución debería funcionar.

davidv
fuente
1
Buen trabajo allí!
pkhamre
Esto hizo el truco ... hombre que fue un dolor
Chad Scira