海外一台服务器凌晨就开始出现了不能登录游戏。早上运营人员告知上服务器查看了下。
一打命令就界面提示 -bash: fork: Cannot allocate memory
输入了几次top 出来了才出来了,一看也还有内存剩余的。
想看看其他命令都查看不到,只能让运营方控制台上重启服务器先。
就着查看有关这样提示的问题
重启之后查看有关进程和线程,发现jdk的线程一直在增加,应该是这个一直只增不放导致了超过系统默认的kernel.pid_max=32678
只有找研发去优化代码。
系统这边也只能先把kernel.pid_max调高些。
查看最大进程数 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
参考:pid max导致fork: Cannot allocate memory 的分析及解决办法 https://blog.csdn.net/onlyellow/article/details/51917757
参考:-bash: fork: Cannot allocate memory 问题的处理 https://blog.csdn.net/woshizhangliang999/article/details/66473884