MySQL:打开文件过多(24)但是 open_files 尚未达到 open_files_limit?

MySQL:打开文件过多(24)但是 open_files 尚未达到 open_files_limit?

我遇到了以下错误:

打开的文件过多 (24)

经过大量研究,我们发现打开文件状态确实显示打开的文件数,但当此数字低于打开文件限制设置?这怎么可能呢?

我们正在使用表打开缓存设置,在阅读了 MySQL 文档中关于 table_open_cache 以及 MySQL 如何打开和关闭表的内容后,我们开始认为这是因为状态计数 open_files 没有计算进入的打开的表表打开缓存,但不确定。

关于这是如何实现的,有任何明确的答案吗?

答案1

当前版本的 Amazon Linux AMI 使用 systemd。如果您使用的是 systemd,则您设置的任何内容/etc/security/limits.conf都将被 systemd 忽略。

找到适用于您的 MySQL 版本的 .service 文件并更新它。例如:

/usr/lib/systemd/system/mysqld.service

在该Service部分下添加以下内容:

[Service]
LimitNOFILE=4096

将 4096 更改为您需要的限制。

更新该文件后重新加载 systemd 配置:

systemctl daemon-reload

然后重新启动mysql服务器。

答案2

运行以下命令查看打开文件限制:

mysql> select @@max_open_files ;

从系统方面来看:

#sudo -u mysql bash
$ulimit -Sn
$ulimit -Hn

在你的 my.cnf 中添加以下行:

open-files-limit = 4096

检查 /etc/security/limits.conf 中是否有 mysql 的字符串,并在需要时添加:

# echo "mysql           soft    nofile          4096" >> /etc/security/limits.conf
# echo "mysql           hard    nofile          4096" >> /etc/security/limits.conf

然后重新启动mysql服务器将值更改为您需要的值

相关内容