上篇文章A-Ops性能火焰圖——適用於雲原生的全棧持續性能監測工具分享了A-Ops性能火焰圖的特性。
本文將分享基於A-Ops性能熱點火焰圖進行性能診斷的2個實際案例,介紹如何使用火焰圖快速定位系統或者應用的性能問題,加深大家對A-Ops火焰圖特性的理解。
案例1
雲原生場景下Java類應用性能問題診斷
1. 場景及案例介紹
某Kafka producer客户端Java應用版本升級後性能出現下降,性能從222W TPS下降到65W TPS,吞吐量從337MB/s下降到95.9MB/s,如下圖所示(為了便於比較,在不同POD裏同時啓動升級前後的兩個應用):
可見,Kafka 客户端應用的性能出現了明顯的下降,但此時Kafka服務端較輕載,CPU 0.7%,內存16.8%,説明性能劣化是由於客户端應用的問題導致。Kafka服務端資源情況如下:
2. 性能問題診斷
通過升級前後的火焰圖比較可以看出,升級後的CPU性能主要消耗在字符串format處理函數上。對於Kafka生成端應用,一般存在大量字符串操作,而字符串處理函數format性能較低,與StringBuilder方法相比有幾倍甚至幾十倍的性能差距,可見字符串format函數是導致性能降低的主要原因。
案例2
CPU抖動類性能故障診斷案例
1. 場景及案例介紹
在生產環境中經常會遇到一些偶發性的CPU抖動問題,這會對應用的性能造成一定的影響,但由於沒有必然的規律,故障發現及問題定位比較難。
2. 性能問題診斷
為了模擬上述偶發性的故障,我們通過iperf打流注入2分鐘的故障,然後從多個角度分析故障注入前後火焰圖的數據,進而對CPU抖動類性能故障進行診斷。
在10:36-10:38通過 iperf3注入2分鐘的流量,命令如下:
iperf3 -c 192.168.122.115 -p 5201 -i 10 -t 120 -P 100 -N -M 100 -b 10000M
流量注入前後,系統應用指標及火焰圖如下圖所示:
從上圖可見,流量注入期間,CPU使用率從平均22%升高到33%,應用性能從232w tps下降到215w tps,火焰圖中iperf3進程對CPU的佔用為8.96%。
我們可以通過火焰圖比較視圖進一步分析這個問題,下圖左邊的火焰圖是注入故障前的火焰圖,右邊為注入故障期間的火焰圖,對比可以看到故障注入期間多個iperf3這個進程。
另外,我們還可以通過火焰圖diff視圖來分析這個問題,參考下圖,火焰圖紅色部分為故障注入期間新增加的進程,進而可以定位到iperf3是造成這次CPU抖動以及應用性能劣化的根因。
通過A-Ops性能熱點火焰圖,開發者和維護者可以很方便地預測潛在問題和定位已發生問題。
安裝A-Ops性能熱點火焰圖
gala-ops是針對雲基礎設施灰度故障的應用級/系統級在線診斷工具,火焰圖探針stackprobe集成在其中的gala-gopher組件內,用户只需一鍵安裝gala-gopher後,在配置文件中開啓或關閉火焰圖探針即可使用。
A-Ops安裝部署手冊:
https://gitee.com/Vchanger/a-...
gala-gophe組件安裝部署説明:
https://gitee.com/openeuler/g...
歡迎大家使用A-Ops性能熱點火焰圖,也歡迎大家交流和反饋意見