Ubuntu: 12.04 LTS (Linux mysql02 3.2.0-40-generic # 64-Ubuntu SMP Lun Mar 25 21:22:10 UTC 2013 x86_64 x86_64 x86_64 GNU / Linux)
MySQL: distribución de Ubuntu 5.5.31
Apparmor: ¡ ELIMINADO !
El servidor lleva más de un año funcionando como una roca sólida. Entonces este lunes MySQL comenzó a fallar. Una actualización ha causado el problema y no podemos resolver qué es. Incluso hemos tratado de volver a MySQL 5.5.30 pero sin suerte. Regresamos a las 5.5.31.
Entradas de registro de errores de MySQL:
130430 7:55:46 [ERROR] Error in accept: Too many open files
130430 7:55:46 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/fclvod.frm' (errno: 24)
130430 7:55:46 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/fcnote.frm' (errno: 24)
130430 7:55:47 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/ffcont.frm' (errno: 24)
130430 7:55:47 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/ffcontv.frm' (errno: 24)
130430 7:55:47 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/ffnote.frm' (errno: 24)
130430 7:55:47 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/frcfcl.frm' (errno: 24)
Parece que nos encontramos con un problema ulimit. Hemos eliminado APPARMOR por completo. Hemos aumentado /etc/security/limits.conf y aún no hemos tenido suerte:
# Out of desperation....
* soft nofile 49152
* hard nofile 65536
# No effect!?!!?
#mysql soft nofile 49152
#mysql hard nofile 65536
Y para mostrar los límites.conf está funcionando:
root@mysql02:/etc/security# ulimit -Sa | grep "open files"
open files (-n) 49152
root@mysql02:/etc/security# ulimit -Ha | grep "open files"
open files (-n) 65536
Y aquí están las entradas importantes en my.cnf
[mysqld_safe]
open_files_limit = 16384
[mysqld]
open_files_limit = 16384
Sin embargo:
root@mysql02:/etc/mysql# mysqladmin -u root -pThePassword variables| grep open_files_limit
open_files_limit | 1024
Estamos totalmente perplejos y deprimidos. Cualquier ayuda sería muy apreciada.
Respuestas:
SO: implementaciones de Ubuntu (Debian)
Opción de servidor MySQL: open-files-limit
Parece que el upstart de Debian no usa los parámetros definidos en /etc/security/limits.conf , por lo que cuando ejecuta mysql a través del comando de servicio (y, por lo tanto, en el arranque), anula esos límites definidos y usa el valor 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 previo al inicio :
Referencias
fuente
Tuve el mismo problema en Ubuntu 15.10.
https://bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1434758 - trajo la solución:
(en mi caso) si no, cree /lib/systemd/system/mysql.service y copie el contenido de este archivo https://bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1434758/ comentarios / 11 y agregue las dos líneas en algún lugar del archivo
si existe uno o ambos archivos, verifique si se incluyen estas dos líneas:
systemctl daemon-reload
... y todo debería estar bien.
fuente
Como ninguno de los anteriores solucionó el problema para mí (solo hace que el sistema se quede sin memoria), aquí está la solución que encontré:
En
/etc/mysql/my.conf
necesita aumentar MySQL internos open_files_limit. Agregue temporalmente esto a la configuración y reinicie MySQL.sudo /etc/init.d/mysql restart
Después de ejecutar la operación que le da el error de demasiados archivos abiertos , puede cambiar su configuración a sus valores predeterminados y reiniciar MySQL nuevamente.
fuente
Gracias por la solución. Pero para mí, el asunto ha sido eclipsado por los otros dos hechos.
Después de solucionar el problema de InnoDB, todavía escupía
Tuve que iniciar mysqld en la consola raíz y reiniciar manualmente
Luego, el servidor comenzó a mostrar bases de datos, pero no pudo acceder a algunas de las tablas. Su solución con mayores límites solucionó el resto de los problemas, ¡gracias!
fuente