If you get ERROR '...' not found (errno: 23)
, Can't open
file: ... (errno: 24)
or any other error with errno 23
or
errno 24
from MySQL, it means that you haven't allocated
enough file descriptors for MySQL. You can use the
perror
utility to get a description of what the error number
means:
shell> perror 23
File table overflow
shell> perror 24
Too many open files
The problem here is that mysqld
is trying to keep open too many
files simultaneously. You can either tell mysqld
not to open so
many files at once, or increase the number of file descriptors
available to mysqld
.
To tell mysqld
to keep open fewer files at a time, you can make the
table cache smaller by using the -O table_cache=32
option
to safe_mysqld
(the default value is 64). Reducing the value of
max_connections
will also reduce the number of open files (the default
value is 90).
To change the number of file descriptors available to mysqld
, modify
the safe_mysqld
script. There is a commented-out line
ulimit -n 256
in the script. You can remove the '#'
character
to uncomment this line, and change the number 256 to change the number of
file descriptors available to mysqld
.
ulimit
can increase the number of file descriptors, but only up to the
limit imposed by the operating system. If you need to increase the OS limit
on the number of file descriptors available to each process, consult the
documentation for your operating system.
Note that if you run the tcsh
shell, ulimit
will not work!
tcsh
will also report incorrect values when you ask for the current
limits! In this case you should start safe_mysqld
with sh
!