报错信息
?
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设置.
(详情,可自行搜索)
?
分析与总结
?
疑问
?
如何查看当前系统或某个进程的limit设置?
limit如何设置?
limit设置后,何时生效?
proc文件系统
?
首先说明一下/proc文件系统,可以借助该目录下的limits文件查看某个进程的ulimit限制情况.
?
执行ps -ef|grep mysql,得到MySQL的进程号.
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
再根据进程号,查看ulimit的限制情况.
[[email protected] ~]$ 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
proc是什么
Linux版的ps和top命令都从/proc目录读取进程的状态信息,内核把有关系统状态的各种有意义的信息都放在这个伪目录里.
进程特有的信息都分别被放到了按PID起名字的子目录里.
ulimit命令
?
暂时认为该命令可以限制进程的资源使用情况.详细情况可参考man ulimit
配置文件
/etc/security/limits.conf (可配置系统默认的资源分配情况)
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