我经常在MySQL中收到此错误:
OS errno 24 - 打开的文件太多
原因是什么,解决方案是什么?
答案 0 :(得分:7)
当我同时使用许多数据库时,我经常得到errno: 24 - Too many open files
。
解决方案
编辑/etc/systemd/system.conf。取消注释并制作
DefaultLimitNOFILE=infinity
DefaultLimitMEMLOCK=infinity
然后运行systemctl daemon-reload
和service mysql restart
。
您可以使用查询检查结果:SHOW GLOBAL VARIABLES LIKE 'open_files_limit'
,您可能会注意到该值已更改。你现在不应该有任何错误。
请注意,解决方案可能与其他操作系统/版本不同。您可以尝试首先找到变量。使用Ubuntu 16.04.3和mysql 5.7.19进行测试。
在我的情况下,在mysql配置文件中设置open_files_limit
变量没有用,因为变量被标记为只读。
我希望它有所帮助!
答案 1 :(得分:3)
您的应用程序可能有connection
个泄漏,这就是connections
完成执行后,function
未关闭的原因。
我可能会查看应用程序代码并查看connections
/ preparedstatement
(如果它的java)对象未关闭的位置并修复它。
快速解决方法是增加服务器ulimit
(解释here),这会增加打开文件描述符的数量(即connections
)。但是,如果您发生连接泄漏,则会在以后的阶段再次遇到此错误。
答案 2 :(得分:1)