Linux
/etc/security/limits.conf 軟 nproc 限制似乎被忽略
我的 MongoDB 數據庫在負載下遇到問題,日誌中出現以下錯誤:
[initandlisten] pthread_create failed: errno:11 Resource temporarily unavailable [initandlisten] can't create new thread, closing connection
我得出的結論是,我需要提高 1024 的“ulimit -u”或“Max processes”設置,並且在啟動 Web 前端的情況下,使用量可能已經超過了(不知道如何檢查) .
我編輯了 /etc/security/limits.conf 以添加最後兩行(前兩行已經存在):
* soft nofile 350000 * hard nofile 350000 * soft nproc 30000 * hard nproc 30000
然後我重新啟動了系統(順便說一句,我應該這樣做,還是應該重啟 mongod 服務就足夠了?)
重新啟動後,查看 mongod 程序的程序限制,似乎軟限制已被忽略:
$ cat /proc/2207/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 8388608 unlimited bytes Max core file size 0 unlimited bytes Max resident set unlimited unlimited bytes Max processes 1024 30000 processes Max open files 350000 350000 files Max locked memory 65536 65536 bytes Max address space unlimited unlimited bytes Max file locks unlimited unlimited locks Max pending signals 273757 273757 signals Max msgqueue size 819200 819200 bytes Max nice priority 0 0 Max realtime priority 0 0 Max realtime timeout unlimited unlimited us $ whoami mongod $ 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) 273757 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 350000 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 1024 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
根據 /etc/security/limits.conf 文件,我預計硬限制和軟限制的“最大程序”都將是 30000,但只有硬限制是。
我究竟做錯了什麼?
我在 AWS EC2 上執行 Amazon Linux。
bash-4.1$ cat /etc/*-release Amazon Linux AMI release 2012.09
檢查文件 /etc/security/limits.d/90-nproc.conf 因為這可能會覆蓋您的設置。我去年寫過這個完全相同的問題http://scott.cm/max-processes-1024-limits-conf/
您可以嘗試在啟動 mongodb 數據庫的腳本開頭更改 ulimit 值。
子程序從呼叫程序繼承資源限制。