mysql "Too many open files”问题解决

背景介绍

最近在mysql服务器上运行了一个爬虫程序,其他用户访问mysql(5.7)数据库的时候老是报错“Too many openf files”,现在把解决问题的方案记录下来。

首先我查看mysql open_files_limit参数

mysql> show variables like '%open_files_limit%';

然后查看mysql官网关于open_files_limit参数说明,大体上是说该参数决定了mysql进程能打开的最大文件数。这个最大文件数依赖于操作系统,如果进程需要打开的文件数无法被分配成功的时候就会报出错误或警告。
在Unix系统中open_file_limit不会超过操作系统ulimit -n所指定的文件数。
mysql实例启动时,取下面三个值中最大值为open_files_limit参数值

1) 10 + max_connections + (table_open_cache * 2)
2) max_connections * 5
3) open_files_limit value specified at startup, 5000 if none

修改操作系统打开文件限制

查看

ulimit -n
1024

修改/etc/security/limits.conf

mysql soft nofile  102400
mysql hard nofile  102400

修改mysql最大打开文件数限制

修改/etc/my.cnf 加入:

open_files_limit=102400
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这个错误表示打开的文件数超过了操作系统的限制。当MySQL服务器尝试打开一个新的文件时,操作系统会限制打开的文件数目,如果超过了限制就会出现这个错误。 要解决这个问题,可以尝试以下几个步骤: 1. 确认错误日志:首先,查看MySQL的错误日志文件,通常是在MySQL的数据目录下的`hostname.err`文件中。日志中会显示具体的错误信息和可能的原因。 2. 增加文件描述符限制:可以通过修改操作系统的文件描述符限制来解决这个问题。在Linux系统中,可以通过修改`/etc/security/limits.conf`文件来增加限制。例如,可以添加以下行来增加文件描述符的限制: ``` * soft nofile 65535 * hard nofile 65535 ``` 然后重新登录或重启系统生效。 3. 优化MySQL参数:如果增加文件描述符限制后问题仍然存在,可以尝试优化MySQL的一些参数来减少打开的文件数目。例如,可以尝试减少`table_open_cache`和`open_files_limit`参数的值。 4. 检查数据库连接池:如果你使用了数据库连接池,确保连接池正确关闭和释放连接,避免连接泄露。 5. 检查应用程序代码:有时候,应用程序在使用数据库连接后没有正确关闭连接,导致连接没有释放。确保在使用完数据库连接后,及时关闭连接。 通过以上一些步骤,你应该能够解决MySQL的"OS errno 24 - Too many open files"错误。如果问题仍然存在,可以进一步查看MySQL的文档或寻求专业的支持。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值