Si obtiene ERROR '...' not found (errno: 23)
,
Can't open file: ... (errno: 24)
, o cualquier
otro error con errno 23
o errno
24
de MySQL, significa que no tiene reservados
suficientes descriptores de archivo para el servidor MySQL.
Puede utilizar la utilidad perror para
obtener una descripción de lo que el número de error
significa:
shell> perror 23 Error code 23: File table overflow shell> perror 24 Error code 24: Too many open files shell> perror 11 Error code 11: Resource temporarily unavailable
El problema aquí es que mysqld está intentando mantener abiertos demasiados archivos de manera simultánea. Puede decirle a mysqld que no abra tantos archivos a la vez, o incrementar el número de descriptores disponibles para mysqld.
Para decirle a mysqld que mantenga abiertos
menos archivos de manera simultánea, puede hacer la cache de la
tabla mas pequeña reduciendo el valor de la variable de sistema
table_cache
(el valor por defecto es 64).
Reducir el valor de max_connections
también
reduce el número de archivos abiertos (el valor por defecto es
100).
Para cambiar el número de descriptores de archivo disponibles
para mysqld, puede utilizar la opción
--open-files-limit
para
mysqld_safe o (desde MySQL 3.23.30)
establecer la variable de sistema
open_files_limit
. Consulte
Sección 5.3.3, “Variables de sistema del servidor”. La manera más fácil
de establecer estos valores es añadir una opción a su archivo
de opciones. Consulte Sección 4.3.2, “Usar ficheros de opciones”. Si usted
dispone de una versión antigua de mysqld que
no soporta el establecimiento del límite de archivos abiertos,
puede editar el script mysqld_safe. Hay una
línea comentada en el script, ulimit -n 256.
Puede eliminar el carácter '#
' para
descomentar esta línea, y cambiar el número
256
para establecer el número de
descriptores de archivos que serán puestos a disposición de
mysqld.
--open-files-limit
y
ulimit pueden incrementar el número de
descriptores de archivo, pero sólo hasta el límite impuesto
por el sistema operativo. Hay también un límite impuesto que
puede ser sobreseido sólo si inicia
mysqld_safe o mysqld como
root
(simplemente recuerde que necesita
iniciar el servidor con la opción --user
en
este caso para que no continue ejecutándose como
root
tras el inicio). Si usted necesita
incrementar el límite del sistema operativo sobre el número de
descriptores de archivo disponibles para cada proceso, consulte
la documentación de su sistema operativo.
Nota: ¡Si usted ejecuta el shell tcsh, ulimit no funciona! tcsh también informa de valores incorrectos cuando le interroga por los límites actuales. En este caso, debería iniciar mysqld_safe utilizando sh.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.