排查壓測接口時,應用出現sys_cpu 使用率過高的問題


  •  項目背景

  公司為縮減服務器成本,需要對WMS系統服務器CPU核數進行縮容,需要在新的服務器上對核心接口及主要業務流程進行壓測,評測新服務器上的應用是否滿足預期性能指標

  • 測試場景

   4級、5級掃碼接口混合場景

  • 測試環境

 應用

 配置

 數量

 MCS(單實例,其它應用混合部署)

 16C/64G/SAS Raid10

 1

 Mysql

 16C/128G/SSD Raid5

 1

 壓力機

 16C/64G/SAS Raid10

 1

 

  • 網絡環境

  公司內網

  • 問題描述

  Jmeter壓測時,應用負載波動很大,持續幾十秒鍾之后,使用user使率下降到個位數,sys使用率突然上升到90%以上

  • 問題排查

  1. 查看應用日志並沒有報錯異常
  2. 查看Mysql資源使用率(一直不高)
  3. 降低並發數,問題仍然存在,只不過user使用率下降周期變長,sys使用率仍然飆到90%
  4. Dump應用線程,發現大量線程都在Waiting狀態

  5. 增加Tomcat連接池到1000,問題仍然存在

  6. strace查看應用進程發現有 Connection time out的錯誤

  7. 通過步驟6的線索,查看應用端口連接狀態,發現有2w多的timeout狀態的連接。

 看到這就知道問題所在了,如果客戶端的並發量持續很高,會出現大量處於timewait狀態的連接,會使服務器因端口資源不足而拒絕為一部分客戶端請求。修改內核參數之后問題解決,修改內容如下:

 sysctl -w net.ipv4.tcp_tw_reuse

 sysctl -w net.ipv4.tcp_tw_recycle=1

 sysctl -w net.ipv4.ip_local_port_range="2048 65000"

 


免責聲明!

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



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