分类: LINUX
2015-11-18 08:09:08
原文地址:因ulimit设置导致的MySQL故障 作者:ning_lianjie
报错信息
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
排查
用Google,Baidu搜索,都将问题指向了系统的ulimit设置.
(详情,可自行搜索)
分析与总结
疑问
proc文件系统
首先说明一下/proc文件系统,可以借助该目录下的limits文件查看某个进程的ulimit限制情况.
root 57461
1 0 22:09 pts/4 00:00:00 /bin/sh
/home/q/mysql/bin/mysqld_safe --defaults-extra-file=/etc/my_3306.cnf
mysql 58327 57461
0 22:09 pts/4 00:00:00
/home/q/mysql/bin/mysqld --defaults-extra-file=/etc/my_3306.cnf
--basedir=/home/q/mysql
[lianjie.ning@vm01
~]$ sudo cat /proc/57461/limits
Limit Soft Limit Hard Limit Units
Max cpu
time unlimited unlimited seconds
Max file
size unlimited unlimited bytes
Max data
size unlimited unlimited bytes
Max stack
size 10485760 unlimited bytes
Max core file
size 0 unlimited bytes
Max resident
set unlimited unlimited bytes
Max
processes 1024 unlimited processes
Max open
files 65535 65535 files
Max locked
memory 65536 65536 bytes
Max address
space unlimited unlimited bytes
Max file
locks unlimited unlimited locks
Max pending
signals 15841 15841 signals
Max msgqueue
size 819200 819200 bytes
Max nice
priority 0 0
Max realtime
priority 0 0
Max realtime
timeout unlimited unlimited us
ulimit命令
soft nofile 10240
hard nofile 40960
/etc/security/limits.d/90-nproc.conf
(CentOS 6.2系统新增加的配置文件,可以指定用户可以使用的最大线程数.)
soft nproc 1024
3.
关于生效时间
修改上述两个配置文件,登录到root用户,可以用ulimit -a命令查看是否生效.
普通用户,则需要重启系统,或者直接在当前窗口指定,例如ulimit -u 65535,或者在/etc/profile,~/.bash_profile文件中指定.
例如:当前MySQL的最大线程数为1024,需要修改为65535.过程如下
a.
修改/etc/security/limits.d/90-nproc.conf配置文件
b.
用root用户重新登录
c.
查看ulimit –a,是否生效
d.
重启MySQL
参考