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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

阿里神器Arthas 3.1.2版本发布,新特性解读

發布時間:2025/3/16 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿里神器Arthas 3.1.2版本发布,新特性解读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Arthas是Alibaba開源的Java診斷工具,深受開發者喜愛。

  • Github:https://github.com/alibaba/arthas

  • 文檔:https://alibaba.github.io/arthas

Arthas 3.1.2版本持續增加新特性,下面重點介紹:

  • logger/heapdump/vmoption/stop命令

  • 通過tunnel server連接不同網絡的arthas,方便統一管控

  • 易用性持續提升:提示符修改為arthas@pid形式,支持ctrl + k清屏快捷鍵

logger/heapdump/vmoption/stop命令

logger命令

查看logger信息,更新logger level

  • https://alibaba.github.io/arthas/logger.html

查看所有logger信息

以下面的logback.xml為例:

<?xml?version="1.0"?encoding="UTF-8"?> <configuration><appender?name="APPLICATION"?class="ch.qos.logback.core.rolling.RollingFileAppender"><file>app.log</file><rollingPolicy?class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern><maxFileSize>100MB</maxFileSize><maxHistory>60</maxHistory><totalSizeCap>2GB</totalSizeCap></rollingPolicy><encoder><pattern>%logger{35}?-?%msg%n</pattern></encoder></appender><appender?name="ASYNC"?class="ch.qos.logback.classic.AsyncAppender"><appender-ref?ref="APPLICATION"?/></appender><appender?name="CONSOLE"?class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%-4relative?[%thread]?%-5level?%logger{35}?-?%msg?%n</pattern><charset>utf8</charset></encoder></appender><root?level="INFO"><appender-ref?ref="CONSOLE"?/><appender-ref?ref="ASYNC"?/></root> </configuration>

使用logger命令打印的結果是:

[arthas@2062]$?loggername???????????????????????????????????ROOTclass??????????????????????????????????ch.qos.logback.classic.LoggerclassLoader????????????????????????????sun.misc.Launcher$AppClassLoader@2a139a55classLoaderHash????????????????????????2a139a55level??????????????????????????????????INFOeffectiveLevel?????????????????????????INFOadditivity?????????????????????????????truecodeSource?????????????????????????????file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jarappenders??????????????????????????????name????????????CONSOLEclass???????????ch.qos.logback.core.ConsoleAppenderclassLoader?????sun.misc.Launcher$AppClassLoader@2a139a55classLoaderHash?2a139a55target??????????System.outname????????????APPLICATIONclass???????????ch.qos.logback.core.rolling.RollingFileAppenderclassLoader?????sun.misc.Launcher$AppClassLoader@2a139a55classLoaderHash?2a139a55file????????????app.logname????????????ASYNCclass???????????ch.qos.logback.classic.AsyncAppenderclassLoader?????sun.misc.Launcher$AppClassLoader@2a139a55classLoaderHash?2a139a55appenderRef?????[APPLICATION]

從appenders的信息里,可以看到

  • CONSOLE logger的target是System.out

  • APPLICATION logger是RollingFileAppender,它的file是app.log

  • ASYNC它的appenderRef是APPLICATION,即異步輸出到文件里

查看指定名字的logger信息

[arthas@2062]$?logger?-n?org.springframework.webname???????????????????????????????????org.springframework.webclass??????????????????????????????????ch.qos.logback.classic.LoggerclassLoader????????????????????????????sun.misc.Launcher$AppClassLoader@2a139a55classLoaderHash????????????????????????2a139a55level??????????????????????????????????nulleffectiveLevel?????????????????????????INFOadditivity?????????????????????????????truecodeSource?????????????????????????????file:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar

更新logger level

[arthas@2062]$?logger?--name?ROOT?--level?debug update?logger?level?success.

heapdump命令

dump java heap, 類似jmap命令的heap dump功能。

  • https://alibaba.github.io/arthas/heapdump.html

dump到指定文件

[arthas@58205]$?heapdump?/tmp/dump.hprof Dumping?heap?to?/tmp/dump.hprof... Heap?dump?file?created

只dump live對象

[arthas@58205]$?heapdump?--live?/tmp/dump.hprof Dumping?heap?to?/tmp/dump.hprof... Heap?dump?file?created

vmoption命令

查看,更新VM診斷相關的參數

  • https://alibaba.github.io/arthas/vmoption.html

查看所有的option

[arthas@56963]$?vmoptionKEY????????????????????VALUE???????????????????ORIGIN?????????????????WRITEABLE ---------------------------------------------------------------------------------------------HeapDumpBeforeFullGC???false???????????????????DEFAULT????????????????trueHeapDumpAfterFullGC????false???????????????????DEFAULT????????????????trueHeapDumpOnOutOfMemory??false???????????????????DEFAULT????????????????trueErrorHeapDumpPath???????????????????????????????????DEFAULT????????????????trueCMSAbortablePrecleanW??100?????????????????????DEFAULT????????????????trueaitMillisCMSWaitDuration????????2000????????????????????DEFAULT????????????????trueCMSTriggerInterval?????-1??????????????????????DEFAULT????????????????truePrintGC????????????????false???????????????????DEFAULT????????????????truePrintGCDetails?????????true????????????????????MANAGEMENT?????????????truePrintGCDateStamps??????false???????????????????DEFAULT????????????????truePrintGCTimeStamps??????false???????????????????DEFAULT????????????????truePrintGCID??????????????false???????????????????DEFAULT????????????????truePrintClassHistogramBe??false???????????????????DEFAULT????????????????trueforeFullGCPrintClassHistogramAf??false???????????????????DEFAULT????????????????trueterFullGCPrintClassHistogram????false???????????????????DEFAULT????????????????trueMinHeapFreeRatio???????0???????????????????????DEFAULT????????????????trueMaxHeapFreeRatio???????100?????????????????????DEFAULT????????????????truePrintConcurrentLocks???false???????????????????DEFAULT????????????????true

查看指定的option

[arthas@56963]$?vmoption?PrintGCDetailsKEY????????????????????VALUE???????????????????ORIGIN?????????????????WRITEABLE ---------------------------------------------------------------------------------------------PrintGCDetails?????????false???????????????????MANAGEMENT?????????????true

更新指定的option

[arthas@56963]$?vmoption?PrintGCDetails?true Successfully?updated?the?vm?option. PrintGCDetails=true

stop命令

之前有用戶吐槽,不小心退出Arthas console之后,shutdown會關閉系統,因此增加了stop命令來退出arthas,功能和shutdown命令一致。

通過tunnel server連接不同網絡的arthas

  • https://alibaba.github.io/arthas/web-console.html

在新版本里,增加了arthas tunnel server的功能,用戶可以通過tunnel server很方便連接不同網絡里的arthas agent,適合做統一管控。

啟動arthas時連接到tunnel server

在啟動arthas,可以傳遞--tunnel-server參數,比如:

as.sh?--tunnel-server?'ws://47.75.156.201:7777/ws'

目前47.75.156.201是一個測試服務器,用戶可以自己搭建arthas tunnel server

  • 如果有特殊需求,可以通過--agent-id參數里指定agentId。默認情況下,會生成隨機ID。

attach成功之后,會打印出agentId,比如:

??,---.??,------.?,--------.,--.??,--.??,---.???,---./??O??\?|??.--.?''--.??.--'|??'--'??|?/??O??\?'???.-' |??.-.??||??'--'.'???|??|???|??.--.??||??.-.??|`.??`-. |??|?|??||??|\??\????|??|???|??|??|??||??|?|??|.-'????| `--'?`--'`--'?'--'???`--'???`--'??`--'`--'?`--'`-----'wiki??????https://alibaba.github.io/arthas tutorials?https://alibaba.github.io/arthas/arthas-tutorials version???3.1.2 pid???????86183 time??????2019-08-30?15:40:53 id????????URJZ5L48RPBR2ALI5K4V

如果是啟動時沒有連接到 tunnel server,也可以在后續自動重連成功之后,通過 session命令來獲取 agentId:

[arthas@86183]$?sessionName???????????Value -----------------------------------------------------JAVA_PID???????86183SESSION_ID?????f7273eb5-e7b0-4a00-bc5b-3fe55d741882AGENT_ID???????URJZ5L48RPBR2ALI5K4VTUNNEL_SERVER??ws://47.75.156.201:7777/ws

以上面的為例,在瀏覽器里訪問 http://47.75.156.201:8080/ ,輸入 agentId,就可以連接到本機上的arthas了。

Arthas tunnel server的工作原理

browser?<->?arthas?tunnel?server?<->?arthas?tunnel?client?<->?arthas?agent

https://github.com/alibaba/arthas/blob/master/tunnel-server/README.md

易用性持續提升

  • 提示符修改為arthas@pid形式,用戶可以確定當前進程ID,避免多個進程時誤操作

    [arthas@86183]$?help
  • 增加ctrl + k清屏快捷鍵

總結

總之,3.1.2版本的Arthas新增加了logger/heapdump/vmoption/stop命令,增加了tunnel server,方便統一管控。另外還有一些bug修復等,可以參考

  • Release Note:?https://github.com/alibaba/arthas/releases/tag/3.1.2

最后,Arthas的在線教程考慮重新組織,歡迎大家參與,提出建議:

  • https://github.com/alibaba/arthas/issues/847

有道無術,術可成;有術無道,止于術

歡迎大家關注Java之道公眾號

好文章,我在看??

新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

總結

以上是生活随笔為你收集整理的阿里神器Arthas 3.1.2版本发布,新特性解读的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。