linux动态修改 max user processes limits

MySQL数据库 连接出现以下异常:
ERROR 1135 (HY0000):?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

 

?以上是OS层面的max processes不够导致的,通过以下实验可以重现此异常:

#设置mysql最大连接数1024  操作系统的Max process1024

?clip_image002

clip_image004

#使用如下方法模拟100个连接到mysql

~]# cat conn.sh

#!/bin/bash

for i in {1..1024}

do

mysql -uroot –p123456 -h 127.0.0.1 -e "select sleep(1000)" &

done

 

sh conn.sh

运行此脚本,稍后出现如下报错

clip_image006

此时查看mysql中的连接数

clip_image008

我们知道max connections1024 但到了975个连接的时候,再次连接就会报Can’t create a new thread (errno 11)的错误

从 OS kernel 2.6.32 开始
动态修改mysql进程的limits参数,可以使用如下方式:

echo -n ‘Max processes=SOFT_LIMITS:HARD_LIMITS’ > /proc/`pidof mysqld`/limits
通过如上命令就可以动态调整已经存在的mysqldprocesses限制了。

 

例如,在此实验环境中,操作系统信息如下:

~]# uname -r

2.6.32-131.0.15.el6.x86_64

~]# echo -n "Max processes=10240:10240" > /proc/12946/limits

clip_image010

发现mysql进程对应的limit参数已经动态变成10240,此时再次模拟多个连接到mysql

clip_image012

clip_image014

此时,抛出的异常是过多的连接了 而不再是:?Can’t create a new thread (errno 11)

 

综上,数据库服务器的max process limit需要调整,至少要保证数据库的max connections小于它,如果已经运行的mysql遇到此问题,而实际真的需要增大max connections时,可以通过echo -n ‘Max processes=SOFT_LIMITS:HARD_LIMITS’ > /proc/`pidof mysqld`/limits 方式来动态调整正在运行的mysqllimits参数,从而避免重启数据库的操作

参考https://www.percona.com/blog/2013/02/04/cant_create_thread_errno_11/

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27000195/viewspace-1979138/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/27000195/viewspace-1979138/

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值