Tuesday, November 20, 2012

ERROR 1018 (HY000): Can't read dir of '.' (errno: 24)

We encountered an error in MySQl below:

ERROR 1018 (HY000): Can't read dir of '.' (errno: 24)

Upon searching for some solutions at google we found out that the error means 'Too many open files'. Everything you do in linux is a file (or rather a file descriptor). Every mysql connection, every apache connection etc.

To see how many files a user has open try this

sudo lsof -u mysql


edit the file in /etc/security/limits.conf and add these two mysql lines in at the bottom



#@student        -       maxlogins       4
mysql   soft    nofile  4096
mysql   hard    nofile  8192
# End of file



There is some debate as to whether you need to reboot for this to take effect (i say debate, i rebooted, and didnt google for it as i was in a rush ymmv).
Once this is set you need to make some changes in the mysql file as well. Assuming yours lives in /etc/mysql/my.cnf - edit or add these values

open-files-limit = 2048
table_cache            = 512

The table_cache should be researched (start here: http://dev.mysql.com/doc/refman/5.0/en/table-cache.html) and changes monitored. The default value is 64, so 512 should be a safe bet to begin with.


The On Demand Global Workforce - oDesk
Google