「MySQL」- errno: 24 - Too many open files @20210307
内容简介
处理errno: 24 - Too many open files错误的办法。
问题描述
就是遇到了errno: 24 - Too many open files错误。
问题原因
该错误由于打开文件数受限制导致的。
执行语句SHOW GLOBAL VARIABLES LIKE 'open_files_limit';查看允许打开的文件数,在我的系统里1024个。
该参数open_files_limit是只读的,所以SET GLOBAL open_files_limit = 65536;是无效的。
解决办法
解决办法很简单就是:修改允许打开的文件数。
但是不同的系统有不同的做法,主要是systemd和SysV init之间的差别。我这里只介绍systemd中的处理方法。系统环境为CentOS Linux release 7.4.1708 (Core)发行版。
# 修改配置
执行systemctl edit mysqld.service命令,输入如下配置:
[Service] LimitNOFILE=65536
然后,保存退出(通常是VIM编辑器)。由于是通过systemctl edit执行修改,因此不需要执行systemctl daemon-reload命令。
# 重启服务
最后,重启MySQL服务:systemctl restart mysqld.service
# 附加说明
如果你是通过设置/etc/systemd/system.conf文件中的DefaultLimitNOFILE=infinity参数来解决该问题,那如果要让配置生效,需要执行systemctl daemon-reexec命令。但是不建议修改该配置文件,因为它是全局的,除非你知道自己在做什么。
参考文献
How to fix “too many open files” in MySQL?
MySQL: Too many open files (24) BUT open_files has not reached open_files_limit?
reboot or “systemctl daemon-reload” for changes to /etc/systemd/system.conf?