「MySQL」- errno: 24 – Too many open files

  CREATED BY JENKINSBOT

内容简介

处理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?