详解MySQL数据库资源不足的错误解决方案_绿色软件之家

绿色软件之家:您身边最放心的安全下载站! 最新更新|软件分类|软件专题|手机版|系统之家|纯净系统

您当前所在位置:首页数据库MYSQL → 详解MySQL数据库资源不足的错误解决方案

详解MySQL数据库资源不足的错误解决方案

时间:2015/6/28来源:绿色软件之家作者:网管联盟我要评论(0)

前几天,在管理系统的时候遇到一个奇怪的问题, 今天才有机会安装好mysql环境来重现此问题,由于不是最原始的环境, 所以未必能够完全重现, 我只能努力重现关键问题了.. 我觉得此问题有点特别, 故在此大概的回想下当时的情景..

工作时, 执行了一个su – mysql 的命令, 遇到了下面这样一个错误..

view sourceprint?1 [root@dbmain ~]# su - mysql 

2 su: cannot set user id: Resource temporarily unavailable

这是一个Shell中由于资源不足引起的问题, 当时下意识的先运行ulimit,看看ulimit的基本限制.

view sourceprint?01 [root@dbmain ~]# ulimit -a 

02 core file size    (blocks, -c) 0 

03 data seg size     (kbytes, -d) unlimited 

04 scheduling priority (-e) 0 

05 file size   (blocks, -f) unlimited 

06 pending signals     (-i) 25600 

07 max locked memory (kbytes, -l) 32 

08 max memory size   (kbytes, -m) unlimited 

09 open files    (-n) 1024 

10 pipe size      (512 bytes, -p) 8 

11 POSIX message queues     (bytes, -q) 819200 

12 real-time priority  (-r) 0 

13 stack size  (kbytes, -s) 10240 

14 cpu time   (seconds, -t) unlimited 

15 max user processes  (-u) 25600 

16 virtual memory    (kbytes, -v) unlimited 

17 file locks    (-x) unlimited

又看了看,/etc/security/limits.conf

view sourceprint?01 oracle  soft    nproc   2047 

02 oracle  hard    nproc   16384 

03 oracle  soft    nofile  1024 

04 oracle  hard    nofile  65536 

05 oracle  soft    memlock  12582912 

06 oracle  hard   memlock  12582912 

07   

08 grid  soft    nproc   2047 

09 grid  hard    nproc   16384 

10 grid  soft    nofile  1024 

11 grid  hard    nofile  65536 

12 grid  soft    memlock  12582912 

13 grid  hard   memlock  12582912 

14   

15 mysql soft    nproc  500 

16 mysql hard    nproc  500 

17 mysql soft    nofile  1024 

18 mysql hard    nofile  65536 

19 mysql soft    memlock  12582912 

20 mysql hard    memlock  12582912

经过分析,怀疑也只有process/file这两个出现资源紧张的概率比较大.. 因此就先ps -ef 看系统中该用户的进程数量..

view sourceprint?1 [root@dbmain ~]# ps -ef | grep mysql 

2 root      4733     1  0 10:30 ?  00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/dbmain.pid 

3 mysql     4788  4733  0 10:30 ?  00:00:04 /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --log-error=/var/lib/mysql/dbmain.err --pid-file=/var/lib/mysql/dbmain.pid 

4 root     15171 17507  0 13:26 pts/2    00:00:00 mysql -uroot -p 

5 root     20792 17163  0 15:30 pts/1    00:00:00 grep mysql

从这个输出,,我们暂时排除nproc超标的可能性.

由此, 就根据此进程的pid进入其proc目录查看当前打开的文件数量..

发现有大量socket的文件连接.. 但是其数量远远未达到文件数的限制, 由此怀疑可能是MySQL的线程也会消耗掉linux系统的nproc基数, 因此尝试调整/etc/security/limits.conf文件的nproc参数的值.

发现调整过后, su – mysql 确实可以成功执行了,,后面又将此参数改回, 重新执行su – mysql,,此问题又再次重现..由此确认,,使用MySQL的系统, 在设置MySQL的参数max_connections之外, 还需要考虑设置/etc/security/limits.conf文件的大小, MySQL是线程模式执行的, 其线程数也会被统计在nproc中, 这可能掩盖或造成对此问题的误判..  

关键词标签:MySQL,数据库,资源不足

相关阅读

文章评论
发表评论

热门文章 10款MySQL数据库客户端图形界面管理工具推荐10款MySQL数据库客户端图形界面管理工具推荐MySQL常用维护管理工具MySQL常用维护管理工具Linux VPS/服务器上轻松导入、导出MySQL数据Linux VPS/服务器上轻松导入、导出MySQL数据MySQL复制的概述、安装、故障、技巧、工具MySQL复制的概述、安装、故障、技巧、工具

相关下载

人气排行 MySQL数据库启动失败1067进程意外终止的解决办法总结Mysql 1045错误解决办法10款MySQL数据库客户端图形界面管理工具推荐MySQL服务器进程CPU占用100%解决办法MySQL导出导入命令的用例MySQL无法启动、无法停止各种解决方法总结三种常用的MySQL建表语句Mysql清空表的实现方法