MySQL Errcode: 24 - Too many open files

2024-10-17 21:26:00
丁国栋
原创 66
摘要:MySQL提示 Errcode: 24 - Too many open files的原因是mysqld进程的文件打开数不足,要解决这个问题,需要修改systemd的服务文件,在 [service] 下添加 LimitNOFILE=200000,,执行 sudo systemctl daemon-reload 和 sudo systemctl restart mysql.service 。

收到Web应用告警,查看错误日志提示“Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 23 Out of resources when opening file './DATABASE_NAME/TABLE_NAME.MYD' (Errcode: 24 - Too many open files) in /PATH/TO/framework/router.class.php:81”。

登录数据库实例执行 show variables like 'open_files_limit'; 或者查看数据库进程的limits值grep 'Max open files' /proc/$(pgrep mysqld)/limits 都显示打开数是 1024.

但查看系统的nofile配置grep nofile /etc/security/limits.*,是200000,这个值是足够使用。

通过查阅资料,还是systemd服务管理器的原因,要解决这个问题,需要编辑 MySQL systemd service file /lib/systemd/system/mysql.service (这个文件可以通过命令 systemctl status mysql.service |grep Loaded|grep -oP '/.*\.service' 找到),在[service] 下添加 LimitNOFILE=200000,执行 sudo systemctl daemon-reloadsudo systemctl restart mysql.service 。此时通过查询数据库变量或进程limits就可以验证了,最后再观察业务应用访问情况。



发表评论
博客分类