mysql的limit max user processes

本文介绍了当遇到MySQL因线程限制导致无法创建新线程的问题时的解决办法。通过调整系统配置文件中的最大线程数设置,可以有效避免此类问题的发生。

现象描述:


今天有人反应点击网站相关链接无反应,在连接数据库时出现提示如下:

mysql error: Can't create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug

通过google了解到是由于用户线程达到 max user processes导致,但是通过ulimit -a 

发现max user processes 127372 和其他正常的服务器都一样,是什么原因导致的呢?

1.pidof mysqld 查询mysql实例都有哪些进程

2.cat /proc/28571/limits

红框出:原来为1024 ,出错的实例都是由于Soft Limit 达到1024,若关闭一些连接,数据库仍会继续运行,但问题并没有解决。

解决方案:

1.vi /etc/security/limits.d/90-nproc.conf
#修改为:
 *    nproc    127372
更改后需要重启数据库实例

2.动态修改进程的系统资源limits

echo -n "Max processes=204800:204800" > /proc/`pidof mysqld`/limits

如:echo -n "Max processes=127372:127372" > /proc/28571/limits

此方法不用重启数据库实例


普及:

1.自内核2.6.32之后,引入/etc/security/limits.d/90-nproc.conf,这就意味/etc/security/limits.d/里面的文件的配置会覆盖/etc/security/limits.conf的配置

2.快速修改:
文件句柄
echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* hard nofile 65536" >> /etc/security/limits.conf
 
最大线程数
  sed -i '/nproc/s/soft/-/' /etc/security/limits.d/90-nproc.conf
sed -i '/nproc/s/1024/65535/' /etc/security/limits.d/90-nproc.conf


至于为何会出现这种问题,请看下此链接:http://www.cnblogs.com/billyxp/archive/2013/04/03/2998079.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值