服务运行一段时间后,接口就无法访问,,接口ping 和telnet ip port都能通,,只有重启Tomcat才能恢复

xiaoxiao2021-02-28  66

一:配置环境:centos7 + redis +docker 起的web服务

现象:服务运行一段时间后,接口就无法访问,,接口ping 和telnet ip port都能通,,只有重启Tomcat才能恢复

遇到这个情况,首先会想到可能jvm内存不足,溢出或者没有被合理gc  ;这时候莫要冲动去一意孤行的设置tomcat调整jvm大小,因为一般情况下,tps不是特别high 默认的配置足够支持并发的

二、操作流程:

1:进去wx-oas 实例容器内 docker-enter wx-oas。 序号 操纵指令指令解释1:进去wx-oas实例容器内docker-enter wx-oas。此操作是因为单个服务实例出现问题能精确定位2:cd到实例usr/local 并进入的jdk/bin目录 下,查看jvm的堆栈信息 3:jps 查看所有java 进程server 。 top -H -p 11是看次pid下面所有的子线程status s表示休眠   4:jstack -l pid 查看为pid的堆栈信息快照,jstack -l pid > info.txt 输出txt文件  从而定位到原来是代码写的bug,没有redis.close,而且更友好的是,人家把哪一行都打印出来了,不是人家tomcat默认的不够哈

ps:把操作过的history贴一下

cd /usr/local/ 86 ls 87 cd jdk1.8.0_121/ 88 ls 89 cd bin/ 90 ls 91 ./jps 92 top 93 ./jps 94 top -H -p 11 95 ls 96 top -H -p 12 97 top -H -p 11 98 ls 99 ./jstack -l 11 >info.txt 100 ./jstack -l 11 >info2.txt 101 ./jstack -l 12 >info3.txt 102 ./jstack -l 12 >info4.txt 103 more info.txt 104 grep 'extracme' info.txt
转载请注明原文地址: https://www.6miu.com/read-2625972.html

最新回复(0)