Arthas诊断生产环境

一、jdk环境的切换

在生产环境运行jps命令,是否jdk有这个命令,openjdk可能没有这个命令,需要切换为oracleJdk。同时jdk环境必须与“待诊断服务的jdk版本环境”保持一致。如果“待诊断服务的jdk版本环境”的bin中有jps命令,直接将本地环境的jdk改为“待诊断服务的jdk版本环境”。

vi ~/.bashrc

在文末添加配置

export JAVA_HOME=/usr/lib/jvm/jdk1.6  (根据jdk实际地址配)

export JRE_HOME=${JAVA_HOME}/jre  

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  

export PATH=${JAVA_HOME}/bin:$PATH

然后保存退出。输入命令使之立即生效

source ~/.bashrc

二、Arthas的下载和使用

2.1.下载

​​​​​​​arthas的官网:https://arthas.aliyun.com

下载arthas-boot.jar,然后用java -jar的方式启动:

wget https://alibaba.github.io/arthas/arthas-boot.jar

java -jar arthas-boot.jar

启用arthas必须和待诊断服务必须在同一账号下。启动后会将java进程列出来

假如想要监控第一个进程,则输入1,再输入回车/enter。Arthas会attach到目标进程上,并输出日志:

2.2.dashboard

然后就可以输入命令进行各种操作,如查看dashboard,则输入dashboard并按回车即可。dashboard命令显示当前系统的实时数据面板,如CPU占比, 错误数, 线程池信息等

中断当前在执行的命令,ctrl + c即可。退出当前 Arthas 客户端执行exit或quit。

2.3.jad命令查看反编绎的源代码(指定类)

jad com.fjcs.oa.refuse.imp.createAndSubmitFlowInstanceThread

返回反编译的类

2.4.trace链路追踪 

trace命令渲染和统计整个调用链路上的所有性能开销和追踪调用链路,很方便的定位性能瓶颈:

trace 类名 方法名

trace com.nl.workflow.IWorkFlowMgmt createAndSubmitFlowInstance

2.5.watch命令观察接口参数和返回值

watch com.rkyao.arthas.controller.ArthasController testControllerMethod "{params,returnObj}" -x 2

生产环境中使用 Arthas(阿尔萨斯)进行 Java 应用程序的诊断和调试时,遵循最佳实践可以有效提升诊断效率,同时避免对系统稳定性造成影响。以下是一些关键建议: ### 3.1 使用非侵入式诊断方式 Arthas 提供了丰富的命令,如 `watch`、`trace`、`stack` 等,用于实时观察方法调用、性能瓶颈和调用堆栈。在生产环境中应优先使用非侵入式命令,避免修改应用代码或引入额外依赖。例如,使用 `trace` 命令可以追踪方法执行路径和耗时,帮助快速定位性能瓶颈[^1]。 ```bash trace com.example.MyService myMethod ``` ### 3.2 控制诊断范围和频率 在高并发环境中,过度使用诊断命令可能导致性能下降。建议限制诊断范围,例如指定类名、方法名或条件表达式,避免全局监控。使用 `watch` 命令时,可以通过条件表达式仅在特定输入参数下触发监控,减少对系统的影响。 ```bash watch com.example.MyService myMethod '{params, returnObj}' 'params[0] > 100' ``` ### 3.3 启用安全限制和访问控制 Arthas 默认运行在本地,但在生产环境中应启用安全机制,防止未经授权的访问。可以通过配置 SSH 服务或 Telnet 访问限制,仅允许特定 IP 地址连接。此外,建议设置超时机制,防止长时间诊断导致资源占用过高。 ### 3.4 使用日志记录和归档诊断结果 诊断过程中,建议将关键输出记录到日志文件中,便于后续分析和归档。可以使用 `logger` 命令查看日志级别,或结合 `redirect` 将诊断结果输出到文件。 ```bash trace com.example.MyService myMethod > /logs/arthas_trace.log ``` ### 3.5 避免长时间使用 `profiler` 命令 Arthas 的 `profiler` 命令基于 Async Profiler,适用于 CPU 和内存分析,但在生产环境中应谨慎使用。建议在必要时启用,并设置合理的时间窗口(如 30 秒至 5 分钟),避免长时间运行影响系统性能。 ```bash profiler start -e cpu sleep 30 profiler stop ``` ### 3.6 结合外部监控工具使用 Arthas 适合作为辅助工具用于临时诊断,不建议作为长期监控方案。建议与 Prometheus、Grafana、SkyWalking 等监控系统结合使用,形成完整的可观测性体系。 ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值