一:配置环境: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文件 |
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