日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java定位线程阻塞_Arthas - 定位 Java 性能问题原来这么简单

發(fā)布時(shí)間:2023/12/2 java 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java定位线程阻塞_Arthas - 定位 Java 性能问题原来这么简单 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄:

一、Arthas 介紹

二、Arthas 使用場景

三、Arthas怎么使用

四、Arthas 定位性能問題

定位Java代碼導(dǎo)致占用CPU高的問題

線程死鎖

前言:

在做性能測試的過程中,當(dāng)遇到Java性能問題,比如CPU飆升,負(fù)載突高,內(nèi)存溢出等問題,需要一個(gè)個(gè)命令輸入,比如jstack,jmap,top。最終才能一步步定位到問題,有時(shí)還不能定位到問題,而通過arthas可以很快的定位到問題

一、Arthas 介紹

Arthas 是 Alibaba 在 2018 年 9 月開源的 Java 診斷工具。支持 JDK6+, 采用命令行交互模式,提供 Tab 自動不全,可以方便的定位和診斷線上程序運(yùn)行問題。

Arthas 官方文檔十分詳細(xì),本文也參考了官方文檔內(nèi)容,同時(shí)在開源在的 GitHub 的項(xiàng)目里的 Issues 里不僅有問題反饋,更有大量的使用案例,也可以進(jìn)行學(xué)習(xí)參考。

二、Arthas 使用場景

主要的場景如下:

1、是否需要一個(gè)全局視角來查看系統(tǒng)的運(yùn)行狀況?

2、系統(tǒng) CPU 升高了,到底是哪里占用了 CPU?

3、運(yùn)行的多線程有死鎖嗎?有阻塞嗎?

4、有什么方法可以監(jiān)控到 JVM 的實(shí)時(shí)運(yùn)行狀態(tài)?

三、Arthas 怎么使用

1、安裝

可以在官方 GitHub 上進(jìn)行下載,也可以在國內(nèi)的碼云 Gitee 下載。

GitHub 下載

或者 Gitee 下載

打印幫助信息

Java -jar arthas-boot.jar -h

2、運(yùn)行

從上面下載的 jar 包來看,可以直接用 Java -jar 命令運(yùn)行

運(yùn)行方式有如下兩種:

方式 1:先運(yùn)行,再選擇 Java 進(jìn)程 pid

[root@localhost data]# Java -jar arthas-boot.jar

[INFO] arthas-boot version: 3.3.3

[INFO] Found existing Java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.

[1]: 15585 arthas-boot.jar

[2]: 18095 org.apache.catalina.startup.Bootstrap

輸入[]里面的數(shù)字,回車

另外一種方式,運(yùn)行時(shí)選擇 Java 進(jìn)程 pid:

備注:查看運(yùn)行的 Java 進(jìn)程信息

[root@localhost ~]# Java -jar arthas-boot.jar 18095

看到如下信息,就說明啟動成功了

3、常用命令

4、退出

[arthas@18888]$ shutdown

四、Arthas 定位性能問題

1、全局監(jiān)控

使用 dashboard?可以實(shí)時(shí)顯示線程,內(nèi)存,GC,運(yùn)行環(huán)境信息

2、定位 Java 代碼導(dǎo)致占用 CPU 高的問題

在 jmeter 里面跑性能測試場景,在聚合報(bào)告里面,可以看到響應(yīng)時(shí)間越來越高

查看系統(tǒng)資源使用情況,輸入:top

可以看到 cup 占用已經(jīng) 99% 以上了

在 arthas 里面輸入如下命令,查看 CPU 使用率 TOP N 的線程

[arthas@18888]$ thread -n 5

備注:這里有一個(gè)問題,當(dāng)用 jmeter 發(fā)起請求的時(shí)候,線程會啟動很多,輸入 dashboard?或 thread,不會查看到單個(gè) CPU 占用很高,只能用這種 thread -n N 的方式,顯示線程棧的執(zhí)行情況

這些代碼導(dǎo)致的性能問題:

3、線程死鎖

可以從 dashboard 的輸出中,看到有 BLOCKED 狀態(tài)的線程

再輸入如下命令:thread 線程 id

或者直接輸入:

[arthas@20917]$ thread -b

總結(jié)

以上是生活随笔為你收集整理的java定位线程阻塞_Arthas - 定位 Java 性能问题原来这么简单的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。