專案實踐:基於華為CCE環境下Tomcat的關鍵效能指標及監控方法
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- LoadRunner監控Unix、Windows方法及常用效能指標Windows指標
- SDN控制器關鍵效能指標及測試方法—Vecloud指標Cloud
- 基於 Prometheus 的監控系統實踐Prometheus
- 深入理解Prometheus: Kubernetes環境中的監控實踐Prometheus
- Tomcat的下載及環境變數配置Tomcat變數
- Java生產環境效能監控與調優—基於JDK命令列工具的監控JavaJDK命令列
- 一鍵搭建基於docker的nodejs、php開發環境 (開源專案)DockerNodeJSPHP開發環境
- 前端監控進階篇 — Sentry 監控 Next.js 專案實踐前端JS
- 基於jenkins+kubernetes的cicd流程實踐一:環境搭建及方案原理Jenkins
- 乾貨|EasyMR 基於 Kubernetes 應用的監控實踐
- 華為敏捷專案管理實踐分享敏捷專案管理
- 網易互娛基於 Flink 的支付環境全關聯分析實踐
- 基於 prometheus 的微服務指標監控Prometheus微服務指標
- 案例分享:基於Docker環境下的Jenkins搭建及使用DockerJenkins
- 探索華為雲CCE敏捷版金融級高可用方案實踐案例敏捷
- dmonitor 基於 Django 的輕量級生產環境介面監控平臺Django
- Linux作業系統效能指標監控與通知Linux作業系統指標
- Tomcat7安裝基於jdk 1.7環境TomcatJDK
- jvisualvm遠端監控Linux下的tomcatLVMLinuxTomcat
- 容器雲環境,你們如何監控應用執行情況? ---JFrog 雲原生應用監控實踐
- beta版 tomcat 應用監控指標Tomcat指標
- 【唯實踐】容器環境應用一鍵拉起實踐
- 技術分享 | Linux 環境下針對程式維度的監控實現Linux
- [轉]關於在ULtraEdit環境下把某個字元替換為回車的方法字元
- 最受歡迎的Java web應用伺服器之一——Tomcat監控選型及實踐JavaWeb伺服器Tomcat
- zanePerfor監控系統在高流量專案下的架構配置建議實踐說明架構
- 基於lerna+yarn workspaces的monorepo專案實踐YarnMono
- 揭秘華為如此多成功專案的產品關鍵——Charter模板
- Linux 環境下 PHP 專案基礎執行環境搭建(PHP 7.3.6 + MySQL 8.0.16 + Nginx)LinuxPHPMySqlNginx
- Kubernetes監控實踐
- Node.js環境效能監控Node.js
- 聯調環境快速部署——基於docker-compose的CI/CD實踐Docker
- 花椒前端基於 Docker 的 SSR 持續開發整合環境實踐前端Docker
- 基於Serverless雲函式站點監控的方法Server函式
- 基於雲主機的ModelArts模型訓練實踐,讓開發環境化繁為簡模型開發環境
- 【譯】生產環境下的Node.js——開源監控工具Node.js
- Hive SQL 綜合應用案例實戰及多項效能指標深入講解-DW商業環境實戰HiveSQL指標
- 以Java專案為例,實現Jenkins對接CCE Autopilot叢集JavaJenkins