如何在MySQL中修复“太多打开的文件”?

时间:2017-05-16 16:34:03

标签: mysql

我经常在MySQL中收到此错误:

  

OS errno 24 - 打开的文件太多

原因是什么,解决方案是什么?

3 个答案:

答案 0 :(得分:7)

当我同时使用许多数据库时,我经常得到errno: 24 - Too many open files

解决方案

  • 确保与db服务器的连接属性关闭
  • 编辑/etc/systemd/system.conf。取消注释并制作

     DefaultLimitNOFILE=infinity
     DefaultLimitMEMLOCK=infinity
    

    然后运行systemctl daemon-reloadservice 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)

我遇到了同样的问题,发现了a solution on another stackoverflow-question

通过使用Bash运行以下代码段:

ulimit -n 30000