老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

Java用Arthas排查生產(chǎn)環(huán)境的方法

本篇內(nèi)容介紹了“Java用Arthas排查生產(chǎn)環(huán)境的方法”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括敘州網(wǎng)站建設(shè)、敘州網(wǎng)站制作、敘州網(wǎng)頁制作以及敘州網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,敘州網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到敘州省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

前言

Arthas 是Alibaba開源的Java診斷工具。在線排查問題,無需重啟;動態(tài)跟蹤Java代碼;實(shí)時(shí)監(jiān)控JVM狀態(tài)。對分秒必爭的線上異常,Arthas可幫助我們快速診斷相關(guān)問題。

下載安裝

下載Arthasarthas-boot.jar

wget https://alibaba.github.io/arthas/arthas-boot.jar

下載arthas之后,先來了解幫助信息,可以通過java -jar arthas-boot.jar -h命令查看,這里給出了一些例子和參數(shù)說明

[root@izwz94a0v1sz0gk4rezdcbz arthas]# java -jar arthas-boot.jar -h
[INFO] arthas-boot version: 3.1.4
Usage: arthas-boot [-h] [--target-ip ] [--telnet-port ]
       [--http-port ] [--session-timeout ] [--arthas-home ]
       [--use-version ] [--repo-mirror ] [--versions] [--use-http]
       [--attach-only] [-c ] [-f ] [--height ] [--width
       ] [-v] [--tunnel-server ] [--agent-id ] [--stat-url
       ] [pid]

Bootstrap Arthas

EXAMPLES:
  java -jar arthas-boot.jar 
  java -jar arthas-boot.jar --target-ip 0.0.0.0
  java -jar arthas-boot.jar --telnet-port 9999 --http-port -1
  java -jar arthas-boot.jar --tunnel-server 'ws://192.168.10.11:7777/ws'
  java -jar arthas-boot.jar --tunnel-server 'ws://192.168.10.11:7777/ws'
--agent-id bvDOe8XbTM2pQWjF4cfw
  java -jar arthas-boot.jar --stat-url 'http://192.168.10.11:8080/api/stat'
  java -jar arthas-boot.jar -c 'sysprop; thread' 
  java -jar arthas-boot.jar -f batch.as 
  java -jar arthas-boot.jar --use-version 3.1.4
  java -jar arthas-boot.jar --versions
  java -jar arthas-boot.jar --session-timeout 3600
  java -jar arthas-boot.jar --attach-only
  java -jar arthas-boot.jar --repo-mirror aliyun --use-http
WIKI:
  https://alibaba.github.io/arthas

Options and Arguments:
 -h,--help                      Print usage
    --target-ip          The target jvm listen ip, default 127.0.0.1
    --telnet-port        The target jvm listen telnet port, default 3658
    --http-port          The target jvm listen http port, default 8563
    --session-timeout    The session timeout seconds, default 1800
                                (30min)
    --arthas-home        The arthas home
    --use-version        Use special version arthas
    --repo-mirror        Use special maven repository mirror, value is
                                center/aliyun or http repo url.
    --versions                  List local and remote arthas versions
    --use-http                  Enforce use http to download, default use https
    --attach-only               Attach target process only, do not connect
 -c,--command            Command to execute, multiple commands separated
                                by ;
 -f,--batch-file         The batch file to execute
    --height             arthas-client terminal height
    --width              arthas-client terminal width
 -v,--verbose                   Verbose, print debug info.
    --tunnel-server      The tunnel server url
    --agent-id           The agent id register to tunnel server
    --stat-url           The report stat url
                           Target pid

啟動

啟動arthas之前,先啟動一個(gè)springboot的應(yīng)用。該demo在地址https://github.com/yangtao...

java -jar ytao-springboot-demo.jar

啟動arthas-boot.jar命令

java -jar arthas-boot.jar

這里注意需要啟動demoarthas使用同一權(quán)限用戶,否則使用attach機(jī)制獲取不到進(jìn)程信息(這里剛使用時(shí)沒注意,遇到過這個(gè)問題)。 例:root用戶啟動 demou1用戶啟動arthas時(shí),打印信息 Can not find java process. Try to pass in command line. Java用Arthas排查生產(chǎn)環(huán)境的方法

查看源碼,在獲取進(jìn)程之后,添加日志輸出。結(jié)果為空,返回-1,判斷結(jié)果小于0時(shí),直接退出。 Java用Arthas排查生產(chǎn)環(huán)境的方法

啟動類Bootstrap#main的代碼 Java用Arthas排查生產(chǎn)環(huán)境的方法

進(jìn)程工具類ProcessUtils#select的代碼 Java用Arthas排查生產(chǎn)環(huán)境的方法

通過上面也分析到,我們啟動arthas之前,必須要先啟動我們的目標(biāo)進(jìn)程,否則arthas可能無法啟動。

使用root用戶啟動成功界面 Java用Arthas排查生產(chǎn)環(huán)境的方法

選擇java進(jìn)程,這里我們的ytao-springboot-demo是 1,選擇后會有連接信息

[INFO] arthas home: /root/.arthas/lib/3.1.4/arthas
[INFO] Try to attach process 22005
[INFO] Attach process 22005 success.
[INFO] arthas-client connect 127.0.0.1 3658
  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.                           
 /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'                          
|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.                          
|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |                         
`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'                          
                                                                                

wiki      https://alibaba.github.io/arthas                                      
tutorials https://alibaba.github.io/arthas/arthas-tutorials                     
version   3.1.4                                                                 
pid       17339  
time      2019-10-17 02:29:06

dashboard 數(shù)據(jù)面板

使用dashboard命令,可以查看線程,內(nèi)存,GC,以及Runtime信息 Java用Arthas排查生產(chǎn)環(huán)境的方法

jad 反編譯

有時(shí)我們會遇到線上代碼運(yùn)行結(jié)果不是我們期望的結(jié)果,有種情況就是線上代碼不是我們想要的版本,但是要查看的話,需要下載后再進(jìn)行反編譯。 這時(shí)arthasjad可以幫助我們線上進(jìn)行即時(shí)反編譯,確認(rèn)代碼是否符合我們的版本。

jad com.ytao.service.UserServiceImpl

Java用Arthas排查生產(chǎn)環(huán)境的方法

watch 函數(shù)執(zhí)行信息

使用watch命令可以查看函數(shù)的執(zhí)行信息。watch的參數(shù)列表(來自官網(wǎng))

參數(shù)參數(shù)說明
class-pattern類名表達(dá)式匹配
method-pattern方法名表達(dá)式匹配
express觀察表達(dá)式
condition-express條件表達(dá)式
[b]在方法調(diào)用之前觀察
[e]在方法異常之后觀察
[s]在方法返回之后觀察
[f]在方法結(jié)束之后(正常返回和異常返回)觀察
[E]開啟正則表達(dá)式匹配,默認(rèn)為通配符匹配
[x:]指定輸出結(jié)果的屬性遍歷深度,默認(rèn)為 1

當(dāng)我們遇到線上數(shù)據(jù)bug時(shí),我們一般處理的手段就是開發(fā)環(huán)境模擬線上數(shù)據(jù),從生產(chǎn)日志中查找線索,再或者遠(yuǎn)程debug。以上不管哪種排查手段,相對都是比較麻煩。 這時(shí)Arthas的watch可以幫助我們查看實(shí)時(shí)的代碼執(zhí)行情況。使用觀察表達(dá)式可以查看函數(shù)的參數(shù),返回值,異常信息。觀察表達(dá)式主要由OGNL表達(dá)式組成,所以可以編寫OGNL表達(dá)式來執(zhí)行。

觀察表達(dá)式的變量

變量變量說明
params函數(shù)的入?yún)?/td>
returnObj函數(shù)的返回值
throwExp異常信息
target當(dāng)前對象

查看一個(gè)函數(shù)的入?yún)⒑头祷刂?/p>

watch com.ytao.service.UserServiceImpl getUser "{params,returnObj}"

Java用Arthas排查生產(chǎn)環(huán)境的方法

打印信息isEmpty=false;size=1可以看到參數(shù)為非空,參數(shù)數(shù)量為一個(gè)。查看具體入?yún)⑿畔?/p>

watch com.ytao.service.UserServiceImpl getUser "{params[0],returnObj}"

Java用Arthas排查生產(chǎn)環(huán)境的方法

查看異常信息

watch com.ytao.service.UserServiceImpl getUser "throwExp"

當(dāng)我們傳入一個(gè)參數(shù)為-1時(shí),打印出我們定義的非法參數(shù)異常 Java用Arthas排查生產(chǎn)環(huán)境的方法

watch除了觀察表達(dá)式外,還能使用條件表達(dá)式,以及觀察事件點(diǎn)注意使用觀察事件點(diǎn)時(shí),有些觀察表達(dá)式的變量不一定存在,比如使用-b時(shí),返回值和異常信息都為空。 Java用Arthas排查生產(chǎn)環(huán)境的方法

有時(shí)我們排查某個(gè)函數(shù),不能馬上獲取到函數(shù)的信息,arthas給提供的后臺異步任務(wù)可以幫助我們記錄日志。使用方式和Linux的類似。

watch com.ytao.service.UserServiceImpl getUser "{params,returnObj}" > /log/w.log &

查看異步保存的日志 Java用Arthas排查生產(chǎn)環(huán)境的方法

tt 定位異常調(diào)用

上面所介紹的watch可以排查函數(shù)的調(diào)用情況,比較適用在已知當(dāng)次調(diào)用可能存在的情況后,查看信息。如果一個(gè)函數(shù)調(diào)用n次后,有幾次為執(zhí)行異常,我們要去找出這些異常的調(diào)用,在watch中排查就不怎么方便了。 使用tt命令可以較方便查看異常的調(diào)用及信息。對com.ytao.service.UserServiceImpl#getUser的函數(shù)查看,-t是每次調(diào)用該函數(shù)都會記錄

tt -t com.ytao.service.UserServiceImpl getUser

記錄信息 Java用Arthas排查生產(chǎn)環(huán)境的方法

查看所有記錄

tt -l

查看指定函數(shù)記錄

tt -s 'method.name=="getUser"'

輸出信息說明

表格字段字段解釋
INDEX時(shí)間片段記錄編號,每一個(gè)編號代表著一次調(diào)用,后續(xù)tt還有很多命令都是基于此編號指定記錄操作,非常重要。
TIMESTAMP方法執(zhí)行的本機(jī)時(shí)間,記錄了這個(gè)時(shí)間片段所發(fā)生的本機(jī)時(shí)間
COST(ms)方法執(zhí)行的耗時(shí)
IS-RET方法是否以正常返回的形式結(jié)束
IS-EXP方法是否以拋異常的形式結(jié)束
OBJECT執(zhí)行對象的hashCode(),注意,曾經(jīng)有人誤認(rèn)為是對象在JVM中的內(nèi)存地址,但很遺憾他不是。但他能幫助你簡單的標(biāo)記當(dāng)前執(zhí)行方法的類實(shí)體
CLASS執(zhí)行的類名
METHOD執(zhí)行的方法名

從上面參數(shù)中我們看到1003調(diào)用是以拋異常的形式結(jié)束,因?yàn)?code>tt會記錄每次調(diào)用的信息,所以我們可以查看1003的詳細(xì)信息

tt -i 1003

Java用Arthas排查生產(chǎn)環(huán)境的方法

trace 查看調(diào)用鏈路

我們常會遇到調(diào)用某個(gè)api時(shí)rt過長,我們就要找出調(diào)用鏈上的某個(gè)或幾個(gè)函數(shù)進(jìn)行優(yōu)化,我們通常定位幾個(gè)可能的錨點(diǎn),打印各個(gè)錨點(diǎn)間的rt。或者從日志中找出日志打印的時(shí)間點(diǎn)計(jì)算出時(shí)間差,不管使用哪種方法都比較繁瑣。當(dāng)使用arthastrace命令可以輕松的完成我們的需求。 trace參數(shù)說明

參數(shù)參數(shù)說明
class-pattern類名表達(dá)式匹配
method-pattern方法名表達(dá)式匹配
condition-express條件表達(dá)式
[E]開啟正則表達(dá)式匹配,默認(rèn)為通配符匹配
[n:]命令執(zhí)行次數(shù)
#cost方法執(zhí)行耗時(shí)

使用trace輸出com.ytao.controller.UserController#getUser的信息

trace com.ytao.service.UserServiceImpl getUser

輸出結(jié)果 Java用Arthas排查生產(chǎn)環(huán)境的方法

在實(shí)際使用使用排查過程中,為了減少無用信息的輸出,我們一般會使用#cost過濾耗時(shí)不長和jdk自帶的函數(shù),可以忽略的調(diào)用,減少信息的輸出。例如:過濾掉小于1ms的調(diào)用

trace com.ytao.service.UserServiceImpl getUser  '#cost > 1'

redefine 實(shí)現(xiàn)熱部署

當(dāng)我們查找出bug,想要快速上線拯救蒼生的時(shí)候,Arthas為我們準(zhǔn)備了redefine命令來實(shí)現(xiàn)熱更新。 盡管現(xiàn)在都在倡導(dǎo)jad/mc/redefine熱更一條龍,但是線上代碼建議本地編譯好后再進(jìn)行替換,避免手誤操作。 首先先在UserServiceImpl中添加一行代碼 Java用Arthas排查生產(chǎn)環(huán)境的方法

獲取classLoaderHash,通過sc命令獲取類的信息

sc -d *UserServiceImpl

Java用Arthas排查生產(chǎn)環(huán)境的方法

執(zhí)行redefine修改的類

redefine -c 1d56ce6a /usr/local/jar/UserServiceImpl.class

通過打印的信息驗(yàn)證是否更新UserServiceImplJava用Arthas排查生產(chǎn)環(huán)境的方法

Arthas的使用,除了上文中所講解到的,還有一些其他的診斷功能,這只是我個(gè)人使用的方法。但是使用該類工具一定要有套組合拳,對排查問題過程中,遇到問題有對應(yīng)的排查手段,并非盲目排查。

“Java用Arthas排查生產(chǎn)環(huán)境的方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


分享標(biāo)題:Java用Arthas排查生產(chǎn)環(huán)境的方法
分享URL:http://www.xueling.net.cn/article/jjcpdh.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 7788色淫网站免费 | 亚洲AV无码国产成人 | 亚洲ΑV在线观看天堂无码 国产97成人亚洲综合在线观看 | 亚洲成人网在线 | 色七七午夜影院 | 夜秀91九色成人蝌蚪porny | 久久久99精品免费观看 | 亚洲高清国产拍精品影院 | av在线中文在线 | 亚洲国产av无码精品 | 国产三级Av一区二区三区 | 亚洲妇女水蜜桃AV网网站 | 亚洲视频在线观看一区 | 精品久久久久久久久久久 | 久久久国产AV | 视频在线观看一区二区 | 亚洲AV无码国产精品久久 | 亚洲人成人网站在线观看 | 欧美xxx视频| 本日xxxx | 日韩一区二区三区中文字幕 | 成人国产午夜在线观看 | 亚洲国产日韩美 | 小草毛片 | 四虎影院wwww| 久久久精品国产sm调教网站 | 国产亚洲精品久久网站 | 国产精品偷伦视频免费观看了 | 国产免费拔擦拔擦8x高清在线人 | 激情五月av久久久久久久 | 黄色片免费视频 | 内谢少妇xxxxx8老少交 | www.伊人 | 欧美精品一区二区蜜臀亚洲 | 久久青青草原国产精品最新片 | 久久人人爽亚洲精品天堂 | 国产成人福利在线观看 | 人妻人妻人人人 | 欧美日韩综合一区 | 欧美激情性久久 | 91看片在线?看视频 国产日韩欧美色图 |