今天生产上遇到了一个问题,没遇见过,所以记录一下
- 系统:SUSE 12
在系统命令行,使用mysql -u-p
的命令登录,报以下错误:
ERROR 1135 (HY000): 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。
不仅仅是在本地数据库服务器上报这个错误,从其他服务器远程连接依旧如此,就连Navicat都无法连接,且数据库无法停掉,只能通过kill强杀的办法。
之后在一个国外连接上看到了类似问题:直达链接 下面写出具体解决步骤。
- 首先先看报错,大致可以判断是系统限制了mysql数据库的连接,可通过以下命令检查是不是分配的系统资源较少。
ulimit -a cat /proc/`pidof mysqld`/limits | egrep "(processes|files)"
如果都没问题,执行systemctl status mysql
查看mysql的运行状态,找到TASKS一行,会发现两个数字,其中括号外是已经运行的线程数量,括号内是所允许的最大数量,默认(512),应将512配置大或者无限制。
修改方法:进入system.conf到包含DefaultTasksMax的行,将他的值修改为DefaultTasksMax=infinity(如被注释应打开注释),修改完成后保存,并执行 systemctl daemon-reexec 重新加载此文件,
[root@180-234 app]# vim /etc/systemd/system.conf 修改完成后,执行下方命令保存重新加载 systemctl daemon-reexec
操作完以上步骤后,重启mysql 后,在查看一下TASTS行,发现括号内数字消失,此时为不限制数量。 命令行登录,发现可以登陆了,问题解决。