设置打开文件限制

设置打开文件限制

当我在 /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

您是否在 my.cnf 中将其指定为open_files_limitopen-files-limit?在配置文件中它应该是open-files-limit

答案2

选项 1:您可以尝试lsof在 MySQL 的 pid 上运行,并通过管道传输到wc -l

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

这些将为您提供打开文件的列表(包括套接字等;在 Unix/Linux 中一切都是文件)。

mysql-client可以使用以下命令检查打开文件数限制show global varaibles like '%files%',然后set global variable open_files_limit=<some-larger-number>

注意这一点,因为这个数字ulimit -n是所有进程的 shell 的总和,所以你不希望把它设置得太高。

如果您看到这个数字慢慢增加,您可能需要检查您的代码:存在悬垂引用。

答案3

检查用户 mysql 的限制:

limits -e -U mysql

ulimit -a- 显示您的用户的限制

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

例如在 FreeBSD 中:/usr/local/etc/rc.d/mysql-server 查找字符串:${mysql_limits="NO"}并替换NO->YES

附言: 2Janne Pikkarainen 在我的配置 my.cnf 中:open_files_limit = 8192

相关内容