記一次生產環境docker服務CPU飆高排查


今天早上,運維同學發現生產某個服務 CPU 持續飆高,於是開始進行排查:

1、首先使用 top 命令,查看 CPU 占用高的進程,得到進程 ID

  

 

2、根據上一步找到的進程ID,ps -ef | grep [進程ID] 找到對應程序

  

 

3、進入程序對應docker容器

   docker exec -iter [容器ID] /bin/bash

 

4、容器內部使用 top 命令,查看 CPU 占用高的進程,得到進程 ID

  

 

5、根據上一步找到的進程ID,使用 top -Hp [進程ID] 找到進程中 CPU 占用高的線程 ID

   

 

 

 

6、使用 printf %x [線程ID] 輸出線程 ID 的16進制

   

 

 

 

7、使用 jstack [進程ID] | grep [16進制線程ID] -A60 ,查看線程的堆棧日志

 

 

8、根據查看到的日志,發現是 lettuce 線程占用 CPU 過高,昨天晚上上的版本,開啟了 lettuce 自動刷新 Redis 集群拓撲結構的開關,並且設置心跳時間為1秒,應該是這個原因導致的,通知運維把配置開關注釋,CPU 隨后降下來了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM