效能課堂-TPS 瓶頸精準定位
問題反饋
這是一個效能培訓學員反饋的TPS問題
100併發使用者下的負載測試,TPS最大升到570左右,然後跌到400,並且長期保持。加執行緒也不能讓tps再有所增加。
從監聽到的伺服器指標來看,cpu利用率一直處於低迷的狀態,大約只有40%左右。
問題定位
執行 vmstat 1 10
可以觀察到,執行佇列不是很長,iowait不高,沒有swap切換,但是上下文切換和中斷似乎有點偏高
執行mpstat -P ALL 1
可以很明顯的觀察到軟中斷有點偏高,使用者空間的cpu利用率大約是系統空間的兩倍。
接下來 執行 watch -d cat /proc/interrupts
分析一下是什麼導致的軟中斷過高
可以發現中斷頻率最高的兩個網路卡和vmw服務。有可能是網路出現了故障,但是vmw是什麼暫時未知
執行*netstat -n | awk '/tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' *,檢視一下timewait有多少
4900多timewait,但是這似乎也不能說明什麼問題。
接下來重頭戲,需要攔截一下系統程式,看一下系統內部到底在做什麼導致的切換和中斷過高
執行** strace -o strace.log -tt -p 29779**
這條命令生成了一個程式日誌,從日誌裡面可以看出一些問題
1:系統內部寫日誌的時候沒有許可權,出現了反覆讀寫的死迴圈
2:tcp連線超時了
現在問題大致明白了。因為系統反覆寫日誌不成功,導致核心頻繁的上下文切換;因為tcp連線故障導致的系統頻繁中斷
解決問題
1:調整了tcp的keepalive時間,從1200加到了3000
2:增加了tcp緩衝和記憶體共享
3:日誌問題開發暫時不想解決
結果
tcp調整之後,最大tps增加到了650左右,但是還是會掉到420。因為那個上下文切換過快導致了cpu無法正常工作,所以tps無法從根本上提升
相關文章
- 2020.10.6 效能課堂筆記-cpu 瓶頸分析筆記
- 實用技巧:快速定位Zuul的效能瓶頸Zuul
- Linux 磁陣效能瓶頸定位過程Linux
- 2020.10.8 效能課堂筆記-記憶體瓶頸分析筆記記憶體
- 實時監控網路流量,精準辨別網路效能瓶頸
- oracle快速定位資料庫瓶頸Oracle資料庫
- 利用PerfDog分析遊戲效能瓶頸遊戲
- 用 pprof 找出程式碼效能瓶頸
- Chrome執行時效能瓶頸分析Chrome
- wait event監測效能瓶頸AI
- 如何正確定義效能瓶頸
- 宜信資料庫實踐|解讀Oracle AWR效能分析報告,更快定位效能瓶頸資料庫Oracle
- 記-Nodejs埋點服務-定位cpu瓶頸NodeJS
- 效能測試如何定位瓶頸?偶發超時?看高手如何快速排查問題
- 顯示卡瓶頸是什麼,如何識別顯示卡GPU瓶頸並解決以提升PC效能GPU
- 效能測試-服務端瓶頸分析思路服務端
- 漫談前端效能 突破 React 應用瓶頸前端React
- 突破效能瓶頸,實現流程自動化
- LightDB資料庫效能瓶頸分析(一)資料庫
- MySQL 效能優化之硬體瓶頸分析MySql優化
- 資料庫效能監控瓶頸理論資料庫
- 爬蟲之xpath精準定位--位置定位爬蟲
- 影響你網站效能的 5 個瓶頸網站
- 分享發現的一個效能瓶頸問題
- PHP的curl造成效能瓶頸,如何優化?PHP優化
- SQL Server 資料庫 最佳化 效能瓶頸SQLServer資料庫
- 擴充套件jwt解決oauth2 效能瓶頸套件JWTOAuth
- 五個容易錯過的 PostgreSQL 查詢效能瓶頸SQL
- 伺服器IO瓶頸對MySQL效能的影響伺服器MySql
- 使用 sar 和 kSar 來發現 Linux 效能瓶頸Linux
- web效能優化系列之網站瓶頸識別Web優化網站
- 使用vmstat標識linux系統的效能瓶頸Linux
- 前端瓶頸如何打破???前端
- 如何突破前端瓶頸???前端
- 突破獲客瓶頸,這家銀行如何利用資料探勘技術實現精準營銷?
- 利用Windows效能計數器分析軟體產品的效能瓶頸Windows
- oracle資料庫巡檢優化-快速定位資料庫瓶頸Oracle資料庫優化
- Redis效能瓶頸揭秘:如何最佳化大key問題?Redis