摘要:本文主要通過實例講解如何通過gs_cpuwatcher.sh 腳本尋找CPU占用高語句。 本文分享自華為雲社區《GaussDB(DWS) gs_cpuwatcher.sh 腳本如何尋找CPU占用高語句》,作者:fighttingman。 【工具名稱】 gs_cpuwatcher 【功能描述】 ...
摘要:本文主要通過實例講解如何通過gs_cpuwatcher.sh 腳本尋找CPU占用高語句。
本文分享自華為雲社區《GaussDB(DWS) gs_cpuwatcher.sh 腳本如何尋找CPU占用高語句》,作者:fighttingman。
【工具名稱】
gs_cpuwatcher
【功能描述】
1.尋找集群內節點占用CPU高的語句
【使用場景】
- CPU sys使用率高
- 業務整體慢
【參數說明】
無
【使用方法】
- 直接後臺執行命令
nohup sh gs_cpuwatcher.sh > cpuwatcher.log 2>&1 &
執行之前註意事項:
- 使用omm用戶(線下)或者Ruby用戶(線上)執行
- 將腳本放到一個磁碟空間充足的目錄執行,防止把磁碟空間占滿,腳本監控會產生日誌,占用磁碟空間,磁碟空間最好大於20G
- 監控完之後kill這個監控進程,防止忘記這個腳本造成監控日誌一直上漲,腳本預設保留3天的日誌
- 腳本只有在進程的cpu使用率大於100(多核累加和)的時候才會進行查詢cpu高的語句

【最佳實踐&結果分析】
執行監控命令之後,檢查當前目錄生成的監控日誌

查看日誌cpu_watch_xxx.log日誌,裡邊有記錄占用CPU高的語句

日誌裡邊記錄了cpu占用高的語句,例如上圖中select * from pg_class a, pg_class,腳本預設截取sql的前50個字元,可以對截取字元串進行修改,需要修改腳本

欄位解釋:
- dur :執行時長
- start:sql的起始時間
- state_change:sql狀態改變時間
- usename:用戶名稱
- datname:連的資料庫名稱
- query_id:sql的唯一標識id
- pid:線程id
- client_addr:客戶端連的ip
- state:sql的執行狀態
- lwtid:線程小號
- wait_status:等待視圖中的等待狀態欄位
- substr:sql欄位