• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

因ulimit设立导致的MySQL故障_mysql

mysql 搞代码 7年前 (2018-06-07) 149次浏览 已收录 0个评论

因ulimit设置导致的mysql故障

报错信息

 

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的限制情况.

[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

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

欢迎大家阅读《因ulimit设立导致的MySQL故障_mysql》,跪求各位点评,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:因ulimit设立导致的MySQL故障_mysql

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址