下午,同事在linux应用服务器重启tomcat的时候,一直启动不起来,后来用free命令查看系统资源的时候发现swap的free资源是0,(下图是问题处理之后的情况)
于是就想着查看下到底是哪些进程在占用资源,用如下命令进行查看
linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合:
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
linux下获取占用内存资源最多的10个进程,可以使用如下命令组合:
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
结果发现:占用内存资源最多的几个进程全部是tomcat的进程,于是用命令kill -9 进程号,把所有tomcat的进程全部干掉,swap资源释放,重启tomcat之后系统正常。
经过原因分析发现,应该是同事在执行新tomcat关闭脚本sh shutdown.sh命令的时候tomcat没有关闭成功,结果他又执行了sh startup.sh命令去重启tomcat,发现没有启动成功,他又执行了几次,结果导致tomcat启了很多进程,最终将内存资源耗尽。为了避免这个问题,要求项目组在启动tomca的时候一定要确定tomcat进程关闭之后,才能去启动tomcat。我们的步骤如下:
1、先执行 #sh shutdown.sh 命令
2、#ps -ef|grep java 查看tomcat进程是否存在
3、如果存在,则执行#kill -9 进程号,对tomcat进程强制杀掉
2、#ps -ef|grep java 查看tomcat进程是否存在
3、如果存在,则执行#kill -9 进程号,对tomcat进程强制杀掉
4、执行 #sh startup.sh