作者:枫凡
问题背景
执行 经常会遇到 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