我收到来自 MySQL 的“无法打开文件:'./databasename/tablename.frm'(errno:24)”错误,但据我所知,我设置的必要限制远高于我需要的。
除了 sysctls 和 MySQL 变量之外kern.maxfiles
,kern.maxfilesperproc
还有open_files_limit
其他限制会产生并导致这种情况吗?
$ mysql -u root -p -e 'SHOW STATUS' | grep '^Open'
Enter password:
Open_files 356
Open_streams 0
Open_tables 245
Opened_tables 0
$ mysql -u root -p -e 'SHOW GLOBAL VARIABLES' | grep 'open_files_limit'
Enter password:
open_files_limit 18000
$ sysctl -a | grep kern.maxfiles
kern.maxfiles: 20000
kern.maxfilesperproc: 18000
$ limits -n -U mysql
Resource limits for class default:
openfiles infinity
答案1
问题看起来更像是一个错误,而不是遇到了限制。
唯一的建议是更新到最新的稳定 MySQL 版本,甚至更新到 FreeBSD 7.2(它们提高了 FreeBSD 7.2 amd64 上的几乎所有限制)
答案2
您的设置是什么max_connections
?对于每个连接,都要打开一个(或多个)文件。尽量减少。此外,table_cache
设置会影响打开文件的数量。请参阅mysql 手册以获得更多帮助。
CU,阿内普