1:进入容器, docker exec -it 容器名 /bin/bash
2: top 查看 pid, 如图所标为8
3: find / -name jstack , 查看一下自己容器的java目录在哪个位置
4:/usr/lib/jvm/java-8-openjdk-amd64/bin/jstack -l 8 > /opt/busuac.jstack.log
把堆栈日志打到opt目录下
5:日志到手,当然就可以放到copy到宿主机上去,然后再下载到桌面上慢慢分析了,我这里拷贝到了宿主机的opt目录上
到宿主机上打 docker cp pre_dcserver_1:/opt/busuac.jstack.log /opt
6:top -Hp pid 查看线程占用情况
7:发现pid 213的战用CPU挺高的, 把PID换算成16进程,如 213 换算出16进制是 d5
printf “%x\n” 213
8: 去日志里搜索0xd5的相关日志去排查原因, 最后定位到是这个方法getDataDetail里需有问题
收工!