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

 更新时间:2015年08月10日 23:20:29   投稿:mdxy-dxy  
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数据库,登录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

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

复制代码 代码如下:

#for root
root soft nofile 65535
root hard nofile 65535
# End of file
mysql soft nproc 65536
mysql hard nproc 65536
mysql soft nofile 65535
mysql hard nofile 65535

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

但是,执行如下命令:

复制代码 代码如下:

# sudo -u root bash -c " ulimit -a "
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 62591
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

发现max user processes值仍为1024.

而在Centos5里面,只须在/etc/security/limits.conf添加如下两行:
 
点击(此处)折叠或打开
root soft nofile 65535
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

复制代码 代码如下:

# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.

* soft nproc 1024


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


复制代码 代码如下:

[oracle@fztest ~]$ ulimit -u 65535
-bash: ulimit: max user processes: cannot modify limit: Operation not permitted
[root@fztest ~]# ulimit -u 65535
[root@fztest ~]# ulimit -u
65535

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

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


复制代码 代码如下:

[root@fztest ~]# sudo -u root bash -c " ulimit -a"
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 95191
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65535
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 65535
virtual memory (kbytes, -v) unlimited
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)这个问题总算告以段落。

相关文章

  • mysql SKIP-NAME-RESOLVE 错误的使用时机造成用户权限

    mysql SKIP-NAME-RESOLVE 错误的使用时机造成用户权限

    新加的一台服务器,连接内网中的一台mysql服务器的时候,经常出现超时。
    2011-06-06
  • vscode安装mysql相关插件的详细步骤

    vscode安装mysql相关插件的详细步骤

    这篇文章主要给大家介绍了关于vscode安装mysql相关插件的详细步骤,这将帮助你更高效地管理数据库操作,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • MySQL中一条查询SQL语句的完整执行流程

    MySQL中一条查询SQL语句的完整执行流程

    通常我们在使用MySQL时,我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在MySQL内部的执行过程,这篇文章主要给大家介绍了关于MySQL中一条查询SQL语句的完整执行流程,需要的朋友可以参考下
    2024-05-05
  • mysql优化之like和=性能详析

    mysql优化之like和=性能详析

    这篇文章主要给大家介绍了关于mysql优化之like和=性能的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 高效数据流转:Mycat分库分表与GreatSQL实时同步

    高效数据流转:Mycat分库分表与GreatSQL实时同步

    聚焦数据库扩容与实时数据同步,探索MyCat分库分表与GreatSQL的强大结合!想在大规模数据处理中游刃有余?本指南将带你轻松掌握MyCat的分布式解决方案和GreatSQL的实时同步机制,让高效、稳定的数据库管理触手可及,一起揭开高并发环境下数据库优化的神秘面纱吧!
    2024-01-01
  • 简单介绍MySQL中索引的使用方法

    简单介绍MySQL中索引的使用方法

    这篇文章主要介绍了简单介绍MySQL中索引的使用方法,是MySQL入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • Mysql报Table 'mysql.user' doesn't exist问题的解决方法

    Mysql报Table 'mysql.user' doesn't exist问题的解

    这篇文章主要给大家介绍了关于Mysql报Table 'mysql.user' doesn't exist问题的解决方法,初学者可能会遇到这个问题,文中通过图文将解决方法介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • Slave memory leak and trigger oom-killer

    Slave memory leak and trigger oom-killer

    这篇文章主要介绍了Slave memory leak and trigger oom-killer,需要的朋友可以参考下
    2016-07-07
  • MySQL数据库操作常用命令小结

    MySQL数据库操作常用命令小结

    这篇文章主要介绍了MySQL数据库操作常用命令小结,例如创建数据库、使用数据库、查看数据库、数据库编码操作等命令讲解,需要的朋友可以参考下
    2014-12-12
  • MySQL 数据库锁的实现

    MySQL 数据库锁的实现

    本文主要介绍了MySQL 数据库锁的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03

最新评论