首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL-句柄数过多

在Linux上,单个进程打开的文件句柄的个数是有限制的。如果达到限制就会报”too many open files“。会在系统日志里面记录。

如果是MySQL进程,mysql会报错:[ERROR] Error in accept: Two many open files ,这时候就要排查是否是程序异常导致打开的文件句柄过多,如果是正常的业务增长就需要修改文件句柄的限制。

查看用户句柄限制:

ulimit -n

进程使用的文件句柄查看:

lsof -n | grep [pid]

也可以直接查看进程的limits文件

cat /proc/[pid]/limits

修改文件句柄

ulimit -n 65535

这个修改只对当前的session生效,终端退出就恢复成原来的样子。因此可以将这个命令添加到profile文件里面,在启动终端的时候加载。

在CentOS系统上可以修改对应的limits.conf文件永久生效:

在/etc/security/limits.conf文件末尾添加下面内容。

* soft core 102400

* hard core 102400

* hard nofile 10000

* soft nofile 10000

* hard nproc 10000

* soft nproc 10000

*代表domain,就是全局的意思,可以改成具体的用户名来限制某个用户。soft / hard:这个当中的硬限制是实际的限制,而软限制,是warnning限制,只会做出warning。nofile 代表max number of opened file,10000:代表最大打开句柄数

mysql配置中一般是open_table_cache,max_connections, open_files_limit 三个参数会影响到文件句柄。

open_table_cache是限制mysql 开启 table 的 cache file 数,一般 mysql 开一个 table就会开启 *.frm 和 *.ibd等文件,因此,这个至少要表数量的2倍以上。

max_connections: 最高连接,连接也是会占用文件句柄的。

open_files_limit: 限制打开文件句柄的个数,但是如果系统限制了,这个参数设置比系统限制更大也不会生效的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190814A0QP3T00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券