天天看点

fork Cannot allocate memory 问题背景排查方案解决方案

作者:枫凡

问题背景

fork Cannot allocate memory 问题背景排查方案解决方案

执行 经常会遇到 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

继续阅读