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

   2015-11-12 0
核心提示: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)这个问题总算告以段落。

 
标签: ERROR 1135
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax;问题的解
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxE
      哇,时隔两天时间,终于找到这个问题的解决办法,先看问题  这是我最近写的家庭记账本网页版,按顺序输入点击保存,总是弹出添加失败的提示 顺着找原因,把原因锁定在dao层的sql语句上,反复检查,没有找到一点毛病,程序其他地方也没有错误,这让我郁
    02-10
  • Oracle PL/SQL 非预定义异常、自定义异常处理、
    抛出异常Oracle有三种类型的异常错误: 1. 预定义(Predefined)异常ORACLE预定义的异常情况大约有24个。对这种异常情况的处理,无需在程序中定义,由ORACLE自动将其引发。2. 非预定义(Predefined)异常即其他标准的ORACLE错误。对这种异常情况的处理,
    02-10
  • mysql数据库导入sql文件时提示“Error Code: 1153 - Got a packet bigger than 'max_allowed_packet' bytes”
    mysql数据库导入sql文件时提示“Error Code: 11
    向mysql数据库中导入sql文件时,如果文件过大(几百M),会提示“Error Code: 1153 - Got a packet bigger than 'max_allowed_packet' bytes”1.查看目前数据库配置show VARIABLES like '%max_allowed_packet%';显示如下结果+--------------------+---------+
    02-10
  • mybatis的报错总结_____2Error updating database.  Cause: java.sql.SQLSyntaxErrorException: You have an err
    mybatis的报错总结_____2Error updating databa
    在编写动态sql时 trim的属性写错了,如下图:错误示范:(接口的xml配置文件中:)1update id="modifyBill" parameterType="Bill"2 update smbms_bill3 trim suffix="set" prefixOverrides="," prefix="where id=#{id}"4 if test="billCode!=null"
    02-10
  • java.sql.SQLException: No value specified fo
    public boolean updateMemberslnfo(MembersInfo membersInfo) throws SQLException{StringBuffer sqlBuffer = new StringBuffer("UPDATE membersinfo SET ");boolean check = true;ListObject params = new ArrayListObject();if(membersInfo.getMname()!=nul
    02-10
  • 【MySQL】org.springframework.dao.TransientDataAccessResourceException: Error attempting to get column
    【MySQL】org.springframework.dao.TransientDa
     使用Mybatis plus的时候,查询select all,恰好报了异常    ; Zero date value prohibited; nested exception is java.sql.SQLException: Zero date value prohibited, mergedContextConfiguration = [WebMergedContextConfiguration@595b007d testClas
    02-10
  • Mysql远程连接报错:SQL Error (1130): Host '192.168.61.128' is not allowed to connect to this MySQ
    Mysql远程连接报错:SQL Error (1130): Host �
      通过SQLyog连接linux中的MySQL报错问题:SQL Error (1130): Host '192.168.0.18' is not allowed to connect to this MySQL server说明你所连接的用户账户没有远程连接的权限,只能在本机localhost登录需要更改 mysql 数据库里的 user表里的 host字段 把loc
    02-10
  • mysql数据库出现ERROR 1 (HY000): Can't c
    1. mkdir /var/lib/mysql/tmp2. chown mysql:mysql /var/lib/mysql/tmp3. 修改/etc/my.cnf配置文件,在[mysqld]域加入:tmpdir = /var/lib/mysql/tmp4. 重启mysqld服务   service mysqld restart
    02-10
  • mysql执行SQL语句时报错:[Err] 3 - Error writing file '/tmp/MYP0G1B8' (Errcode: 28 - No space left
    mysql执行SQL语句时报错:[Err] 3 - Error writi
    问题描述:  今天一同事在mysql中执行SQL语句的时候,报了/tmp空间不足的问题,报错如下:[SQL] SELECT f.prov as 字段1, MAX( CASE f.flag_name WHEN '字段1' THEN f.num ELSE 0 END ) AS '字段1', MAX( CASE f.flag_name WHEN '店员量' THEN f.num ELSE 0 END
    02-09
  • python3 UnicodeEncodeError错误,cx_oracle模
    问题描述:  写了一个执行sql的模块,引用了cx_oracle,在windows机器上完美运行,移植到Centos上就会报错,检查过程:  代码编码为utf-8,print编码为utf-8,文件编码为utf-8,服务器编码为utf-8,各种正常  定位代码报错位置,开始怀疑是sql执行成功,
    02-09
点击排行