k8s pod cpu飙升问题定位方法

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. 进行问题定位并解决

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容