最近有用户偶尔反映部分HTTP接口出现超时问题,但是web服务器的Trace监控并没有出现http返回值503等异常情况,这种情况一般是由Web容器的问题引起。Arthas是阿里巴巴开源的Java诊断工具,非常受开发者欢迎。Github:https://github.com/alibaba/arthas文档:https://alibaba.github.io/arthasArthas3.1.2版本继续增加新特性,重点如下:logger/heapdump/vmoption/stop命令通过tunnelserver连接不同网络的arthas,方便统一管控易用性持续提升:提示改为arthas@pid,支持ctrl+k清屏快捷键。logger/heapdump/vmoption/stop命令logger命令查看logger信息,更新logger级别https://alibaba.github.io/arthas/logger.html查看所有logger信息以下面的logback.xml为例:app.logmylog-%d{yyyy-MM-dd}.%i.txt100MB602GB<编码器>%logger{35}-%msg%n%-4relative[%thread]%-5level%logger{35}-%msg%nutf8使用logger命令打印的结果是:[arthas@2062]$loggernameROOTclassch.qos.logback.classic.LoggerclassLoadersun.misc.Launcher$AppClassLoader@2a139a55classLoaderHash2a139a55levelINFOeffectiveLevelINFOadditivitytruecode源文件:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jarappendersnameCONSOLEclassch.qos.logback.core.ConsoleAppenderclassLoadersun.misc.Launcher$AppClassLoader@2a139a55classLoaderHash2a139a55目标System.out名称APPLICATION类ch.qos.logback.core.rolling.RollingFileAppenderclassLoadersun.misc.Launcher$AppClassLoader@2a139a55classLoaderHash2a139a55fileapp.lognameASYNCclassch.qos.logback.classic.AsyncAppenderclassLoadersun.misc.Launcher$AppClassLoader@2a139a55classLoaderHash2a139a55appenderRef[APPLICATION]从appender信息可以看出CONSOLElogger的目标是系统。outAPPLICATIONlogger为RollingFileAppender,其文件为app.logASYNC,其appenderRef为APPLICATION,即异步输出到文件中查看指定名称的logger信息[arthas@2062]$logger-norg.springframework.webnameorg.springframework.web类ch.qos.logback.classic.LoggerclassLoadersun.misc.Launcher$AppClassLoader@2a139a55classLoaderHash2a139a55levelnulleffectiveLevelINFOadditivitytrue代码源文件:/Users/hengyunabc/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jarupdateloggerlevel[arthas@2062]$logger--nameROOT--leveldebugupdateloggerlevelsuccess.heapdump命令转储java堆,类似jmap命令的堆转储功能转储到指定文件[arthas@58205]$heapdump/tmp/dump.hprofDumpingheapto/tmp/dump.hprof...Heapdumpfilecreatedonlydumpliveobjects[arthas@58205]$heapdump--live/tmp/dump.hprofDumpingheapto/tmp/dump.hprof...Heapdumpfilecreatedvmotion命令查看和更新??VM诊断相关参数https://alibaba.github.io/arthas/vmoption.html查看所有选项[arthas@56963]$vmoptionKEYVALUEORIGINWRITEABLE-----------------------------------------------------------------------------------------HeapDumpBeforeFullGCfalseDEFAULTtrueHeapDumpAfterFullGCfalseDEFAULTtrueHeapDumpOnOutOfMemoryfalseDEFAULTtrueErrorHeapDumpPathDEFAULTtrueCMSAbortablePrecleanW100DEFAULTtrueaitMillisCMSWaitDuration2000DEFAULT真CMSTriggerInterval-1默认值DEFAULTtrue查看指定的选项[arthas@56963]$vmoptionPrintGCDetailsKEYVALUEORIGINWRITEABLE------------------------------------------------------------------------------------------PrintGCDetailsfalseMANAGEMENTtrue更新指定选项[arthas@56963]$vmoptionPrintGCDetailstrueSuccessfullyupdatedthevmoption.PrintGCDetails=trueStopcommand之前用户抱怨,不小心退出Arthas控制台后,shutdown会关闭系统,所以添加了stop命令exitarthas,功能与shutdown命令一致。通过隧道服务器连接不同网络的arthashttps://alibaba.github.io/arthas/web-console.html新版本中增加了arthas隧道服务器的功能,用户可以通过隧道服务器轻松连接Arthas不同网络中的代理适合统一管理和控制。启动arthas时连接到隧道服务器。启动arthas时,可以传入--tunnel-server参数,例如:as.sh--tunnel-server'ws://47.75.156.201:7777/ws'目前47.75.156.201是测试服务器,用户可以自己搭建arthastunnelserver。如果有特殊需要,可以在--agent-id参数中指定agentId。默认情况下,会生成一个随机ID。attach成功后会打印agentId,如:,---。,------。,--------.,--.,--.,---.,---。/O\|.--.''--。.--'|'--'|/O\'.-'|.-.||'——'。|||.--||.-.|`。`-.||||||\\||||||||||.-'|`--'`--'`--''--'`--'`--'`--'`--'`--'`-----'wikihttps://alibaba.github.io/arthastutorialshttps://alibaba.github.io/arthas/arthas-tutorialsversion3.1.2pid86183time2019-08-3015:40:53idURJZ5L48RPBR2ALI5K4V如果没有连接到隧道服务器在startup,后续自动重连成功后也可以通过session命令获取agentId:[arthas@86183]$sessionNameValue----------------------------------------------JAVA_PID86183SESSION_IDf7273eb5-e7b0-4a00-bc5b-3fe55d741882AGENT_IDURJZ5L48RPBR2ALI5K4VTUNNEL_SERVERws://47.75.156.201:7777/ws以上面为例,在浏览器中访问http://47.75.156.201:8080/,输入agentId,就可以连接本机上的arthas了。Arthas隧道服务器如何工作浏览器<->arthas隧道服务器<->arthas隧道客户端<->arthas代理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命令,并增加了tunnelserver方便统一管控。另外还有一些bug修复等,可以参考ReleaseNote最后,Arthas的在线教程正在考虑整理。欢迎大家参与并提出建议。有关详细信息,请参阅此处。本文作者:中间件哥阅读原文本文为云栖社区原创内容,未经允许不得转载。