Node.js 探针性能压测报告

更新时间:
复制 MD 格式

ARMS Node.js 探针在运行时增加可观测的监控能力,从而实现应用性能管理,这不可避免地带来一定的应用性能开销。本报告模拟真实使用场景,测试了 ARMS Node.js 探针在不同业务流量下引入的性能开销。接入 ARMS Node.js 应用监控前,可参考本报告充分评估性能影响。

测试场景

整体架构如下图所示:

image

Node.js 应用基于 Express 框架编写,根据压测源发起的不同请求,会分别访问 MySQL 和 Redis 服务,两种请求各占 50% 的 QPS。

测试环境

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

  • Node.js 应用部署于阿里云容器服务 ACK Pro 集群,节点实例类型为 ecs.c7.2xlarge(8 vCPU、16 GiB),节点的操作系统版本为 Alibaba Cloud Linux 3。

  • Node.js 应用的 Pod 规格为 2 核 2 GiB,4 个副本。

  • 后端依赖为云数据库 RDS MySQL 和云数据库 Redis,均通过 VPC 内网访问。

  • Node.js 探针采用 @loongsuite/cms_node_sdk 1.0.8 版本,通过 --import 方式加载。

测试流程

  1. 不安装 ARMS Node.js 探针,分别使用 500、1000、2000 QPS 三个档位各发起一轮压测,每轮压测持续 3 分钟,压测结果作为基线性能指标。

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

  3. 安装 Node.js 探针,将采样策略设置为 100% 固定采样率,重复第 1 步的压测,对比 Node.js 应用在 CPU 开销、内存开销、RT 上的差异。

说明

本次压测中,ARMS Node.js 应用监控的基本功能均已开启,包括统计指标、调用链等,并开启所有插件功能。

测试结果

压测分别在 500、1000、2000 QPS 三个档位下进行,以下依次给出未安装探针时的基线性能指标、安装 ARMS Node.js 探针后的性能指标,以及探针相对基线引入的性能开销。

基线性能指标

对比项

CPU

内存

RT

500 QPS

3.5%

2.8%

34.4 ms

1000 QPS

6.3%

2.9%

34.7 ms

2000 QPS

12.7%

3.2%

36.6 ms

说明
  • CPU 指标代表 Pod 使用的 CPU 占总 CPU 的百分比。

  • 内存指标代表 Pod 使用的内存占总内存的百分比。

  • RT 指标代表请求的平均响应时间,单位:毫秒。

安装 ARMS Node.js 探针后的性能指标

对比项

10% 采样率 CPU

10% 采样率 内存

10% 采样率 RT

100% 采样率 CPU

100% 采样率 内存

100% 采样率 RT

500 QPS

6.1%

5.2%

34.8 ms

8.5%

5.6%

36.1 ms

1000 QPS

10.9%

5.4%

35.8 ms

15.5%

5.5%

38.6 ms

2000 QPS

18.6%

5.1%

38.5 ms

27.8%

6.1%

42.0 ms

探针性能开销

下表中的数值为安装 ARMS Node.js 探针后各指标与同一 QPS 档位基线性能指标的差值。

对比项

10% 采样率 CPU

10% 采样率 内存

10% 采样率 RT

100% 采样率 CPU

100% 采样率 内存

100% 采样率 RT

500 QPS

+2.6%

+2.4%

+0.4 ms

+5.0%

+2.8%

+1.7 ms

1000 QPS

+4.6%

+2.5%

+1.1 ms

+9.2%

+2.6%

+3.9 ms

2000 QPS

+5.9%

+1.9%

+1.9 ms

+15.1%

+2.9%

+5.4 ms

分析结论

基于本文描述的测试环境与负载模型,测试结论如下:

  • 在 10% 固定采样率下,ARMS Node.js 探针额外造成的 CPU 开销在 5.9% 以内,内存开销在 2.5% 以内。

  • 在 100% 固定采样率下,ARMS Node.js 探针额外造成的 CPU 开销在 15.1% 以内,内存开销在 2.9% 以内。

  • ARMS Node.js 探针对 RT(请求响应时间)的影响较小。在 2000 QPS 下,10% 固定采样率增加 1.9 ms,100% 固定采样率增加 5.4 ms。