Fork: Cannot allocate memory 錯誤訊息分析及修復

在排定每日執行兩次的 Shell Script 中,執行到一半就自行中斷了。手動執行時產生 “Fork: Cannot allocate memory” 錯誤訊息 ,檢查記憶體沒有不足的現象,判定不可能是記憶體不足產生的。在使用 Google 大神後把問題鎖定在執行中的Linux 環境中有過多程序,超過 Pid max 限制後執行程序無法被正常執行。

查看設定值

方法一:
cat /proc/sys/kernel/pid_max

方法二:
#sysctl kernel.pid_max
kernel.pid_max = 32768

解決方案

在確認目前的進程數量限制值,透過下列指令暫時修改參數值來恢復系統正常及確認問題點。

echo 1000000 > /proc/sys/kernel/pid_max

在確認修改後可以正常執行,使用下列指令來永久修改。

echo "kernel.pid_max=10000000 " >> /etc/sysctl.conf
sysctl -p

註記:
64位系統上pid_max最大值為2^22,32位系統上最大值為32768。

參考來源

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端