springboot怎么殺進程_線上服務平均響應時間太長,怎么排查?

線上服務平均響應時間太長,怎么排查?

https://xie.infoq.cn/article/914b5c56000a3880016abd8d6

前言:

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

文章接下來將從兩方面展開:①、搭建模擬線上服務接口響應時間偏長的環境;SpringBoot 服務接口 + JMeter 模擬服務接口調用;②、使用診斷神器 Arthas 提供的命令 trace 命令進行響應時間偏長的問題排查;模擬線上環境:1、SpringBoot 項目搭建,并且編寫好服務接口;

注意:服務接口代碼為了簡便,只寫了 一些大循環的代碼 來模擬較長的耗時;除此之外,實際上還包含很多多其它常見的情況,例如:①、服務接口方法中存在很多的 JDBC 操作 ,并且由于數據庫中數據量太大,導致很多的 JDBC 查詢非常耗時,并且此時可能由于還沒有創建合適的索引,導致查詢耗時更加的長,最終導致服務接口響應時間偏長;②、此服務接口中調用了 其它的服務接口 ,由于內部調用的其它服務接口出現問題等,導致此其它服務接口執行耗時比較長,進而導致服務接口響應時間偏長;

服務接口代碼如下:



test1、test2方法如下:

597bebaad3b07fa95660fee35e1238b6.png



2、JMeter 模擬用戶調用的測試腳本配置:



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



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

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



如果有用戶反映某功能響應時間太長了,別著急,根據下面的方法進行排查,絕對方便又快速的找到問題原因。Arthas 問題排查:1、首先需要下載阿里開源的Arthas 的診斷工具 Jar 包,下載地址:arthas-boot.jar ;然后將 Jar 包放到 部署服務接口項目的服務器中 。2、然后使用 ps 命令,查詢出當前運行服務接口的程序進程號;例如:本文章模擬的服務接口程序 Jar 包名稱為 springboot_arthas-1.0.0.jar ,所以命令為:ps -ef | grep springboot_arthas-1.0.0 。3、然后運行Arthas 診斷工具,命令:java -jar arthas-boot.jar ;開始運行的界面如圖:

5550544889fe9d79f5b8303d68081c7b.png



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

d80d8f939dc823819aea3dcf6601bd29.png



4、運行完后,可以使用 trace命令 監控服務接口方法中調用的其它方法的耗時;trace 命令能主動搜索 class-pattern/method-pattern 對應的方法調用路徑,渲染和統計整個調用鏈路上的所有性能開銷和追蹤調用鏈路。具體命令格式:trace [全限定類名][類中的方法名] 例如:監控本服務接口;com.lyl.controller.TestController : 全限定類名,process:TestController 類中的方法;具體命令:trace com.lyl.controller.TestController process 5、trace 命令執行結果展示,如圖:

0cd15f796a5d5d94f72650c75ffaa31f.png



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

Arthas 阿里開源的診斷工具還提供了很多的命令供使用,大家可以去查看學習,地址:命令列表 。

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



能力有限,只能整理這么多,有不對的地方歡迎指出,討論

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455042.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455042.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455042.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis學習第五課:Redis Set類型及操作

Set是集合,它是string類型的無序集合。set是通過hash table實現的,添加、刪除和查找的復雜度都是O(1)。 對集合我們可以取并集、交集、差集。通過這些操作我們可以實現SNS中的好友推薦和blog的tag功能。 Set集合操作: sadd:向名稱為Key的set中…

MPEG音視頻編解碼之MP3編解碼概述

2 MP3編解碼原理 2.1 MP3音頻壓縮標準概述 MP3全稱是動態影像專家壓縮標準音頻層面3(Moving Picture Experts Group Audio Layer III)。是當今較流行的一種數字音頻編碼和有損壓縮格式,它設計用來大幅度地降低音頻數據量,而對于…

Python實現GitBook工具

寫在前面 本工具是通過Python腳本實現 GitBook 自動 生成 執行 編譯 發布的功能 你可以在這里下載exe 使用 1. exe下載,并移動位置 將exe文件放在你的gitbook文件夾中,或者放在空文件夾中 2. file.md 創建 名為file.md的文件,在你要寫book的目錄下 注意: 這里file.md文件名…

shell腳本中用到的條件和循環語句

本博文介紹一下shell腳本中常用的條件和循環語句:條件語句:循環語句:示例:if語句:eg1.eg2.2.case語句:簡單的case語句:配合循環的case語句:3.for語句:簡單的for語句&…

BZOJ 2243 染色(樹鏈剖分好題)

2243: [SDOI2011]染色 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 7971 Solved: 2990[Submit][Status][Discuss] Description 給定一棵有n個節點的無根樹和m個操作,操作有2類: 1、將節點a到節點b路徑上所有點都染成顏色c; 2、詢問…

processing動態代碼大全_做一張動態海報需要多少步?

人們習慣性地把程序員跟設計師分成兩種不同性質的人,好像程序員就不會有美感,設計師邏輯思維就一定會很弱,但最近幾年我們發現越來越多的程序員學設計,設計師學編程的跨界故事。新媒體藝術家,邱偉豪也是其中一員&#…

【ffmpeg for wince】音視頻編解碼多平臺移植(for window/wince)

from: http://www.cnblogs.com/windwithlife/archive/2009/05/31/1492728.html 終于完成了了第二個Client side原型(for Wince),其中花掉我最多時間的就是ffmpeg的對WINCE的移植。其中有大半時間是由于網上的一些不完整及不正確信息所誤導,…

python實現猴子爬山算法

猴子爬山一只頑猴在一座有N級臺階的小山上爬山跳躍。上山時需從山腳至山頂往上跳N級臺階&#xff0c;一步可跳1級&#xff0c;或跳3級&#xff0c;求上山有多少種不同的跳法&#xff1f; &#xff08;N<50&#xff09; 問題分析: 每一次都可以選擇1,2,3有3種跳法 方法1 直…

指針版 單鏈表復習

#include <bits/stdc.h> #define P pair<int,int> using namespace std;typedef long long LL;typedef struct LNode{int data;struct LNode *nxt; }LNode,*LinkList;bool Linklist_init(LinkList &root){root new LNode; ///分配頭結點&#xff0c;指針域為空…

手寫springboot_Spring Boot 入門教程 | 圖文講解

目錄一、Spring Boot 是什么二、為什么要使用 Spring Boot三、快速入門3.1 創建 Spring Boot 項目3.2 項目結構3.3 引入 Web 依賴3.4 編寫第一個接口3.5 啟動程序&#xff0c;驗證效果四、總結五、GitHub 示例代碼一、Spring Boot 是什么以下截圖自 Spring Boot 官方文檔&#…

lunix 安裝python3

Linux下默認系統自帶python2.6的版本&#xff0c;這個版本被系統很多程序所依賴&#xff0c;所以不建議刪除&#xff0c;如果使用最新的Python3那么我們知道編譯安裝源碼包和系統默認包之間是沒有任何影響的&#xff0c;所以可以安裝python3和python2共存 首先去python官網下載…

手機音視頻應用開發(專注于Symbian、iPhone、Android等跨平臺音視頻應用開發方案)

一款好的手機應用&#xff0c; 能讓用戶在第一分鐘就愛上他&#xff0c; 一款爛的手機應用&#xff0c; 能讓用戶在第一分鐘就要卸載它。 好的應用必須的穩定、快速。市場日益激勵&#xff0c;一個項目的周期是一個漫長的過程&#xff0c;投入的時間、精力、費用。一筆龐大的預…

Colemak布局的實現 Window+Linux+Android

Colemak布局的實現 WindowLinuxAndroid title: ‘Colemak布局的實現’ subtitle: ‘一個極客的鍵盤布局’ tags: entertainment solution 前言 大部分同學使用的鍵盤布局都是QWERTY布局 而科學研究表明,可能這個設計不是最高效率的布局,甚至的有意為了降低打字的效率而研究的…

機器學習之樸素貝葉斯法

轉載請注明出處&#xff1a;http://www.cnblogs.com/Peyton-Li/ 樸素貝葉斯法是機器學習模型中一個比較簡單的模型&#xff0c;實現簡單&#xff0c;比較常用。 是定義在輸入空間上的隨機向量&#xff0c;是定義在輸出空間上的隨機變量。是和的聯合概率分布。訓練數據集由獨立同…

如何讓梯形變成平行四邊形_開放的課堂 創新的天地——平行四邊形的面積教學片段與反思...

一、 課題的確定學生在三年級學過長方形、正方形的面積計算&#xff0c;經歷過從數方格的辦法得出面積計算公式的過程。因此&#xff0c;學生對于面積計算公式的推導有一定的經驗和知識基礎。基于上述考慮&#xff0c;我想完全放手讓學生去研究如何計算平行四邊形的面積。這對學…

bzoj1670【Usaco2006 Oct】Building the Moat 護城河的挖掘

1670: [Usaco2006 Oct]Building the Moat護城河的挖掘 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 387 Solved: 288[Submit][Status][Discuss]Description 為了防止口渴的食蟻獸進入他的農場&#xff0c;Farmer John決定在他的農場周圍挖一條護城河。農場里一共同擁有N(8…

音視頻編解碼的一些源代碼

音視頻編解碼的一些源代碼 &#xff08;轉&#xff09;資料名稱&#xff1a;音視頻編解碼的一些源代碼 資料成文時間&#xff1a;不詳 語言&#xff1a;英文 頁數&#xff1a;很多 何人所著&#xff08;來源&#xff09;&#xff1a; 文件格式&#xff1a;原代碼 開發工具:vc 說…

Vue之組件之間的數據傳遞

Vue的組件作用域都是孤立的&#xff0c;不允許在子組件的模板內直接引用父組件的數據&#xff0c;必須使用特定的方法才能實現組件之間的數據傳遞。 下列為在vue-cli創建項目中的操作 一父組件向子組件傳遞數據 在Vue中&#xff0c;用props向子組件傳遞數據。 子組件部分&#…

偶然發現一個大佬寫的 React 腳手架,叫Moderate, 用起來很方便

發現一個大佬寫的 React 腳手架&#xff0c;叫Moderate, 用起來很方便 Moderate&#xff0c;意思為適中的&#xff0c;適度的&#xff0c;用這個作為代號&#xff0c;主要取決于他的本名“中用”&#xff0c;其一以貫之的想法就是中庸&#xff0c;秉承著以人為本的態度&#xf…

案例 自動辦公_1300張辦公系列前臺參考圖,請您查收!

設計情報局室內設計師的靈感聚集地關注一個有格調的空間必定有一處高顏值的前臺漂亮的前臺很重要...是空間給人的第一印象一個獨一無二的前臺設計還可以提升整個空間的氣質與逼格連個漂亮的前臺都沒有作為顏控界扛把子的設計師們還怎么混&#xff1f;SO今天小編給大家帶來一份《…