MSE 微服务治理Java探针在应用运行时进行字节码增强,实现微服务治理能力。本文模拟了真实的使用场景,测试了MSE微服务治理Java探针在不同业务流量下带来的性能开销,有助于您在接入MSE微服务治理前,基于性能影响进行充分的评估。
测试环境
压测源由阿里云性能测试PTS提供。
Java应用、MySQL、Redis 都部署在同一个阿里云容器服务ACK集群中,节点实例类型为
ecs.g6.2xlarge
,节点的操作系统版本为Alibaba Cloud Linux 3.2104 LTS 64位 容器优化版
。Java应用的Pod规格为2核4GB,双副本。
MSE Java探针使用 Aliyun JavaAgent 4.4.0 版本。
Demo 代码库:https://github.com/aliyun/alibabacloud-microservice-demo/tree/demo-pt/mse-simple-demo。
测试场景
Java应用架构如下所示:
Java应用基于Spring MVC框架编写, Redis/Mysql 为避免网络影响采用客户端模拟的方式(埋点逻辑依旧会被执行),请求${gateway}/A/httpTest
以及 ${gateway}/A/dubboTest
。
所有应用添加 JVM 启动参数 -Xms3500m -Xmx3500m -XX:MetaspaceSize=500m
测试流程
在不安装MSE Java探针的情况下,使用基于 500/1000 QPS,各发起3次压测,每次的持续时长为20分钟,每次压测前都先基于100 QPS压测流量对Java应用进行3分钟预热,压测结果将作为基线性能指标。
安装MSE Java探针,并设置应用的微服务治理规则,对比Java应用在CPU开销、内存开销、RT(响应时间)上的差异。
设置全链路灰度泳道,条件为按比例灰度50%。
对于每个接口,设置接口限流,限流阈值为10000 QPS。
探针性能开销
每秒处理查询次数(次/秒) | CPU开销 | 内存开销 | RT(每跳增加) |
单机250QPS | +2.9575%
| +0.192125 GiB
| +0.2 ms |
单机500QPS | +6.365%
| +0.161125 GiB
| +0.2 ms |
基线性能指标
每秒处理查询次数(次/秒) | CPU开销 | 内存开销 | RT(响应时间) |
单机250QPS |
|
| 109 ms |
单机500QPS |
|
| 112 ms |
开启MSE能力后的性能指标
每秒处理查询次数(次/秒) | CPU开销 | 内存开销 | RT(响应时间) |
单机250QPS |
|
| 110 ms |
单机500QPS |
|
| 113 ms |