设置open_files_limit

当我在/etc/security/limits.conf和/etc/mysql/my.cnf中设置open_files_limit = 16k

ulimit -n 16344 

但在MySQL中:

 show variables like 'open_files_limit'; open_files_limit: 4096 

那么mysql如何计算open_files_limit。 有什么地方我应该看?

选项1:您可以尝试在MySQL的pid上运行lsof ,通过pipe道连接到wc -l

选项2: ll /proc/<mysql-pid>/fs/

这些会给你打开的文件列表(包括套接字等;一切都是Unix / Linux中的文件)。

打开的文件限制可以在mysql-clientshow global varaibles like '%files%'来检查,然后set global variable open_files_limit=<some-larger-number> show global varaibles like '%files%' set global variable open_files_limit=<some-larger-number>

要小心这一点,因为ulimit -n的数字是所有进程的shell的总数,所以你不想把它放得太高。

如果你看到这个数字慢慢增加,你可能想检查你的代码:有悬挂引用。

你在my.cnf中指定了open_files_limit还是open-files-limit ? 在configuration文件中,它应该是open-files-limit

检查用户mysql的限制:

limits -e -U mysql

ulimit -a – 显示用户的限制

如果限制正确&&您使用Percona MYSQL然后需要在启动脚本中激活限制。

例如在FreeBSD中: /usr/local/etc/rc.d/mysql-server查找string: ${mysql_limits="NO"}并replaceNO – > YES

PS。 在我的configurationmy.cnf 2Janne Pikkarainen: open_files_limit = 8192