一个普通ERROR 1135 (HY000)错误引发的血案:

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介:
一个普通ERROR 1135 (HY000)错误引发的血案:
 
今天接到测试人员反应,测试环境前端应用程序无连接mysql数据库,登录mysql服务器,查看错误日志,发现有如下报错:

点击( 此处)折叠或打开
  1. 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

第一反应感觉可能是跟ulimit限制连接数有关,文件描述符不够用。接下来检查配置件 /etc/security/limits.conf 相关结果如下:

点击( 此处)折叠或打开
  1. #for root
  2. root soft nofile 65535
  3. root hard nofile 65535
  4. End of file
  5. mysql soft nproc 65536
  6. mysql hard nproc 65536
  7. mysql soft nofile 65535
  8. mysql hard nofile 65535

配置没有问题,mysql的ulimit限制已经打开。

但是,执行如下命令:


点击( 此处)折叠或打开
  1. # sudo -u root bash -c " ulimit -a "

  2. core file size (blocks, -c) 0

  3. data seg size (kbytes, -d) unlimited

  4. scheduling priority (-e) 0

  5. file size (blocks, -f) unlimited

  6. pending signals (-i) 62591

  7. max locked memory (kbytes, -l) 64

  8. max memory size (kbytes, -m) unlimited

  9. open files (-n) 1024

  10. pipe size (512 bytes, -p) 8

  11. POSIX message queues (bytes, -q) 819200

  12. real-time priority (-r) 0

  13. stack size (kbytes, -s) 10240

  14. cpu time (seconds, -t) unlimited

  15. max user processes (-u) 1024

  16. virtual memory (kbytes, -v) unlimited

  17. file locks (-x) unlimited
 
发现max user processes值仍为1024.

而在Centos5里面,只须在/etc/security/limits.conf添加如下两行:
 

点击( 此处)折叠或打开
  1. root soft nofile 65535 
  2. root hard nofile 65535
 
对应的uilmit  -u 就会是65535.
 
后来猜想centos6的用户的ulimit限制是不是还有其他的配置文件做相关的限制呢?果不其然,发现在 /etc/security/limits.d/目录下,有一个名为:90-nproc.conf的配置文件,
打开看看什么内容:
 
[root@fztest ~]# cat /etc/security/limits.d/90-nproc.conf

点击( 此处)折叠或打开
  1. # Default limit for number of user's processes to prevent
  2. # accidental fork bombs.
  3. # See rhbz #432903 for reasoning.

  4. * soft nproc 1024

而在配置文件/etc/security/limits.d/90-nproc.conf中的 “* soft nproc 1024”的意思是任何用户的最大max user processes为1024个,也就是说,系统的任何用户均不可以通过ulimit -u来修改 。真的是这样吗?我们来进行如下验证操作:

点击( 此处)折叠或打开
  1. [oracle@fztest ~]$ ulimit -u 65535
  2. -bash: ulimit: max user processes: cannot modify limit: Operation not permitted
  3. [root@fztest ~]# ulimit -u 65535
  4. [root@fztest ~]# ulimit -u 
  5. 65535

由以上操作,可知事实上这个限制是对除root以外的普通用户进行的限制,root可以通过ulimit -u 65535来进行即时修改,只对当前会话生效。一旦重启服务器,便会失效(重新恢复max user processes  -u 1024)。

接下来,尝试通过修改这个配置文件,来验证max user processes的值是否会改变。
将/etc/security/limits.d/90-nproc.conf中的1024修改为65535后,执行如下命令:

点击( 此处)折叠或打开
  1. [root@fztest ~]# sudo -u root bash -c " ulimit -a" 
  2. core file size (blocks, -c) 0
  3. data seg size (kbytes, -d) unlimited
  4. scheduling priority (-e) 0
  5. file size (blocks, -f) unlimited
  6. pending signals (-i) 95191
  7. max locked memory (kbytes, -l) 64
  8. max memory size (kbytes, -m) unlimited
  9. open files (-n) 65535
  10. pipe size (512 bytes, -p) 8
  11. POSIX message queues (bytes, -q) 819200
  12. real-time priority (-r) 0
  13. stack size (kbytes, -s) 10240
  14. cpu time (seconds, -t) unlimited
  15. max user processes (-u) 65535
  16. virtual memory (kbytes, -v) unlimited
  17. file locks (-x) unlimited

由此可见,修改生效。如果不想修改/etc/security/limits.d/90-nproc.conf这个文件,也可以将此限制添加到/etc/rc.local文件中,让其开机应用生效即可。
 
成功修改了root用户的max user processes后,继续使用root用户启动mysqld_safe脚本,稳定运行了一个上午,一切正常。 至此,ERROR 1135 (HY000): Can’t create a new thread (errno 11)这个问题总算告以段落。

 
     本文转自vcdog 51CTO博客,原文链接:http://blog.51cto.com/255361/1054204 ,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
监控 安全 Linux
Qt 文件类实战:解锁文件操作的无限可能
Qt 文件类实战:解锁文件操作的无限可能
742 1
|
关系型数据库 MySQL Linux
mysql登录报错Can't create a new thread
mysql登录报错Can't create a new thread
514 0
|
IDE 开发工具 开发者
HarmonyOS(鸿蒙)开发软件DevEco Studio基本配置(兼容IDEA)
HarmonyOS(鸿蒙)开发软件DevEco Studio基本配置(兼容IDEA)
949 0
HarmonyOS(鸿蒙)开发软件DevEco Studio基本配置(兼容IDEA)
|
应用服务中间件 PHP nginx
PHP ‘group‘ 或 ‘user‘ directive is ignored when FPM is not running as root
PHP ‘group‘ 或 ‘user‘ directive is ignored when FPM is not running as root
562 1
|
11月前
|
SQL Java 数据库连接
MyBatis-Plus高级用法:最优化持久层开发
MyBatis-Plus 通过简化常见的持久层开发任务,提高了开发效率和代码的可维护性。通过合理使用条件构造器、分页插件、逻辑删除和代码生成器等高级功能,可以进一步优化持久层开发,提升系统性能和稳定性。掌握这些高级用法和最佳实践,有助于开发者构建高效、稳定和可扩展的企业级应用。
642 13
|
网络协议 关系型数据库 MySQL
启动mysql时的异常为:[ERROR] Can‘t start server: Bind on TCP/IP port. Got error: 98: Address already in used
启动mysql时的异常为:[ERROR] Can‘t start server: Bind on TCP/IP port. Got error: 98: Address already in used
|
设计模式 负载均衡 Apache
SpringCloud源码剖析-Zuul使用Ribbon负载均衡-RibbonRoutingFilter
RibbonCommandContext 在run方法中构建了一个 RibbonCommandContext Ribbon的上下文对象,然后调用 forward 方法转发请求 ,通过 setResponse方法设置结果
380 0
|
安全 物联网 API
学习TrustZone可以参考的资料
学习TrustZone可以参考的资料
334 0
|
弹性计算 监控 应用服务中间件
使用 Fleet 管理 Elastic Agent 监控应用
本场景主要介绍了如何使用 Fleet 集中管理 Elastic Agent ,并对主机的指标,日志,服务等进行监控。
|
存储 SQL 缓存
MySQL中间件ProxySQL介绍
ProxySQL 是一个高性能的SQL 代理。ProxySQL有一个高级多核体系结构。支持数十万并发连接,可以多路复用到后端服务器上。 作为守护进程运行。而且有一个进程监视这个守护进程,并在守护进程崩溃时重启守护进程,以减少停机时间。这个守护进程接受来自MySQL客户端的请求,并将其转发到后端的MySQL服务器上。 ProxySQL被设计为可以连续运行而且不需要重启。大多数配置可以在运行时使用类似SQL语句的查询完成。
2203 104
MySQL中间件ProxySQL介绍