乐趣区

关于java:狂收-3K-Star一个高性能无侵入的-Java-性能监控和统计工具十分强悍

背景

随着所在公司的倒退,应用服务的规模不断扩大,原有的垂直利用架构已无奈满足产品的倒退,几十个工程师在一个我的项目里并行开发不同的性能,开发效率一直升高。

于是公司开始全面推动服务化过程,把团队内的大部分工程师次要精力全副都集中到服务化中。服务化能够让每个工程师仅在本人负责的子项目中进行开发,进步了开发的效率,然而服务化同时也带来了其余问题:

  • 无奈晓得每个服务的运行状况,例如,某一台服务它目前的 QPS 是多少?它的均匀提早是多少,99% 的提早是多少,99.9% 的提早又是多少?
  • 某一个接口响应工夫慢,如何定位是哪个办法引起的?
  • 每个服务的负载是否平衡?
  • 当服务呈现抖动时,如何判断是 DB、Cache 还是上游服务引起的?
  • DB 和 Cache 响应提早是多少?
  • 如何评估服务的容量,随着服务的调用量越来越大,这个服务须要多少机器来撑持?什么时候应该加机器?

针对以上开发中的懊恼,明天咱们介绍一个针对高并发、低提早利用设计的高性能 Java 性能监控和统计工具——MyPerf4J

举荐一个开源收费的 Spring Boot 实战我的项目:

https://github.com/javastacks/spring-boot-best-practice

应用场景

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

个性

  • 高性能: 单线程反对每秒 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:57, 2020-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

开源地址:github.com/LinShunKang/MyPerf4J

近期热文举荐:

1.1,000+ 道 Java 面试题及答案整顿 (2022 最新版)

2. 劲爆!Java 协程要来了。。。

3.Spring Boot 2.x 教程,太全了!

4. 别再写满屏的爆爆爆炸类了,试试装璜器模式,这才是优雅的形式!!

5.《Java 开发手册(嵩山版)》最新公布,速速下载!

感觉不错,别忘了顺手点赞 + 转发哦!

退出移动版