第一步,查看服务器所有的启动进程。
命令:top -c
第二步,通过点击“shift+M”,按照内存大小排序;点击“shift+P”,按照CPU大小排序。
在[COMMAND]列找到相同的tomcat进程,可以得到对应的PID。
第三步,利用jstack 命令打印堆栈,把进程中的线程显示出来,并杀死进程。
# 进入/usr/local/jdk1.7.0_80/bin文件夹打印堆栈内容
# jstack在jdk1.8版本中不可用,只能使用在jdk1.7版本中
命令:jstack [PID]
注意:“Attach Listen”是线程名,“daemon”是线程的守护状态。
kill -9 [PID]
第四步,重新启动tomcat7服务。
命令:service tomcat7 start
第五步,上面的操作方法不建议采纳,建议使用下面的方法来解决。
当某个tomcat有多个进程同时存在时,可以使用kill命令杀死这个tomcat的所有进程,这里以tomcat7为例。
命令:kill -9 `ps -ef|grep tomcat7|grep -v grep|awk '{print $2}'`
其中“grep -v grep”是去除包含grep的进程行,避免影响最终数据的正确性。
然后重新启动tomcat7服务。
命令:service tomcat7 start