性能測試常見現象之tps波動頻繁定位技巧

前言:前段時間,壓測遇到一個問題,在壓測的時候,tps波動很頻繁。

使用xshell遠程連接到應用服務器,通過top命令看了下服務器資源情況,cpu波動也很頻繁,其它服務器都正常。

打開JvisualVM,雙擊對應的應用進程

在這裏插入圖片描述

然後進入Sampler,在cpu波動的時候點擊cpu進行抽樣

在這裏插入圖片描述

抽樣進行一段時間後(一般1-2分鐘即可),點擊“stop”,然後點擊“snapshot”生成快照

在這裏插入圖片描述

接着按照“Total Time(CPU)”排序,看哪些線程最耗費cpu,因爲我們用的是dubbo框架,所以,我們要分析的業務線程就是DubboServerHandler。分析的時候,我們需要多看幾個DubboServerHandler線程,雙擊指定線程就可以看這個線程的調用棧以及耗時情況,看看這些線程在哪裏比較耗費cpu。

在這裏插入圖片描述
通過分析發現,在Dubbo遠程調用的時候驗證參數的時間比我們處理業務的時間還長。

在這裏插入圖片描述

結合Dubbo官方文檔得知,Dubbo的參數驗證這個特性是比較耗費性能的,而我們的接口參數使用了javax.validation註解來驗證參數。
最終,我們的調優方案是在調用的時候使用validation=“false”,即禁止使用參數驗證這個特性後,tps就平穩多了,且cpu也正常了。
Dubbo官方文檔:http://dubbo.apache.org/zh-cn/docs/user/maturity.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章