Python探针性能压测报告

ARMS Python探针通过monkey-patching方式增加可观测的监控能力,实现应用性能管理,这不可避免地带来了一定的应用性能开销。ARMS团队采用多项技术对探针进行优化,将探针的性能开销降低,以确保应用的稳定运行。在本篇测试报告中,我们模拟了真实的使用场景,测试ARMS Python探针在不同业务流量下带来的性能开销,您可以参考本篇分析报告,在接入ARMS Python应用监控前,基于性能影响进行充分的评估。

测试场景

整体架构如下图所示:

image

PTS发起流量压测,流量转发到Python应用上,Python应用为使用FastAPI框架搭建的Web Server,通过Python instrumentor采集Trace并生成Metric,之后将数据发送至ARMS服务端。

测试环境

  • 压测源由阿里云性能测试服务PTS提供。

  • Python应用部署在阿里云容器服务ACK集群中,节点实例类型为ecs.c6.2xlarge,节点的操作系统版本为Alibaba Cloud Linux 3.2104 LTS 64位。

  • Python应用的Pod规格为22G,2个副本。

  • Python探针采用Aliyun Python Agent 1.0.0版本。

测试流程

  1. 开启数据上报,在不安装ARMS Python探针的情况下,分别使用基于500 / 1000 / 2000 QPS,发起3次压测,每次的持续时长为1小时,每次压测前都先基于100 QPS压测流量对Python应用进行3分钟预热,压测结果将作为基线性能指标。

  2. 安装ARMS Python探针,在采样策略设置为10%固定采样率的情况下,重复第1步的压测,对比Python应用在CPU开销、内存开销、RT上的差异。

  3. 关闭数据上报,开启单个插件,重复1~2步骤。

基线性能指标

对比项

CPU

内存

RT

500 QPS

8%

2%

17.28 ms

1000 QPS

15%

2%

36.3 ms

2000 QPS

27.12%

2%

44.9 ms

安装ARMS Python探针后的性能指标

对比项

CPU

内存

RT

500 QPS

11.9%

4.8%

17.31 ms

1000 QPS

22.5%

4.8%

37.1 ms

2000 QPS

36.67%

4.8%

46.6 ms

探针性能开销

对比项

CPU

内存

RT

500 QPS

+3.9%

+2.8%

+0.03 ms

1000 QPS

+7.5%

+2.8%

+0.80 ms

2000 QPS

+9.55%

+2.8%

+1.67 ms

分析结论

  1. ARMS Python探针额外造成的CPU和内存开销,都在10%以内。

  2. ARMS Python探针对于RT(请求响应时间)的影响非常小。