亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Docker容器使用Arthas監(jiān)控Java應(yīng)用的完整指南

 更新時(shí)間:2025年08月22日 08:45:35   作者:荔枝愛編程  
這篇文章主要為大家詳細(xì)介紹了如何在運(yùn)行中的 Docker 容器里,為目標(biāo) Java 進(jìn)程快速注入 Arthas 并進(jìn)行線上診斷,感興趣的小伙伴可以了解一下

為什么要這么做

  • Arthas 支持 JDK 11 及以上版本,本身并不存在“無法直接跟蹤 JDK 11”的問題;問題的根因常出現(xiàn)在容器基礎(chǔ)鏡像過于精簡(jiǎn)。
  • 從 JDK 9 起工具布局與模塊化發(fā)生變化,而許多瘦身鏡像(如 openjdk:*?slim、alpine 變體)常不包含 jcmd 等診斷工具,也沒有隨鏡像提供 jattach,導(dǎo)致無法直接對(duì) JVM 執(zhí)行動(dòng)態(tài) attach;安裝完整 JDK 或額外安裝 jattach 后即可恢復(fù)能力。
  • 另一個(gè)高頻問題是“運(yùn)行 Arthas 的 Java 與目標(biāo) JVM 版本不一致”會(huì)導(dǎo)致 attach 失敗或不穩(wěn)定,建議使用與目標(biāo)進(jìn)程一致或相近版本的 JDK 來運(yùn)行 arthas?boot。

本文演示如何在運(yùn)行中的 Docker 容器里,為目標(biāo) Java 進(jìn)程快速注入 Arthas 并進(jìn)行線上診斷。

步驟 1:進(jìn)入容器并安裝必要工具

# 進(jìn)入正在運(yùn)行的容器
docker exec -it xxx /bin/sh

# 安裝 jattach (用于將 Arthas Agent 注入到目標(biāo) JVM)
apk add --no-cache jattach

# 安裝 JDK (解決 tools.jar 缺失問題,非常重要!)
apk add --no-cache openjdk11-jdk

# 安裝網(wǎng)絡(luò)工具 (用于后續(xù)排查和驗(yàn)證)
apk add --no-cache net-tools iproute2

步驟 2:下載 Arthas

# 下載 arthas-boot.jar
wget https://arthas.aliyun.com/arthas-boot.jar

步驟 3:確認(rèn)目標(biāo) Java 進(jìn)程 PID

# 查看 Java 進(jìn)程,確認(rèn) PID(通常為 1)
ps -ef | grep java

會(huì)看到類似輸出:

1 root 9:33 java -Xms512m ... -jar tiji-risk-prevention.jar

記下 PID,這里是 1。

步驟 4:將 Arthas Agent 注入到目標(biāo) JVM

# 使用 jattach 將 Arthas Agent 加載到 PID 為 1 的 Java 進(jìn)程中
jattach 1 load instrument false /root/.arthas/lib/4.0.5/arthas/arthas-agent.jar

注意:如果 /root/.arthas/ 目錄不存在,先運(yùn)行一次 java -jar arthas-boot.jar 1 來觸發(fā) Arthas 的自動(dòng)下載和解壓。

步驟 5:手動(dòng)啟動(dòng) Arthas 核心服務(wù)(關(guān)鍵步驟)

這一步是解決會(huì)遇到的 Connection refused 問題的關(guān)鍵:

# 手動(dòng)啟動(dòng) Arthas Core 服務(wù),監(jiān)聽 telnet 和 HTTP 端口
java -cp /root/.arthas/lib/4.0.5/arthas/arthas-core.jar \
     com.taobao.arthas.core.Arthas \
     --telnet-port 3658 \
     --http-port 3659 \
     --ip 127.0.0.1 \  # 或者使用 --ip 0.0.0.0 以允許外部訪問
     --pid 1 &

注意:使用 & 讓它在后臺(tái)運(yùn)行。

步驟 6:驗(yàn)證 Arthas 是否成功啟動(dòng)

# 檢查 3658 端口是否在監(jiān)聽
netstat -tlnp | grep 3658

你應(yīng)該看到類似輸出:

tcp6 0 0 127.0.0.1:3658 :::* LISTEN 1/java

步驟 7:連接到 Arthas

現(xiàn)在你可以通過以下任一方式連接:

方式一:使用 arthas-boot.jar (推薦)

# 再次運(yùn)行 arthas-boot.jar,它會(huì)檢測(cè)到端口已監(jiān)聽并直接連接
java -jar arthas-boot.jar 1

步驟 8:開始使用 Arthas 進(jìn)行診斷

連接成功后,你會(huì)看到 Arthas 的歡迎界面:

  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.                           
 /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'                          
|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.                          
|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |                         
`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'                          

wiki        https://arthas.aliyun.com/doc                                         
tutorials   https://arthas.aliyun.com/doc/arthas-tutorials.html                   
version     4.0.5                                                               
...
[arthas@1]$

現(xiàn)在你就可以使用 Arthas 命令來監(jiān)控你的方法了,例如:

# 查找方法
sm *getPatrolTaskTrack*

# 跟蹤方法執(zhí)行耗時(shí)
trace com.yourcompany.service.YourClass getPatrolTaskTrack

# 監(jiān)控方法調(diào)用統(tǒng)計(jì)
monitor com.yourcompany.service.YourClass getPatrolTaskTrack

# 查看方法調(diào)用堆棧
stack com.yourcompany.service.YourClass getPatrolTaskTrack

清理

# 可按需刪除臨時(shí)文件與解壓目錄(路徑因?qū)嶋H解壓位置而異)
rm -f /tmp/arthas-boot.jar
# Arthas 解壓目錄一般位于 ~/.arthas 或 /root/.arthas
rm -rf ~/.arthas || true

參考

Arthas 官方站點(diǎn)與使用指南:arthas.aliyun.com

到此這篇關(guān)于Docker容器使用Arthas監(jiān)控Java應(yīng)用的完整指南的文章就介紹到這了,更多相關(guān)Docker Arthas監(jiān)控Java應(yīng)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker之cAdvisor的安裝使用方式

    Docker之cAdvisor的安裝使用方式

    這篇文章主要介紹了Docker之cAdvisor的安裝使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 基于安裝docker desktop失敗的解決方案

    基于安裝docker desktop失敗的解決方案

    這篇文章主要介紹了基于安裝docker desktop失敗的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • docker容器無法訪問宿主機(jī)端口的解決

    docker容器無法訪問宿主機(jī)端口的解決

    這篇文章主要介紹了docker容器無法訪問宿主機(jī)端口的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Docker容器間通信之BIP使用及配置方式

    Docker容器間通信之BIP使用及配置方式

    Docker使用橋接網(wǎng)絡(luò)(BridgeNetwork)和BIP(BridgeIP)來管理容器之間的網(wǎng)絡(luò)通信,默認(rèn)情況下,Docker會(huì)自動(dòng)創(chuàng)建一個(gè)名為bridge的虛擬網(wǎng)絡(luò)接口,并為每個(gè)容器分配一個(gè)獨(dú)立的IP地址,在/etc/docker/daemon.json文件中可以進(jìn)行自定義配置
    2025-01-01
  • Docker?redmine項(xiàng)目管理工具的使用

    Docker?redmine項(xiàng)目管理工具的使用

    Redmine?是一個(gè)開源的,基于Web的項(xiàng)目管理和缺陷跟蹤工具,本文主要介紹了Docker?redmine項(xiàng)目管理工具的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2022-01-01
  • 利用Dockerfile制作java運(yùn)行環(huán)境的鏡像的方法步驟

    利用Dockerfile制作java運(yùn)行環(huán)境的鏡像的方法步驟

    這篇文章主要介紹了利用Dockerfile制作java運(yùn)行環(huán)境的鏡像的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • Docker安裝運(yùn)行apache2服務(wù)器做圖片服務(wù)器的方法

    Docker安裝運(yùn)行apache2服務(wù)器做圖片服務(wù)器的方法

    這篇文章主要介紹了Docker安裝運(yùn)行apache2服務(wù)器做圖片服務(wù)器的方法,需要的朋友可以參考下
    2017-06-06
  • skywalking容器化部署docker鏡像構(gòu)建k8s從測(cè)試到可用

    skywalking容器化部署docker鏡像構(gòu)建k8s從測(cè)試到可用

    這篇文章主要為大家介紹了skywalking容器化部署docker鏡像構(gòu)建k8s從測(cè)試到可用的構(gòu)建部署過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • Docker Compose一鍵ELK部署的方法實(shí)現(xiàn)

    Docker Compose一鍵ELK部署的方法實(shí)現(xiàn)

    這篇文章主要介紹了Docker Compose一鍵ELK部署的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 解決Docker network Create加--subnet后遇到問題

    解決Docker network Create加--subnet后遇到問題

    這篇文章主要介紹了解決Docker network Create加--subnet后遇到問題。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評(píng)論