参考文档:
https://www.percona.com/blog/2013/02/04/cant_create_thread_errno_11/
os: centos6.5
mysql version: mysql5.6.35
问题:在连接数据库时,遇到如下问题:
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.
解决方法:
(1)修改/etc/security/limit.conf
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
(2) 修改/etc/security/limits.d/90-nproc.conf
* soft nproc 65536
root soft nproc unlimited
注:但是此方法并不能真正解决问题,因为需要重新启动数据库服务,但是生产环境,不可能随便重启动数据库。
最终解决方法:
(1) 执行ps -ef |grep mysql,得到mysql的进程;
(2) 如下查看mysql的max processes和max open_files
[root@UHDEV013 log]# cat /proc/5106/limits | egrep "(processes|files)"
Max processes 4096 4906 processes
Max open files 65535 65535 files
(3) 使用ulimit -a查看,虽然查看到的值已经为修改过的,但是其实由于修改的值是在mysql启动之后执行的,mysql所能使用的max_procesess依然是为1024.
需要执行如下语句,意思就是直接把现在mysql对应的进程的max_processes的最大极限值都作出相应的修改。
#echo -n "Max processes=SOFT_LIMIT:HARD_LIMIT" > /proc/5106/limits 红色字体的值需要替换为真实的值
echo -n "Max processes=4096:4096" > /proc/5106/limits