1. 使用 docker stats 命令查看本节点容器资源使用情况,对占用CPU很高的容器使用
docker exec -it <容器ID> -n nameSpace bash 进入。
或者执行 kubectl exec -it <容器ID> -n nameSpace bash 进入
2. 在容器内部执行 top 命令查看,定位到占用CPU高的进程ID,使用 top -Hp <进程ID> 定位到占用CPU高的线程ID。
3. 使用 jstack <进程ID> > jstack.txt 将进程的线程栈打印输出
4. 退出容器, 使用 kubectl cp podName:/文件存放路径/文件名 -n nameSpace ./文件存放路径/文件名拷贝至宿主机
5. 将2中占用CPU高的线程ID使用 printf '%x\n' <线程ID> 命令将线程ID转换为十六进制形式。假设线程ID为133,则得到十六进制85。在jstack.txt文件中定位到 nid=0x85的位置,该位置即为占用CPU高线程的执行栈信息。
6. 进行问题定位并解决