【原创】MySQL Can't create a new thread报错分析
今天有两台服务器都出现了Can't create a new thread报错。
【故障处理过程】
故障发生后登录服务器,检查mysql进程正常,但登录mysql报下面错误
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。
重启mysql服务,执行没响应,kill -9 mysql进程,从errorlog中看到,停服务的命令由于无法创建新的thread导致执行失败
【问题分析】
这个报错不是mysql本身的问题,根本原因是由于操作系统CentOS 6.4 Linux 2.6.32 的max user processe的默认设置1024太小造成,当mysql线程数大于配置值时,就会出现Can't create a new thread报错。
以其中一台服务器为例,操作系统版本是CentOS release 6.4(Linux version 2.6.32)
配置文件/etc/security/limits.d/90-nproc.conf的默认设置soft limit 是1024
这时mysql进程的Soft Limit也是1024
【问题重现】
在测试机器上将Max processes调整为1024,模拟并发1024以上个线程请求,会出现同样的报错
动态修改mysql进程的系统资源限制后,报错消失
echo -n "Max processes=2048:2048" > /proc/`pidof mysqld`/limits
【解决办法】(针对CentOS 6.4 Linux version 2.6.32以上版本)
1、动态修改mysql进程的系统资源限制(不需重启mysql服务即可生效)
echo -n "Max processes=65535:65535" > /proc/`pidof mysqld`/limits
2、修改/etc/security/limits.d/90-nproc.conf配置文件的配置(下次重启mysql服务生效)
3、建议同时修改上面配置中用户打开最大文件数的限制nofile
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(4)
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 2025成都.NET开发者Connect圆满结束