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

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

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

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

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

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

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

解决方案:

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

方案问题:

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

寻求更优解:

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

当你遇到以下类似问题而束手无策时,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.jarjava -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/arthasversion: 3.0.5.20181127201536pid: 71560time: 2018-11-28 19:16:24$

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

# copy arthasCOPY --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的方法。

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

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

总结:

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

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

林老师带你学编程

微信号 : lzqcode

个人网站:wolzq.com

▇ 扫码关注我们

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

  1. 阿里巴巴开源性能监控神器Arthas初体验

    如果问性能测试中最难的是哪部分,相信很多人会说"性能调优".确实是这样,性能调优是一个非常复杂.技术含量很高的工作.涉及到的知识面很广.以我多年从业经验来看,在企业里,大多数的性能 ...

  2. 超牛逼!这款开源性能监控系统真强大~

    点击关注公众号,回复"1024"获取2TB学习资源! 当网站上线后,流量增加或短暂功能故障,都会造成使用者体验相当不好,而这时该怎么快速找到性能的瓶颈呢?通常 CPU 达到 100 ...

  3. 360重磅开源性能监控平台ArgusAPM

    12月16日,在360移动性能开放日上,360手机卫士技术架构负责人卜云涛向我们介绍了360最新开源的性能监控平台ArgusAPM.ArgusAPM是360手机卫士客户端团队继RePlugin之后开源 ...

  4. 360 重磅开源性能监控平台 ArgusAPM

    12 月 16 日,在 360 移动性能开放日上,360 手机卫士技术架构负责人卜云涛向我们介绍了 360 最新开源的性能监控平台 ArgusAPM.ArgusAPM 是 360 手机卫士客户端团队继 ...

  5. mysql pt监控_技术分享 | MySQL 监控利器之 Pt-Stalk

    作者:xuty 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源. 一.概述 之前在社区发了一篇[有效解决 MySQL 行锁等待超时问题]文档,主要介绍 ...

  6. 普罗米修斯 监控_接近完美的监控系统—普罗米修斯

    普罗米修斯(Prometheus)是一个SoundCloud公司开源的监控系统.当年,由于SoundCloud公司生产了太多的服务,传统的监控已经无法满足监控需求,于是他们在2012年决定着手开发新的 ...

  7. linux 监控命令iostat,Linux性能监控分析命令(三)—iostat命令介绍

    性能监控分析的命令包括如下: 1.vmstat 2.sar 3.iostat 4.top 5.free 6.uptime 7.netstat 8.ps 9.strace 10.lsof 命令介绍: i ...

  8. linux监控cpu进程,Linux性能监控之CPU篇详解

    监控CPU的性能就是以上3点,运行队列.CPU使用率和上下文切换.以下是一些对于Linux性能监控CPU很普遍的性能要求: Linux性能监控CPU篇 1. 对于每一个CPU来说运行队列不要超过3,例 ...

  9. cat全链路监控_谛听全链路监控平台实践与思考

    一.项目背景 近几年,信也科技的研发技术伴随着业务的快速增长逐步演化为微服务化的分布式体系架构,但随之带来的系统间的上下游依赖关系的复杂度也呈指数级上升,已有的烟囱式的监控产品(CAT.ELK等)存在 ...

最新文章

  1. 花最少的钱,训超6的机器人:谷歌大脑推出机器人强化学习平台,硬件代码全开源...
  2. lazada做代运营,价格越低越好吗?价格和价值分析
  3. 架构学习优秀网站整理
  4. import tensorflow 报错 ImportError: DLL load failed: 找不到指定的模块。
  5. mfc 监控文件操作_mfc是什么
  6. linux指令 sed,Linux命令sed
  7. 支付宝:“答答星球”小程序上线20天累计参与人数超2亿
  8. oracle仅部分记录建立索引的方法
  9. 【最小生成树】还是畅通工程
  10. edge同步chrome书签_如何通过 iCloud 同步 chromium edge 的书签?
  11. 全球数字电视标准制式
  12. Python使用UDP实现720p视频传输
  13. 用html做龙卷风特效,抖音HTML龙卷风特效代码是啥?
  14. 瑞幸退市,董事长被罢免,但是我并不同情他!
  15. 如何快速写作论文初稿?
  16. 3 在浏览器中查看请求报文和响应报文
  17. mysql 退出数据库_mysql怎样退出使用数据库
  18. SpringBoot2.6.5+Swagger3配置
  19. 动态视频流切换的处理策略
  20. 在Vue中Promise.all的使用

热门文章

  1. tensorflow综合示例5:图象分割
  2. 使用xml及java代码混合的方式来设置图形界面
  3. python3爬虫初探(五)之从爬取到保存
  4. python学习笔记(一)基本数据类型
  5. GCC/G++选项 -Wl,-Bstatic和-Wl,-Bdynamic
  6. NOIP2014联合权值
  7. Object类和String类
  8. 在从1到n的正数中1出现的次数
  9. 按 结构记录的 相关字段 快速排序
  10. Ten Must-Have Tools Every Developer Should Download Now-----CodeSimth