程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> MySQL數據庫資源不足的異常錯誤

MySQL數據庫資源不足的異常錯誤

編輯:更多數據庫知識

執行了一個su – mysql 的命令, 遇到了下面這樣一個錯誤..

[root@dbmain ~]# su - mysql   su: cannot set user id: Resource temporarily unavailable  這是一個Shell中由於資源不足引起的問題, 當時下意識的先運行ulimit,看看ulimit的基本限制.

[root@dbmain ~]# 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) 25600   max locked memory       (kbytes, -l) 32   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) 25600   virtual memory          (kbytes, -v) unlimited   file locks                      (-x) unlimited 又看了看,/etc/security/limits.conf

oracle              soft    nproc   2047   oracle              hard    nproc   16384   oracle              soft    nofile  1024   oracle              hard    nofile  65536   oracle              soft    memlock        12582912   oracle              hard   memlock        12582912   grid              soft    nproc   2047   grid              hard    nproc   16384   grid              soft    nofile  1024   grid              hard    nofile  65536   grid              soft    memlock        12582912   grid              hard   memlock        12582912   mysql             soft    nproc  500   mysql             hard    nproc  500   mysql             soft    nofile  1024   mysql             hard    nofile  65536   mysql             soft    memlock  12582912   mysql             hard    memlock  12582912 經過分析,懷疑也只有process/file這兩個出現資源緊張的概率比較大.. 因此就先ps -ef 看系統中該用戶的進程數量..

[root@dbmain ~]# ps -ef | grep mysql   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   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   root     15171 17507  0 13:26 pts/2    00:00:00 mysql -uroot -p   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中, 這可能掩蓋或造成對此問題的誤判..

*
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved