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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Arthas 使用的各类方式

發(fā)布時(shí)間:2025/3/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Arthas 使用的各类方式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者 | Montos(一個(gè)在后端道路上摸爬滾打的內(nèi)卷人)
來源|阿里巴巴云原生公眾號(hào)

Arthas 是阿里巴巴開源的 Java 診斷工具。讓我們能夠在線排查項(xiàng)目發(fā)生的問題。除了知道它的存在之外,我們也需要知道我們?nèi)绾稳グ惭b使用它,以便于提高我們?nèi)粘i_發(fā)解決 BUG 的效率。

方案介紹

方案一:本地直接運(yùn)行

往往最簡(jiǎn)單的方法實(shí)際是最有效的,它本身就是一個(gè)可運(yùn)行的程序,所以我們可以直接運(yùn)行即可。

  • 我們可以直接通過官網(wǎng)下載對(duì)應(yīng)的 jar,然后運(yùn)行再進(jìn)行 jar,執(zhí)行對(duì)應(yīng)的命令。

  • 命令如下:

java -jar arthas-boot.jar [option]
  • 演示如下:

方案二:Web Console實(shí)現(xiàn)

我們可以不通過每次進(jìn)入 ssh 中進(jìn)行執(zhí)行程序,我們也可通過 web 方式進(jìn)行訪問操作.通過官網(wǎng)上面的介紹 arthas 的 Web Console,能了解到大致的搭建思路。

  • 通過下載 arthas-tunnel-server。我們可以拿到對(duì)應(yīng)的 arthas 的 server 端。下載完畢之后直接運(yùn)行即可(我是將其在 ECS 上直接運(yùn)行)。

  • 在客戶端對(duì)應(yīng)的啟動(dòng) arthas-boot。并且通過啟動(dòng)參數(shù)附加上 server 的地址(我是將其在本地運(yùn)行)。

  • 選擇對(duì)應(yīng)的進(jìn)程進(jìn)行 attach,會(huì)出現(xiàn)對(duì)應(yīng)的 agent-id,再將其填寫到對(duì)應(yīng)的 server 端 http 頁面中。

  • 最后我們就可以再 server 端進(jìn)行操作,即 Web Console 實(shí)現(xiàn)完成。

方案三:項(xiàng)目依賴

基于 Spring 相關(guān)搭建的項(xiàng)目直接加入依賴(需要對(duì)應(yīng)的環(huán)境支持,例如不能缺少 tools.jar)。

  • SpringBoot 項(xiàng)目依賴:
<dependency><groupId>com.taobao.arthas</groupId><artifactId>arthas-spring-boot-starter</artifactId><version>${arthas.version}</version></dependency>
  • 非 SpringBoot 項(xiàng)目依賴:
<dependency><groupId>com.taobao.arthas</groupId><artifactId>arthas-agent-attach</artifactId><version>${arthas.version}</version></dependency><dependency><groupId>com.taobao.arthas</groupId><artifactId>arthas-packaging</artifactId><version>${arthas.version}</version></dependency>
  • 本地項(xiàng)目啟動(dòng)之后可以直接訪問:
http://127.0.0.1:3658/
  • 當(dāng)然還可以結(jié)合上面介紹的 Web Console。例如配置文件中增加對(duì)應(yīng)的配置信息:
arthas.agent-id=qwejqjnnnunnq arthas.tunnel-server=ws://server地址:7777/ws
  • 演示如下:

以上步驟就是先把 tunnel-server 啟動(dòng),然后本地配置連接 tunnel-server。然后輸入配置的 Id,即可完成對(duì)應(yīng)的調(diào)試。

方案四:容器配置

基于 docker 配置,目前上容器服務(wù)的企業(yè)不在少數(shù)。對(duì)于容器服務(wù),也是可以適用的。將 jar 下載下來之后進(jìn)行 ADD 操作,或者每次通過構(gòu)建 Dockerfile 則會(huì)產(chǎn)生對(duì)應(yīng)含有 arthas 的鏡像文件。

這里介紹下通過 Dockerfile 進(jìn)行構(gòu)建:

FROM openjdk:8-jdk-alpine ADD target/*.jar app.jar # copy arthas COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas RUN apk add --no-cache tini ENTRYPOINT ["/sbin/tini", "--"] CMD ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] MAINTAINER Montos 1367654518@qq.com

上述是通過構(gòu)建 Dockerfile 來完成的,這里就直接將鏡像文件貼出來,這里是將當(dāng)前 arthas 中的文件復(fù)制到對(duì)應(yīng)的容器中,之后我們可以通過 exec -it 進(jìn)入執(zhí)行,步驟和方法一類似。

總結(jié)

通過上面的介紹,其實(shí)我更推薦使用 Web 接入的方式更好,原因如下:

  • 在服務(wù)直接部署在服務(wù)器上或者 ECS 云服務(wù)器情況下。我們可以直接運(yùn)行在對(duì)應(yīng)的 client 端,但是我們?nèi)绾紊系礁鱾€(gè)服務(wù)所在的服務(wù)器上?通過跳板機(jī)?那么我們是不是操作的時(shí)候會(huì)有可能對(duì)應(yīng)服務(wù)器造成影響,直接連接服務(wù)器上是肯定不行的。

  • 服務(wù)在所運(yùn)行的 pod 情況下。此時(shí)讓你連接服務(wù)是影響是比上面的情況會(huì)小很多,如果發(fā)生影響也只是影響到當(dāng)前運(yùn)行的 pod。但是如果你想直接連接 pod,那么需要的將對(duì)應(yīng)的 pod 端口需要映射到對(duì)應(yīng)的宿主機(jī)上,然后再提供外部訪問 ecs 的鏈接。這樣會(huì)使得每次 pod 需要映射出去的端口需要一定的規(guī)則,無疑是加大了運(yùn)維等工作,運(yùn)行則也消耗了當(dāng)前的資源(訪問頁面等等則走 http 接口請(qǐng)求,如果通過 ws 連接,減少 7 層方面消耗)。

  • 如果通過上述方法,那么我們可以再一臺(tái)機(jī)器上運(yùn)行 server 即可,我們每次訪問都通過訪問 server 去連接到到對(duì)應(yīng)的 client 端,同時(shí)對(duì)應(yīng)的 agent-id 可以指定,我們可以每次 pod 進(jìn)行 client 運(yùn)行的時(shí)候指定當(dāng)前的 agent-id,讓其與當(dāng)前的 pod 進(jìn)行一個(gè)綁定,便于我們通過 server 進(jìn)行連接。

當(dāng)然上述觀點(diǎn)仁者見仁智者見智。以上介紹了幾種部署以及運(yùn)行 arthas 的方法,企業(yè)可以根據(jù)當(dāng)前的項(xiàng)目架構(gòu)選擇合適的部署進(jìn)行解決。為什么需要????就因?yàn)槟軒椭_發(fā)解決問題,不需要來回發(fā)版!

歡迎登陸 start.aliyun.com 知行動(dòng)手實(shí)驗(yàn)室體驗(yàn) Arthas 57 個(gè)動(dòng)手實(shí)驗(yàn):https://start.aliyun.com/handson-lab/#!category=arthas

Arthas 實(shí)驗(yàn)預(yù)覽

為了讓更多開發(fā)者開始用上 Arthas 這個(gè) Java 診斷神器,Arthas 社區(qū)聯(lián)合 JetBrains 推出 Arthas 有獎(jiǎng)?wù)魑幕顒?dòng):聊聊這些年你和 Arthas 之間的那些事兒?;顒?dòng)仍在火熱進(jìn)行中,點(diǎn)擊即可參與,歡迎大家踴躍投稿,參與即有可能獲獎(jiǎng)!

總結(jié)

以上是生活随笔為你收集整理的Arthas 使用的各类方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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