Centos 出现 -bash: fork: Cannot allocate memory

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xianglingchuan/article/details/85233295

问题描述

临下班的突然收到接口异常消息,立马进入服务器执行命令一直报Cannot allocate memory。

[root@home ~]# ps -ef | grep project
-bash: fork: Cannot allocate memory

[root@home ~]# 
[root@home ~]# apache-tomcat-project/bin/startup.sh 
apache-tomcat-project/bin/startup.sh: fork: Cannot allocate memory

当时背心发凉,什么情况呢,首先查看整台服务器的内存、CPU、流量都比较正常。
搜索发现网上也有很多类似文章。
重启应用服务后,发现重启后的服务线程一直在快速增加,从最初的二千多,慢慢增长到一万多,初步判断是将系统进程最大数占用满后导致。
同时该服务早上被重新部署过,怀疑是添加新的功能导致,恢复到更新前的版本后线程增长正常。

常用命令

1、查看系统最大进程数

sysctl kernel.pid_max

2、查看系统占用最大进程数

ps -eLf | wc -l

修改最大进程数的方法
3、临时修改,系统重启后还原

echo 1000000 > /proc/sys/kernel/pid_max

4、永久修改生效

echo "kernel.pid_max=1000000 " >> /etc/sysctl.conf
sysctl -p

查看tomcat启动多少线程
5、查看tomcat进程ID号

ps -ef | grep <Tomcat名称>

6、统计该tomcat进程内的线程个数

ps -Lf <进程ID> | wc -l

最后排查的原因是项目rabbitmq配置信息错误,导致程序进程一直等待链接中…

猜你喜欢

转载自blog.csdn.net/xianglingchuan/article/details/85233295
今日推荐