腾讯云增强版 OpenTelemetry Java 探针通过运行态字节码增强,实现了零代码侵入的应用性能管理能力。字节码增强技术会对应用产生一定的性能开销,这是所有采用类似技术的应用性能管理方案都无法避免的。但腾讯云可观测团队在探针中引入了多项重要优化技术,将探针的性能开销控制在极低的范围内,打消了用户对于探针影响应用性能与稳定性的顾虑。
在本篇压测报告中,我们基于真实场景模拟腾讯云增强版 OpenTelemetry Java 探针在不同业务流量下产生的性能开销,您可以参考本篇压测报告,对 APM 产品的最终造型进行充分评估。
测试用例
本次测试所采用的场景和方式,基于 SkyAPMTest 开源社区的探针性能测试项目 实现,您可以前往社区获取项目的源代码。该项目基于 Spring 框架编写了应用程序,包含 Spring Boot、Spring MVC,模拟的 Redis 客户端,HikariCP 连接池(匹配模拟的 MySQL 客户端)。接入腾讯云增强版 OpenTelemetry Java 探针后,对于每个事务,探针会抓取5个 Span (1个 Tomcat 调用、1个 Spring MVC 框架调用、2个 Redis 请求和1个 MySQL 请求)。
应用部署环境:基于 TKE 部署,2核4G Pod;
测试地域:北京
测试时长:10分钟
探针版本:2.3-20240720
业务流量:500, 1000, 2000, 4000。
基线性能指标
在不接入 APM 的情况下,性能表现如下:
业务流量(TPS) | CPU 利用率 | 内存利用率 | 平均响应时间(ms) |
500 | 32.83% | 24.30% | 182 |
1000 | 32.88% | 26.09% | 370 |
2000 | 32.95% | 26.70% | 752 |
4000 | 32.52% | 30.59% | 1522 |
安装探针后的性能指标
应用接入 APM 后,性能表现如下:
业务流量(TPS) | CPU 利用率 | 内存利用率 | 平均响应时间(ms) |
500 | 39.38% | 33.42% | 201 |
1000 | 39.57% | 32.03% | 418 |
2000 | 39.68% | 33.13% | 859 |
4000 | 39.69% | 35.77% | 1730 |
探针性能开销
对比安装探针后的性能指标以及基线性能指标,探针产生的性能开销如下:
业务流量(TPS) | CPU 利用率 | 内存利用率 | 平均响应时间(ms) |
500 | +5.96% | +9.12% | +19 |
1000 | +6.69% | +5.94% | +48 |
2000 | +6.73% | +6.43% | +107 |
4000 | +7.16% | +5.18% | +208 |
总结
探针产生的 CPU 和内销开销,在10%以内。
探针会对请求响应时间带来一定的影响,但都在毫秒级别。