文档首页/ 应用性能管理 APM/ 常见问题(2.0)/ Java增强探针性能对用户性能是否会产生影响?
更新时间:2024-12-25 GMT+08:00
分享

Java增强探针性能对用户性能是否会产生影响?

应用性能管理(APM)探针利用字节码增强技术动态采集性能数据,包括方法调用、异常信息、分布式追踪等,帮助开发和运维团队实时监控和优化系统性能。探针集成不可避免地引入了一定量的性能损耗,通过评估探针对Java应用的性能开销(如CPU、内存、延迟),高负载场景下的稳定性和数据采集完整性,可以确保探针在生产环境中运行可靠,性能影响可控,为优化和部署提供重要依据。

测试环境

工具/服务

版本/规格

说明

JVisualVM

1.8.0_216

JVisualVM是Java自带性能监控工具,监视和管理控制台JConsole,它可以提供 Java 某个进程的内存、线程、类加载、jvm 概述以及的实时信息。

JMeter

5.3

Apache JMeter是Apache组织开发的基于Java的压力测试工具,在本次测试中主要是用于模拟多用户并发调用APM查询图表接口。

JavaAgent

2.4.11-profiler

Java Agent稳定版本

ECS服务器

Demo应用

2u4g

benchmark.jar

通用计算增强型 | 2vCPUs | 4GiB | c7.large.2,节点的操作系统版本为CentOS 7.9。

根据压测源发起请求,会同时访问MySQL和Redis服务,并返回查询值,使用Spring Cloud、Dubbo实现。

约束限制

  1. Profiler探针版本需要2.4.5版本及以上,请参见JavaAgent更新说明
  2. 采样策略设置探针版本需要2.4.11版本及以上,请参见JavaAgent更新说明

测试流程

  1. 在不安装探针的情况下,分别使用1TPS、500TPS、1000TPS、2000TPS压测样本,每次的持续时长为30分钟,压测结果将作为基线性能指标。
  2. 安装探针,采样策略设置为智能采样和100%采样两种情况下,重复步骤1的压测过程,对比CPU、内存、RT上的差异。
  3. 安装带Profiler探针,性能剖析设置为关闭状态,采样策略设置为智能采样和100%采样两种情况下,重复步骤1的压测过程,对比CPU、内存、RT上的差异。

未安装探针性能极限指标

序号

压测样本

RT(ms)

cpu(%)

内存(MB)

1

1TPS

77.05

0.4

200

2

500TPS

77.42

11

250

3

1000TPS

79.17

23

300

4

2000TPS

83.19

45

350

安装探针性能极限指标

表1 智能采样

序号

压测样本

RT(ms)

CPU(%)

内存(MB)

1

1TPS

78.36

0.4

250

2

500TPS

79.05

18

300

3

1000TPS

81.84

31

350

4

2000TPS

86.81

55

400

表2 100%采样

序号

压测样本

RT(ms)

CPU(%)

内存(MB)

1

1TPS

78.38

0.4

250

2

500TPS

80.39

20

300

3

1000TPS

84.51

33

450

4

2000TPS

88.72

65

500

探针性能开销对比

序号

压测样板

智能采样对比

100%采样率对比

-

RT

CPU

内存

RT

CPU

内存

1

1TPS

+1.31ms

+0%

+50MB

+1.33ms

+0%

+50MB

2

500TPS

+1.63ms

+7%

+50MB

+2.97ms

+9%

+50MB

3

1000TPS

+2.67ms

+8%

+50MB

+5.34ms

+10%

+150MB

4

2000TPS

+3.62ms

+10%

+50MB

+5.53ms

+20%

+150MB

报告结论

  1. JAVA增强型探针对于RT(请求响应时间)影响非常小。
  2. JAVA增强型探针默认智能采样会额外造成的CPU和内存开销,都在10%以内,实际还会随客户应用复杂性有所增加。
  3. JAVA增强型探针在100%采样率的情况下,性能开销比智能采样略有上升,在高负载情况下不建议开启100%采样。

相关文档