mysql 文件描述符_MySQL打开的文件描述符限制---Can't open file: '.\test\a.frm'(error:24)...

如果遇到如下错误:

d204df237ebffd3bd260dc668522cca6.png

这就是MySQL的文件描述符不够用了。

1、如何解决

第一步:设置OS参数(如果你有权限的话):

在文件末尾:/etc/security/limits.conf

添加如下内容:

#mysql hard nofile65535#mysql soft nofile65535

上面的配置,是OS限制各个用户能够打开的文件描述符限制(hard soft区别参看man ulimit),新增上面两行,表示mysql用户能够打开65535个文件描述符(可以使用lsof -u mysql|wc -l查看当前打开了多少个文件描述符)。

第二步:修改MySQL参数:

在MySQL配置文件my.cnf 中新增下面的行:

open_files_limit = 65535

innodb_open_files+65535

然后重启MySQL,就可以解决了

2、原因

查看官方文档:

操作系统允许mysqld打开的文件数 。此变量在运行时的值是系统允许的实际值,可能与您在服务器启动时指定的值不同。在MySQL无法更改打开文件数的系统上,该值为0。

有效 open_files_limit值是基于在系统启动时指定的值(如果有的话)和的值max_connections 和table_open_cache使用这些公式:1) 10 + max_connections + (table_open_cache * 2)2) max_connections * 5

3) operating system limit ifpositive4) ifoperating system limit is Infinity:

open_files_limit value specified at startup,5000 ifnone

服务器尝试使用这三个值中的最大值来获取文件描述符的数量。如果无法获得那么多描述符,则服务器会尝试获得系统允许的数量。

上面的办法一般就能解决问题了。不过在实践中发现,在my.cnf中设置的参数open_files_limit值是无效的,即MySQL启动后open_files_limit始终以OS的文件描述符为准。

无论如何,MySQL打开的文件描述符限制都是OS的文件描述符限制,和配置文件中open_files_limit的设置没有关系

查看进程打开文件最大限制:

cat   /proc/sys/fs/file-max       ###查看系统级别的最大限制

ulimit -n   查看用户级别的限制(一般是1024,阿里云和华为云这种云主机一般是65535)

文章链接:https://www.cnblogs.com/cjsblog/p/9367043.html

http://www.orczhou.com/index.php/2010/10/mysql-open-file-limit/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值