Tengo un sistema FreeBSD 8 que ejecuta ZFS, con un servidor MySQL 5.5 que tiene aproximadamente 355 GB y se proyecta que crezca a un par de Terabytes.
MySQL está activando errores sobre "Demasiados archivos abiertos" en /etc/hosts.allow. No lo utilizamos expresamente /etc/hosts.allow, pero lo utiliza hosts_access (3) ( libwrap.a), que es utilizado por muchas cosas.
mysqld[1234]: warning: /etc/hosts.allow, line 15: cannot open /etc/hosts.allow: Too many open files
Pero cuando verifico parece que no estoy alcanzando ningún límite real. El número de archivos abiertos reportados por kern.openfiles staysdebajo de 40,000 durante un período sostenido, y nuestro límite es sustancialmente mayor:
# sysctl -a |grep files
kern.maxfiles: 204800
kern.maxfilesperproc: 184320
kern.openfiles: 38191
# ulimit -n
184320
Los archivos abiertos deben establecerse en ilimitado:
# grep openfiles /etc/login.conf
:openfiles=unlimited:\
MySQL dice que debería poder abrir los identificadores de archivos 184320:
# mysqladmin variables | grep open_files_limit
| open_files_limit | 184320 |
Y cierta información desde la perspectiva del usuario de MySQL. Detuve mysql y pirateé /usr/local/etc/rc.d/mysql-serverpara imprimir estas variables, por lo que esto debería representar el entorno MySQL. Tenga en cuenta que el número 184320 es consistente con lo anterior.
# /usr/local/etc/rc.d/mysql-server.stefantest start
Starting mysql.
cpu time (seconds, -t) unlimited
file size (512-blocks, -f) unlimited
data seg size (kbytes, -d) 33554432
stack size (kbytes, -s) 524288
core file size (512-blocks, -c) unlimited
max memory size (kbytes, -m) unlimited
locked memory (kbytes, -l) unlimited
max user processes (-u) 5547
open files (-n) 184320
virtual mem size (kbytes, -v) unlimited
swap limit (kbytes, -w) unlimited
sbsize (bytes, -b) unlimited
pseudo-terminals (-p) unlimited
Y, para una fácil referencia, aquí están las descripciones de los sysctls:
kern.maxfiles: Maximum number of files
kern.openfiles: System-wide number of open files
kern.maxfilesperproc: Maximum files allowed open per process
Relacionado
- Esto posiblemente esté relacionado con una pregunta de ZFS sobre Nexenta en ServerFault: ¿Por qué MySQL no puede abrir hosts.allow / hosts.deny?
- También vea este problema similar en los foros de FreeBSD: [EMFILE] Demasiados archivos abiertos
ulimitel script de inicio o el entorno de shell, pero eso requeriría que interrumpa la base de datos.
cat limitsver con qué se ejecuta mysql. También puede cambiarlos sobre la marcha (con núcleos más nuevos): echo -n "Max open files=soft_value:hard_value" > /proc/$PID/limits(como raíz, por supuesto)
/procno está montado de forma predeterminada en FreeBSD, pero hágalo usted mismo sudo mount -t procfs proc /proc, consulte procfs(5)para obtener más información. Una vez que haya /procmontado, mire el /proc/$PID/rlimitarchivo