專案實踐:基於華為CCE環境下Tomcat的關鍵效能指標及監控方法

博為峰網校發表於2022-06-13

CCE是華為公司提供的高度可擴充套件的、高效能的企業級Kubernetes叢集,並能支援Docker容器生態。 加我VX:atstudy-js 回覆“測試”,進入 自動化測試學習交流群~~

CCE可以輕鬆建立和管理多樣化的容器工作負載,並提供容器故障自愈、監控日誌採集、自動彈性擴容等高效運維能力。

Tomcat是一個免費的、開源的、輕量級的Web應用伺服器,支援JavaEE的Servlet和JSP規範以及HTML、JS等靜態資源的處理,既可作為應用伺服器執行Java Web應用,也可作為輕量級Web伺服器使用。

目前Tomcat是雲上Java應用的主流中介軟體,典型應用如下圖所示。

本文通過梳理CCE下Tomcat的關鍵效能指標及監控方法,並總結了典型效能問題的調優思路,希望對雲上應用的調優有所幫助。

調優總體思路

效能調優應從應用整體來分析問題,在排除資料庫端效能問題的前提下,CCE上應用端的調優思路如下:

1、分析應用端架構,從F5、Ingress、pod、Tomcat來逐個排查;

2、F5需關注cpu負載、轉發流量均衡情況及轉發模式,F5 cpu負載過高會影響轉發效能,轉發流量不均衡會導致Ingress流量不均衡,進而導致pod負載不均衡;

3、Ingress需關注 cpu和記憶體使用情況及Ingress轉發流量均衡情況,Ingress

cpu和記憶體異常均可導致應用效能下降,Ingress轉發流量不均衡會導致pod負載不均衡,進而影響流經該交易的響應時間;

4、應用pod需關注cpu、記憶體使用情況及pod的重啟次數,分析pod資源使用的異常情況,利用jstack工具定位CPU利用率高的執行緒堆疊資訊,利用jmap生成的記憶體dump檔案定位會用記憶體大的模組;

5、Tomcat需檢查執行緒池、連線池和JVM堆相關引數的配置和使用情況、GC的頻率和次數,合理設定相關引數。

除此之外,還可以藉助APM工具、全鏈路監控及應用中新增時間戳等方式定位響應時間長的方法。

關鍵效能指標

典型效能問題

pod cpu利用率偏高

問題:效能測試過程中,發現pod cpu利用率偏高,不符合預期。

調優思路:CPU利用率高,需要檢視CPU消耗在User、Sys、Wait的情況。如果CPU User非常高,可以通過top命令檢視哪個執行緒消耗資源高,Java應用可以用jstack看出此執行緒正在執行的堆疊,看資源消耗在哪個方法上。

如果CPU Sys非常高,可以用strace(Linux)看系統呼叫的資源消耗及時間;如果CPU Wait非常高,需考慮磁碟讀寫。

定位Tomcat執行緒堆疊資訊的步驟如下:

1、先通過ps -ef|grep Tomcat檢視程式id;

2、再通過top -Hp 程式id 命令檢視cpu使用率高的執行緒id;

3、將執行緒id轉換為16進位制資料;

4、使用jsack命令檢視cpu使用率高的執行緒堆疊資訊。

JVM堆記憶體使用率較高

問題:某系統效能測試過程中JVM堆記憶體使用率持續升高,超過了閾值。

調優思路:一般若CPU資源消耗正常但監控發現JVM堆記憶體過高一般從幾個角度分析:

一是堆記憶體大小配置過小,未能發揮資源優勢;

二是應用存在死迴圈;

三是應用阻塞,等待佇列不斷增大。

具體排查步驟如下:

1、檢查JVM的Xmx、MaxMetaspaceSize等引數配置;

2、觀察JVM記憶體曲線是否勻速上升,確認應用是否存在死迴圈邏輯;

3、分析故障時點dump記憶體快照。

(1)使用jmap工具生成dump記憶體快照,在堆記憶體使用率較低和較高時分別兩次dump記憶體,對比快照中的記憶體使用情況;

(2)將dump檔案匯出本地,使用jvisualvm等工具分析,或使用JDK自帶的jhat分析,檢視應回收但未回收的記憶體,分析其引用鏈,檢視記憶體未及時回收的原因。

HTTP 502錯誤

問題:某交易在效能測試過程中,出現少量失敗交易,效能測試工具獲取響應報錯為502 Bad Gateway。

調優思路:502表示ingress從後端服務接收到無效的響應,需要檢查ingress的配置和tomcat配置中關於超時的配置項。

檢查ingress超時引數upstream keepalive_timeout和tomcat配置連線超時時間 connectionTimeout,若connectionTimeout<upstream keepalive_timeout,則tomcat的連線會先於ingress斷開,此時ingress轉發http請求到tomcat,tomcat會拒絕,報502錯誤,部分應用調整ingress超時引數值小於tomcat的連線超時引數值,可解決502錯誤。

最後:

可以到我的個人V:atstudy-js,可以免費領取一份10G軟體測試工程師面試寶典文件資料。以及相對應的視訊學習教程免費分享!其中包括了有基礎知識、Linux必備、Mysql資料庫、抓包工具、介面測試工具、測試進階-Python程式設計、Web自動化測試、APP自動化測試、介面自動化測試、測試高階持續整合、測試架構開發測試框架、效能測試等。

這些測試資料,對於做【軟體測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2900335/,如需轉載,請註明出處,否則將追究法律責任。

相關文章