排查工具 - Arthas
官方介紹
Arthas 是一款線上監(jiān)控診斷產(chǎn)品,通過全局視角實時查看應(yīng)用 load、內(nèi)存、gc、線程的狀態(tài)信息,并能在不修改應(yīng)用代碼的情況下,對業(yè)務(wù)問題進(jìn)行診斷,包括查看方法調(diào)用的出入?yún)ⅰ惓?,監(jiān)測方法執(zhí)行耗時,類加載信息等,大大提升線上問題排查效率。
安裝
參考官方文檔:https://arthas.aliyun.com/doc/install-detail.html
我的排查過程
設(shè)置Docker容器權(quán)限
這一步很重要,如果docker容器沒有相應(yīng)的權(quán)限,在執(zhí)行Arthas的一些命令時會報錯:
AsyncProfiler error: No access to perf events. Try --fdtransfer or --all-user option or ‘sysctl kernel.perf_event_paranoid=1’
設(shè)置方法
這個設(shè)置方法有很多,還和你啟動容器的方式有關(guān),可以自行百度,我的容器是通過docker-compose.yml進(jìn)行配置并啟動的,配置如下:
version: "3.7"
services:
datain-backend:
image: xxxx:version
privileged: true
ports:
- 8080:8080
啟動容器并獲取容器ID
啟動容器
docker-compose up -d
獲取容器ID
docker ps
進(jìn)入容器
docker exec -it 容器ID /bin/bash
下載Arthas
這個Arthas 是個Jar你可以根據(jù)官方文檔的方法下載,也可以在其它地方下載好上傳到宿主服務(wù)器,再通過掛載目錄的方式將文件弄到docker容器,當(dāng)然最簡單的還是直接下載:
curl -O https://arthas.aliyun.com/arthas-boot.jar
啟動
java -jar arthas-boot.jar
選擇對應(yīng)的Java 服務(wù)
啟動后,會給你列出你容器中的java 服務(wù),你可以輸入對應(yīng)的數(shù)字來選擇
問題排查
- 可以通過生成火焰圖來排查
# 在執(zhí)行分析的時候最好對相應(yīng)的接口進(jìn)行壓測一下,或者自己手動多調(diào)用一下,因為他是靠統(tǒng)計時間點的訪問次數(shù)來分析的
## 啟動打點
profiler start
## 過一會兒,停止
profiler stop
## 停止后會自動生成火焰圖到你的容器根目錄,是個html,你自己想辦法弄到本地來,通過瀏覽器打開
● 火焰圖分析:這個我建議可以去網(wǎng)上看看文章,很容易學(xué)會的
從下到上是方法入棧的順序,你可以找到你要分析的方法,看看他的時間分布,橫向的長短代表耗時比例文章來源:http://www.zghlxwxcb.cn/news/detail-707104.html
- 監(jiān)聽特定方法執(zhí)行棧
# 使用trace命令, 監(jiān)聽com.xxx.server.XXXImpl類 的listTable方法
trace com.xxx.server.XXXImpl listTable
結(jié)果分析:每一步都統(tǒng)計的耗時,根據(jù)耗時情況進(jìn)行優(yōu)化就好了文章來源地址http://www.zghlxwxcb.cn/news/detail-707104.html
到了這里,關(guān)于[Docker Java 服務(wù)]Docker 容器中Java服務(wù)問題排查的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!