作者:楓凡
問題背景

執行 經常會遇到 cannot allocate memory的提示
排查方案
從提示來看,一般會認為是記憶體不足導緻無法給程序配置設定記憶體,這種正常的解法
通過free top指令以及檢視/var/log/message 是否存在oom的記錄
還有一種可能
目前程序Process 比較多,占用Pid也會很多,導緻無法配置設定pid,也會提示Cannot allocate memory
解決方案
\[root@iZ23pddtofdZ \~\]# sysctl \-a \| grep pid_max
kernel.pid_max = 32768
Linux系統有最大pid數量的限制
執行指令 可以檢視到最大pid的數量限制
sysctl kernel.pid_max
預設為32768
如果該值設定比較小,當Pid較多時會影響新的Pid建立,提示Cannot allocate memory
sysctl -w kernel.pid_max=99999 臨時修改pid_max
echo "kernel.pid_max=99999" >> /etc/sysctl.conf 永久修改pid_max
http://docs.alibaba-inc.com/pages/viewpage.action?pageId=401117574