今天生产机器突然无法登录了,正好有一个用top挂着,但是退出top,执行任何命令都报-bash: fork: Cannot allocate memory,但是查看内存还是有很多空闲,然后在百度上查了很多资料,经过在虚拟机上测试,找到了解决办法。

原因是进程数满了,超过了系统设置的默认值

查看最大进程数 sysctl kernel.pid_max

查看所有进程数ps -eLf | wc -l

会发现所有进程数基本快超过系统默认的进程数量了

修改最大进程数后系统即可恢复,无需重启进程。
echo 1000000 > /proc/sys/kernel/pid_max

永久生效
echo "kernel.pid_max=1000000 " >> /etc/sysctl.conf
sysctl -p

参考:https://blog.csdn.net/woshizhangliang999/article/details/66473884

05-11 16:55