
Ubuntu:12.04 LTS (Linux mysql02 3.2.0-40-generic #64-Ubuntu SMP lunes 25 de marzo 21:22:10 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux)
MySQL:Distribución Ubuntu 5.5.31
Apariencia:¡REMOTO!
El servidor ha estado funcionando sólidamente durante más de un año. Luego, este lunes MySQL comenzó a fallar. Una actualización ha causado el problema y no podemos entender qué es. Incluso intentamos volver a MySQL 5.5.30 pero sin suerte. Regresamos a las 5.5.31.
Entradas del 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 de ulimit. Hemos eliminado APPARMOR por completo. Hemos aumentado el/etc/security/limits.confy todavía no hay suerte:
# Out of desperation....
* soft nofile 49152
* hard nofile 65536
# No effect!?!!?
#mysql soft nofile 49152
#mysql hard nofile 65536
Y para mostrar ellímites.confestá trabajando:
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 enmi.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.
Respuesta1
SO:Implementaciones de Ubuntu (Debian)
Opción de servidor MySQL:límite de archivos abiertos
Parece que Debianadvenedizono utiliza los parámetros definidos en/etc/security/limits.conf, entonces cuando inicias mysql a través delserviciocomando (y por lo tanto, en advenedizo), anula esos límites definidos y utiliza el valor predeterminado 1024.
La solución es modificar elmysql.confarchivo que define el servicio advenedizo, se encuentra en/etc/init/mysql.confy agrega las siguientes lineasanteselpre iniciobloquear:
# 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
Referencias:
Respuesta2
Tuve el mismo problema en Ubuntu 15.10.
https://bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1434758- trajo la solución:
- compruebe si /lib/systemd/system/mysql.service o /lib/systemd/system/mysqld.service existe
(en mi caso) si no, cree /lib/systemd/system/mysql.service y copie el contenido de este archivohttps://bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1434758/comments/11y agregue las dos líneas en algún lugar del archivo
LimitNOFILE=infinity LimitMEMLOCK=infinity
Si uno o ambos archivos existen, verifique si estas dos líneas están incluidas:
LimitNOFILE=infinity LimitMEMLOCK=infinity
- ejecutar
systemctl daemon-reload
... y todo debería estar bien.
Respuesta3
Como nada de lo anterior solucionó el problema (solo provocó que el sistema se quedara sin memoria), aquí está la solución que encontré:
Necesita /etc/mysql/my.conf
aumentar el open_files_limit interno de MySQL. Así que agregue esto temporalmente a la configuración y reinicie MySQL.
[mysqld]
open_files_limit = 100000
sudo /etc/init.d/mysql restart
Después de ejecutar la operación que le da lademasiados archivos abiertoserror, puede cambiar su configuración a su valor predeterminado y reiniciar MySQL nuevamente.
Respuesta4
Gracias por la solución. Pero para mí, la cuestión ha quedado eclipsada por los otros dos hechos.
- Mi directorio de datos es diferente de la instalación predeterminada. Por múltiples razones, tanto históricas como técnicas.
- Estaba actualizando desde una instalación muy antigua, que pasaba por varios puertos de avance y retroceso. En el primer inicio de MySQL 5.5 recién instalado, el motor InnoDB no se activó (la implementación interna estaba deshabilitada en el archivo de configuración, pero el complemento que estaba disponible en versiones anteriores no está presente en 5.5) y la marca de actualización se creó sin actualizar realmente. cualquier mesa.
Después de solucionar el problema de InnoDB, seguía escupiendo
mysql> SHOW DATABASES;
ERROR 1018 (HY000): Can't read dir of '.' (errno: 24)
Tuve que iniciar mysqld en la consola raíz y reiniciar manualmente
/usr/bin/mysql_upgrade --defaults-extra-file=/etc/mysql/debian.cnf --force
Luego, el servidor comenzó a mostrar bases de datos, pero no pudo acceder a algunas de las tablas. Su solución con límites aumentados solucionó el resto de los problemas, ¡gracias!