curl循环监控_阿里巴巴开源性能监控神器Arthas

线上经常遇到MQ消费速度忽高忽低,但是线下测试却没有问题。那会是哪一个问题引起的呢?因为影响MQ消费速度的因素太多了,如下因素只要任何一种出现问题,就会影响MQ消费速度。

  1. JVM内存过高,一直在Full GC。

  2. Redis连接堵塞,导致Redis操作一直延迟。

  3. 第三方接口响应时间过长。

  4. 服务器cpu/带宽/IO受限。

  5. Mysql出现慢sql,查询过慢。

  6. 程序本身问题(例如异常循环)。

解决方案:

为了排除具体原因,但是线上又不能进行错误调试,所以博主只能用最笨的办法,每一行关键代码,都写上log日志,然后通过输出每一行代码的执行时间,来确定到底是哪里出错。

方案问题:

但是打印日志的方式需要修改代码,有一定的风险,修改完又需要重新发布才能生效。最重要的是,MQ消费需要跑大量的数据,大部分数据都是正常的,少部分数据是异常的,针对于这种情况,打印日志的方式就很难发现问题点。

寻求更优解:

那到底有没有这么一个工具可以不用修改任何代码,就可以排查线上问题呢?今天就给大家推送一款神器Arthas,这是阿里巴巴开源的一款性能监控工具。

6a079de505e3c9945017f79a6d0045a9.png

当你遇到以下类似问题而束手无策时,Arthas 可以帮助你解决:

  1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?

  2. 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?

  3. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?

  4. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!

  5. 是否有一个全局视角来查看系统的运行状况?

  6. 有什么办法可以监控到JVM的实时运行状态?

Arthas入门:

Arthas本质其实就是一个jar包,所以只需要去官网下载对应的jar就可以了,然后通过java -jar的方式启动,例如:

curl -O https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar

启动成功之后可以看到Arthas启动标志,如下所示:

[INFO] Try to attach process 71560
[INFO] Attach process 71560 success.
[INFO] arthas-client connect 127.0.0.1 3658
,---. ,------. ,--------.,--. ,--. ,---. ,---.
/ O \ | .--. ''--. .--'| '--' | / O \ ' .-'| .-. || '--'.' | | | .--. || .-. |`. `-.| | | || |\ \ | | | | | || | | |.-' |
`--' `--'`--' '--' `--' `--' `--'`--' `--'`-----'

wiki: https://alibaba.github.io/arthas
version: 3.0.5.20181127201536
pid: 71560
time: 2018-11-28 19:16:24
$

Arthas也提供了Docker模式下的监控,我们只需要在DockerFile中增加如下代码,就可以嵌入Arthas了。

# copy arthas
COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
MQ消费过慢终极解决方案:

针对于上面提出的问题,MQ消费速度过慢,我们可以采用trace命令来解决,例如我们可以输入:

trace -j com.fourkmiles.advertisement.service.impl.CampaignsV2ApiMethodServicelmpl getSearchTermReport '#cost > 1000'

这个命令的意思是,CampaignsV2ApiMethodServicelmpl类的getSearchTermReport方法中,打印出执行时间超过1000的方法。

如下图所示,它可以打印这个方法中每一行代码所花费的时间。

885e9af0e3c2bc300f8496c5cfc4ad55.png

它还可以监测:线程、jvm、方法、方法执行路径、服务运行情况、反编译代码、获取方法返回值等功能,Arthas都给我们提供了方便的命令来查询这些指标。

5a1af4c6144a3e6734981b6ced51a2c2.png

总结:

总体来说Arthas功能还是非常强大的,对应线上bug排查可谓雪中送炭。但是Arthas本质还是一个jar服务,所以对服务器是有一定性能损耗的,在不监控的时候一定要关闭Arthas对应的服务。

官网地址:https://alibaba.github.io/arthas/install-detail.html

91cd4e9ba7671ee95131ad7c112904c2.png 65f40cecea625a819e8ed7fa0a3a6903.png fb0f64b0ecceac2b71d762a0f5327275.png

林老师带你学编程

微信号 : lzqcode

个人网站:wolzq.com

▇ 扫码关注我们

012238fcbfae536992a6ea3ddd4e2319.png f5383208e0a5ca31bfa4c94cad65ecc0.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值