Redian新闻
>
高性能、无侵入的 Java 性能监控神器

高性能、无侵入的 Java 性能监控神器

公众号新闻

点击上方“芋道源码”,选择“设为星标

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 
来源:github.com/LinShunKang
/MyPerf4J


背景

随着所在公司的发展,应用服务的规模不断扩大,原有的垂直应用架构已无法满足产品的发展,几十个工程师在一个项目里并行开发不同的功能,开发效率不断降低。

于是公司开始全面推进服务化进程,把团队内的大部分工程师主要精力全部都集中到服务化中。服务化可以让每个工程师仅在自己负责的子项目中进行开发,提高了开发的效率,但是服务化同时也带来了其他问题:

  • 无法知道每个服务的运行情况,例如,某一台服务它目前的 QPS 是多少?它的平均延迟是多少,99% 的延迟是多少,99.9% 的延迟又是多少?
  • 某一个接口响应时间慢,如何定位是哪个方法引起的?
  • 每个服务的负载是否均衡?
  • 当服务出现抖动时,如何判断是 DB、Cache 还是下游服务引起的?
  • DB 和 Cache 响应延迟是多少?
  • 如何评估服务的容量,随着服务的调用量越来越大,这个服务需要多少机器来支撑?什么时候应该加机器?

针对以上开发中的烦恼,今天我们介绍一个针对高并发、低延迟应用设计的高性能 Java 性能监控和统计工具——MyPerf4J

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 视频教程:https://doc.iocoder.cn/video/

使用场景

  • 在开发环境中快速定位 Java 应用程序的性能瓶颈
  • 在生产环境中长期监控 Java 应用程序的性能指标

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud
  • 视频教程:https://doc.iocoder.cn/video/

特性

  • 高性能: 单线程支持每秒 1000万次 响应时间的记录,每次记录只花费 73纳秒
  • 无侵入: 采用 JavaAgent 方式,对应用程序完全无侵入,无需修改应用代码
  • 低内存: 采用内存复用的方式,整个生命周期只产生极少的临时对象,不影响应用程序的GC
  • 高精度: 采用纳秒来计算响应时间
  • 高实时: 支持秒级监控,最低 1 秒!

监控指标

MyPerf4J 为每个应用收集数十个监控指标,所有的监控指标都是实时采集和展现的。

下面是 MyPerf4J 目前支持的监控指标列表:

Method

RPS,Count,Avg,Min,Max,StdDev,TP50, TP90, TP95, TP99, TP999, TP9999, TP99999, TP100

Memory

HeapInit,HeapUsed,HeapCommitted,HeapMax,NonHeapInit,NonHeapUsed,NonHeapCommitted,NonHeapMax

JVM GC

CollectCount,CollectTime

JVM Class

Total,Loaded,Unloaded

快速启动

MyPerf4J 采用 JavaAgent 配置方式,透明化接入应用,对应用代码完全没有侵入。

下载

  • 下载并解压 MyPerf4J-ASM.zip
  • 阅读解压出的 README 文件
  • 修改解压出的 MyPerf4J.properties 配置文件中 app_namemetrics.log.xxxfilter.packages.include 的配置值
  • MyPerf4J-ASM.zip包 :https://github.com/LinShunKang/Objects/blob/master/zips/CN/MyPerf4J-ASM-3.3.0-SNAPSHOT.zip?raw=true

配置

在 JVM 启动参数里加上以下两个参数

-javaagent:/path/to/MyPerf4J-ASM.jar
-DMyPerf4JPropFile=/path/to/MyPerf4J.properties

运行

启动应用,监控日志输出到 /path/to/log/method_metrics.log:

MyPerf4J Method Metrics [2020-01-01 12:49:572020-01-01 12:49:58]
Method[6]                            Type        Level  TimePercent      RPS  Avg(ms)  Min(ms)  Max(ms)    StdDev    Count     TP50     TP90     TP95     TP99    TP999   TP9999
DemoServiceImpl.getId2(long)      General      Service      322.50%     6524     0.49        0        1     0.50      6524        0        1        1        1        1        1
DemoServiceImpl.getId3(long)      General      Service      296.10%     4350     0.68        0        1     0.47      4350        1        1        1        1        1        1
DemoServiceImpl.getId4(long)      General      Service      164.60%     2176     0.76        0        1     0.43      2176        1        1        1        1        1        1
DemoServiceImpl.getId1(long)      General      Service        0.00%     8704     0.00        0        0     0.00      8704        0        0        0        0        0        0
DemoDAO.getId1(long)         DynamicProxy          DAO        0.00%     2176     0.00        0        0     0.00      2176        0        0        0        0        0        0
DemoDAO.getId2()             DynamicProxy          DAO        0.00%     2176     0.00        0        0     0.00      2176        0        0        0        0        0        0

卸载

在 JVM 启动参数中去掉以下两个参数,重启即可卸载此工具。

-javaagent:/path/to/MyPerf4J-ASM.jar
-DMyPerf4JPropFile=/path/to/MyPerf4J.properties

开源地址

  • https://github.com/LinShunKang/MyPerf4J


欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

已在知识星球更新源码解析如下:

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
《薔薇處處開》马斯克接受Bill Maher脱口秀访谈:“觉醒”思想病毒,人工智能监管,真正的快乐监控实拍!蒙面盗贼半夜偷马里布豪车内钱财,整条街上有20多辆豪车,直视监控不害怕....家长请注意:0至4岁幼儿侵入式A组链球菌患病率最高!今日财经 | 越南房地产危机加剧;美债上限协议通过;前员工称永雄侵入政务网站搜集信息博雅聚力完成数千万A轮融资,专注高性能聚酰亚胺(PI)材料研发|36氪首发关于高可用、高性能、可扩展架构设计的14大要点详解 | 极客时间瑞士银行无法发布财报,重走瑞信老路?不明飞机侵入白宫领空?白菜价!抢2.9折小熊破壁机、虎牌电热水壶、面巾纸、庭院储物箱、智能监控!重磅!$1在新泽西最大城市买房,而且无首付款、无交易费、无手续费!快申请吧!暑假必入的天花板级神器,被我薅到了地板价!一位北大才子的"润"之路亚马逊白菜!抢AI智能监控、飞利浦牙刷、顶级剃须刀、智能额温枪、智能加湿器!英国加息至15年来新高, 或持续多年. 英镑继续跌! 首相私宅被非法侵入.CVPR 2023 | MobileOne:移动端仅需1ms的高性能主干!超越MobileViT!突发!俄称"乌军侵入俄领土",乌方:与我无关“被华为问界打残了...”李想:“学!学!学!”“同行在干什么,我们天眼系统都能监测到”《花信风之谷雨》对话火山引擎马茜——如何更好平衡“性能、成本、画质”这三角的关系?亚马逊白菜!抢餐桌椅、智能监控、可视门铃、橡皮艇、Beats耳机、手持风扇!《东风第一枝 - 谷雨》氢能、储能、智能驾驶是大势所趋:无锡站游学精华分享德州发现侵入性毒虫锤头扁虫,可致人类和宠物中毒,相关知识及防御​「万有引力」完成数亿元Pre-A+轮融资,快速推进高性能XR芯片研发为了你走遍草原 第八章最强骁龙手机来袭!性能、快充、影像全面升级,游戏党最佳“利器”“耳机”也能治疗肥胖和失眠,Neurovalens打造非侵入性神经刺激设备卖爆了!熬夜党必入的“补气神器”,温润不上火,比零食还好吃~iScience | 非侵入性脑机接口技术助力瘫痪者操作思维控制轮椅叫板ChatGPT?Stability AI 开源语言大模型 StableLM,参数仅为GPT-3百分之四,却能实现超高性能种猪侵入和基因图谱:中国人的长远隐忧高危!加拿大西部空气急剧恶化 野火烟雾今天侵入安省!专家提醒戴N95艾莱科劢德:瞄准亿级慢性呼吸系统疾病患者,打造吸入给药智能监测平台悲剧!毕业典礼外发生枪击案2死5伤; 校车司机偷拍学生, 最小受害者年仅6岁; 加拿大山火烟雾侵入费城, 注意防范!ChatGPT能解决信息抽取吗?一份关于性能、评估标准、鲁棒性和错误的分析
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。