您好,登錄后才能下訂單哦!
這篇文章主要為大家分析了sys工具箱的示例分析的相關知識點,內容詳細易懂,操作細節合理,具有一定參考價值。如果感興趣的話,不妨跟著跟隨小編一起來看看,下面跟著小編一起深入學習“sys工具箱的示例分析”的知識吧。
線上運行環境有時候會遇到cpu 飆升的場景,一般來講對于多核的虛機,一個常見猝發場景就是高并發導致,核多并發高時,syscall會在鎖這塊 sys 消耗高,當然只有猜測不行,下面就列出了幾個常見捉鬼工具 。
1、nmon promes 分析
尤其是promes ,比較推薦用起來,提供比較立體的系統級別監控
2、perf 分析
perf top -a -G perf top -a -e cs -G perf record -g -p 14778 -e cycles sleep 10 TIPS: perf 采樣界面中按 shift + e 可展開堆棧 shift + c 可折疊 展開 折疊狀態分別截圖 右方向鍵可以下鉆函數查看其上下文(例如屬于哪個lib),左方向鍵返回 最好排在前面的幾個函數都去下鉆截圖
3、系統調用統計
{ top -H -p PID -b -n 1|grep execname|awk '{print $1}'| sed 's/\([0-9]*\)/-p \1/g'|xargs strace -c 2> /tmp/stat & }; sleep 5;pkill strace
4、調用細節
{ top -H -p PID -b -n 1|grep execname|awk '{print $1}'| sed 's/\([0-9]*\)/-p \1/g'|xargs strace -i -v -T 2> /tmp/detail & }; sleep 5;pkill strace
5、sar -wq 1 10
6、vmstat 1 10
7、mpstat -I ALL 1
8、rpm -qa > /tmp/rpms
9、堆棧dump
echo 1 > /proc/sys/kernel/sysrq echo t > /proc/sysrq-trigger
某數據庫系統導數據時,syscpu 會很高
可以看到每到任務運行時間,sys 就會高企,,初步分析,目標機器有16c,根據經驗懷疑是時間耗在并發鎖處理上,但是具體哪部分需要使用perf 線上抓取堆棧
,可以看見sys time 耗在了spinlock 處,是MM 系統的內存壓實整理例程中,結合該數據庫開啟了hugepage 因此初步可以斷定是因為內存過于碎片化,無法滿足巨頁分配,也就是整體看內存高階頁不足
當然伴隨的現象不止這一個,也注意到問題時刻系統的進程創建非常多,高達每秒數百,如下圖
這個與項目組認為的10并發是對不上的,因此的出的綜合結論是
sys高時間主要耗在了內存碎片整理, 主因是內存不足,伴隨現象之一是線程創建多 fork 300-800/s 內存回收多,很多cache 問題時間段回收,得擴內存,動態模型也似乎有問題,不知道fork 那么多進程做什么用
上面的結論看著很模糊,但是提供了比較全面的現場總結,堅定了問題的排查方向,果然,項目組重新梳理代碼后,發現一處高并發場景,修改參數后,問題得以解決
這篇文章主要為大家分析了sys工具箱的示例分析的相關知識點,內容詳細易懂,操作細節合理,具有一定參考價值。如果感興趣的話,不妨跟著跟隨小編一起來看看,下面跟著小編一起深入學習“sys工具箱的示例分析”的知識吧。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。