基於 PTS 壓測輕鬆玩轉問題診斷

2022-09-18 22:39:09 字數 3297 閱讀 9782

效能測試 pts(performance testing service)是具備強大的分布式壓測能力的 saas 壓測平台,可模擬海量使用者的真實業務場景,全方位驗證業務站點的效能、容量和穩定性。

在不斷的對被壓服務端水位進行摸高的過程中,我們可以從壓測檢視或者壓測報告中看到較為全面的壓測指標,例如 qps、rt、tps 等,但是單純從這些指標上,是不能很快的定位到服務端具體問題所在的,例如,我們從全場景錯誤資訊中心可以看到錯誤碼對應的介面的響應體,但是具體在下游的哪一環節出錯,以及錯誤的堆疊是什麼,這裡單純從報告中是看不到的,而介面下游具體是**出錯,錯誤堆疊是什麼,正是使用者所關心的問題。

借助問題診斷,我們可以明確被壓介面的上下游的呼叫情況,同時,從鏈路檢視上,我們可以看到整條鏈路所經過的訊息元件(kafka、rocketmq 等)、快取(redis、mongodb 等)、資料庫(mysql、oracle 等)、rpc 呼叫(feign、dubbo、httpclient 等),例如,某個介面出現狀態碼異常或者其他的錯誤,那麼,我們可以從呼叫鏈上看到到底是 rpc 呼叫出現問題,還是資料庫讀寫出現問題,並且能夠從呼叫鏈上看到對應的報錯堆疊,在這些資訊的基礎上,問題應該去**定位也就比較明確了。

談到問題診斷,使用者主要關心接入問題診斷是否需要對應用側**做一系列的改造,是否需要進行繁雜的配置等等。pts 提供的問題診斷是基於 j**aagent 的,無需使用者側做業務**改造,對於基於 tomcat 的部署方式,使用者只需在啟動指令碼中新增一些必要的引數即可接入問題診斷;對於 kubernetes 使用者,使用者只需在 yaml 配置檔案中新增一些必要的註解即可接入問題診斷。對於鏈路的採集規則,pts 會提供預設的配置,使用者也可根據自己的需要自行更改。

pts 整合的問題診斷在壓測過程中,針對每條請求,會在施壓引擎端生成 traceid,通過 traceid 將該條請求所涉及到的上下游鏈路關聯起來,使用者可以看到從該條請求作為入口到本條請求結束所涉及到的完整呼叫鏈,同時,問題診斷會針對該呼叫鏈生成相應的應用拓撲檢視,可以讓使用者清晰地看到應用之間的呼叫關係。

針對異常的介面,我們可以在呼叫鏈中看出對應的錯誤原因,同時,使用者可以根據具體的報錯堆疊對服務端的問題進行排查和優化。壓測過程中使用者可以實時的檢視指定請求的呼叫鏈,同時,壓測結束之後,也可以從壓測報告中對問題進行回溯。

1、零**侵入:針對 j**a 型別的服務,使用者側無需進行業務側**改造即可完成問題診斷的探針接入。

2、整合度高:壓測、監控、問題診斷,整合在同一控制台,使用者理解和操作成本相對較低。

3、監控指標全:在壓測過程中,除了較為基礎的監控指標外,同時針對每個服務,提供介面、機器、應用級別的監控。

4、門檻低:僅需要簡單配置引數即可完成問題診斷探針接入,同時該探針還具備多協議 mock、全鏈路壓測等功能。

接入問題診斷的基本流程圖如下所示:

首先,我們將被壓場景所涉及到的應用梳理出來,將涉及到的所有應用按照【問題診斷】->【探針接入[1]】文件中的步驟進行問題診斷探針接入。我們可以在 pts 控制台的應用配置或者應用監控、介面監控、機器監控中任選乙個來檢視應用探針是否接入成功。我們本次演示的壓測場景涉及到五個應用,分別是 petstore-web、petstore-user、petstore-order、petstore-catalog、petstore-cart,這以應用監控舉例來檢視應用是否成功接入。依次點選 pts 控制台的【問題診斷】->【應用監控[2]】->選擇我們配置的 region 以及 namespace,如果看到壓測場景涉及到的所有應用均在該頁面,則代表應用接入成功。

然後,我們在 pts 控制台的【壓測中心】->【建立場景[3]】中建立壓測場景,這裡可以選擇 pts 場景或者 jmeter 場景等,這裡以 pts 場景為例,因為本次演示主要是驗證問題診斷的能力,所以需要在場景配置中的【高階設定】中開啟問題診斷開關。具體的監控採集規則,pts 會為使用者推送預設採集開關開啟的配置,同時,將取樣率設定為千分之一,使用者也可根據自己的需要進行自定義。

完成了以上步驟,我們的壓測場景即具備了問題診斷的能力。當我們點選開始壓測之後,可以到應用監控、介面監控、機器監控中選擇我們關心的服務檢視對應的監控情況,這裡以應用監控[2]為例,其他型別的監控操作步驟類似,我們選擇 petstore-user 這個服務來檢視應用監控,如下圖所示:

壓測結束後,我們需要從壓測報告中針對被壓服務端的問題進行排查,開啟對應場景的壓測報告,具體步驟:pts 控制台->【壓測中心】->【報告列表[4]】,選擇對應的壓測報告,可以從概覽頁中看到全場景的資訊,具體如下圖所示:

點選【檢視取樣日誌】,取樣型別選擇」探針取樣「即可過濾出問題診斷探針所採集到的呼叫鏈,具體如下圖所示:

從呼叫棧中可以看到具體的報錯原因,從而對服務端**進行優化和修復。同時,可以通過應用拓撲檢視和資料庫檢視檢視服務之間的呼叫情況以及資料庫使用情況,這裡以應用拓撲檢視舉例,如下圖所示:

問題診斷呼叫鏈路中的常見錯誤碼進行總結,具體如下:

[1] 探針接入

[2] 應用監控

[3] 建立場景

[4] 報告列表

基於 PTS 壓測輕鬆玩轉問題診斷

簡介 效能測試 pts performance testing service 是具備強大的分布式壓測能力的 saas 壓測平台,可模擬海量使用者的真實業務場景,全方位驗證業務站點的效能 容量和穩定性。效能測試 pts performance testing service 是具備強大的分布式壓測能...

基於 PTS 壓測輕鬆玩轉問題診斷

簡介 效能測試 pts performance testing service 是具備強大的分布式壓測能力的 saas 壓測平台,可模擬海量使用者的真實業務場景,全方位驗證業務站點的效能 容量和穩定性。效能測試 pts performance testing service 是具備強大的分布式壓測能...

阿里雲SLB壓測PTS的取樣日誌上有大量的503

問 為什麼pts的取樣日誌上有大量的503,但是後端伺服器上確沒有相關資訊?答 如果壓測的介面錯誤中有很多 503,同時滿足以下的現象 解決辦法 公升級 pts 資源包。pts 9.9 元資源包由於成本原因只有乙個發起源 ip,只要是 628 及以上資源包即可享有最大 70個及以上 源ip。使用 i...