91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Arthas的trace命令排查線上服務平均響應時間太長問題

發布時間:2021-07-27 11:12:27 來源:億速云 閱讀:732 作者:chen 欄目:云計算

本篇內容主要講解“如何使用Arthas的trace命令排查線上服務平均響應時間太長問題”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何使用Arthas的trace命令排查線上服務平均響應時間太長問題”吧!


 

前言

最近線上環境某個接口服務響應時間偏長,導致用戶體驗超差,那平時該怎么快速的排查這類問題呢?

  • 為代碼添加上詳細的打印日志;不建議,一是線上環境,沒法隨便的重新部署更換了詳細日志的代碼,二是 添加詳細的日志輸出,那就意味這會生成大量的日志文件,這些日志文件會占據大量服務器磁盤空間。
  • 搭建一個模擬了線上環境的測試環境進行復盤排查;額,出現了這種問題哪有那么多的時間讓你進行環境復盤排查,所以此方案也是 不建議的 。
  • 線上診斷神器 Arthas ,這個工具是阿里開源的,專門用于線上環境問題排查的,這個工具提供了很多的命令用來排查問題;當出現上面的響應時間偏長的問題,就可以使用 Arthas 提供的trace命令進行排查,使用這個工具的 trace 命令可以統計到方法中整個調用鏈路上的所有性能開銷和追蹤調用鏈路,查找其中耗時比較長的方法再具體排查即可。

本文接下來將從兩方面展開:

  • 搭建模擬線上服務接口響應時間偏長的環境;SpringBoot 服務接口 +  JMeter 模擬服務接口調用;
  • 使用診斷神器 Arthas 提供的命令 trace 命令進行響應時間偏長的問題排查;

下面我們先模擬線上環境:利用 SpringBoot 項目搭建,并且編寫好服務接口;

注意:服務接口代碼為了簡便,只寫了 一些大循環的代碼 來模擬較長的耗時;除此之外,實際上還包含很多多其它常見的情況,例如:

  • 服務接口方法中存在很多的  JDBC 操作 ,并且由于數據庫中數據量太大,導致很多的 JDBC 查詢非常耗時,并且此時可能由于還沒有創建合適的索引,導致查詢耗時更加的長,最終導致服務接口響應時間偏長;
  • 此服務接口中調用了 其它的服務接口 ,由于內部調用的其它服務接口出現問題等,導致此其它服務接口執行耗時比較長,進而導致服務接口響應時間偏長;

服務接口代碼如下:

如何使用Arthas的trace命令排查線上服務平均響應時間太長問題  

test1、test2方法如下:

如何使用Arthas的trace命令排查線上服務平均響應時間太長問題  

第二步 JMeter 模擬用戶調用的測試腳本配置:

如何使用Arthas的trace命令排查線上服務平均響應時間太長問題  

第三步服務接口 SpringBoot 代碼 和 JMeter 測試腳本的所在項目位置:

如何使用Arthas的trace命令排查線上服務平均響應時間太長問題  

服務接口代碼準備好后,使用IDEA開發工具等方式將其導出為 Jar 包 。

為了模擬最為真實的線上環境,需將準備好的 服務接口 Jar 包放到 服務器中,然后使用命令 java -jar *.jar 運行起 Jar 包;然后使用 JMeter 進行接口的調用,在 聚合報告 中發現平均響應時間偏長;如圖:

如何使用Arthas的trace命令排查線上服務平均響應時間太長問題  

如果有用戶反映某功能響應時間太長了,別著急,根據下面的方法進行排查,絕對方便又快速的找到問題原因。

Arthas 問題排查:

  • 首先需要下載阿里開源的Arthas 的診斷工具 Jar 包:arthas-boot.jar;然后將 Jar 包放到 部署服務接口項目的服務器中 。
  • 然后使用 ps 命令,查詢出當前運行服務接口的程序進程號;例如:本文章模擬的服務接口程序 Jar 包名稱為 springboot_arthas-1.0.0.jar ,所以命令為:ps -ef | grep springboot_arthas-1.0.0  。
  • 然后運行Arthas 診斷工具,命令:java  -jar  arthas-boot.jar ;開始運行的界面如圖:
如何使用Arthas的trace命令排查線上服務平均響應時間太長問題  

此時診斷工具還沒有運行完,需要手動選擇要診斷/監控的java 進程,并且此工具也會列出全部的java進程號,你只需要輸入 它們最前的序號 [1] 即可;如圖:

如何使用Arthas的trace命令排查線上服務平均響應時間太長問題  

運行完后,可以使用 trace命令 監控服務接口方法中調用的其它方法的耗時;

trace 命令能主動搜索 class-pattern/method-pattern 對應的方法調用路徑,渲染和統計整個調用鏈路上的所有性能開銷和追蹤調用鏈路。

具體命令格式:trace [全限定類名][類中的方法名]

例如:監控本服務接口;com.lyl.controller.TestController : 全限定類名,process:TestController 類中的方法;

具體命令舉例如下所示:

trace com.lyl.controller.TestController process
 

trace 命令執行結果展示,如圖:

如何使用Arthas的trace命令排查線上服務平均響應時間太長問題  
?  

通過trace 命令監控統計的調用鏈路各個方法的執行耗時,可以發現調用的 com.lyl.util.StringUtil 類中的 test2() 方法執行耗時比較大;所以需要特別去查看這個方法的代碼是否存在問題;如果這個代碼中還存在許多的方法調用鏈路,則需要再次使用 trace 命令進行監控調用鏈路的耗時,找出具體可能存在問題的方法。

?  

Arthas 阿里開源的診斷工具還提供了很多的命令供使用,大家可以去查看學習。B站搜“業余草”也可以查看到我之前錄制的視頻教程。

另外這里有兩個需要注意的地方:

  • 使用Arthas 診斷的程序代碼,在打包時 不能混淆 ,否則在使用trace 命令會報 類或方法找不到;
  • 在使用trace命令監控統計時,需要JMeter測試腳本正在運行調用服務接口,如果沒有調用,則統計不到內部調用鏈路的耗時情況;

到此,相信大家對“如何使用Arthas的trace命令排查線上服務平均響應時間太長問題”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平和县| 富裕县| 谷城县| 南澳县| 和平区| 三原县| 长沙县| 鸡泽县| 会泽县| 黄梅县| 扶余县| 宁波市| 工布江达县| 井冈山市| 深泽县| 成安县| 上饶县| 班戈县| 中阳县| 徐汇区| 卢氏县| 吉首市| 海南省| 广宗县| 互助| 广东省| 阳江市| 四会市| 桓台县| 建昌县| 广宗县| 阿图什市| 张掖市| 清涧县| 叙永县| 龙南县| 崇信县| 新野县| 剑河县| 如东县| 宜宾市|