You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JMeter中测量Docker容器CPU、内存并对比Alpine与非Alpine镜像性能

基于JMeter实现Docker容器CPU/内存指标采集与镜像性能对比方案

前置准备

  • 已部署JMeter 5.4+版本环境,避免插件兼容性问题
  • 测试机器可访问Docker宿主机的API或SSH端口,目标镜像可正常启动提供服务
  • Alpine版、非Alpine版测试镜像的启动参数、端口映射、服务配置、初始化逻辑完全对齐,排除无关变量干扰

第一步:配置JMeter采集Docker容器指标

提供两种常用实现方式,可根据自身环境选择:

方式1:Docker REST API采集(推荐,性能损耗更低)

  • 先在Docker宿主机开启API监听:修改docker服务配置文件,添加2375端口监听(仅测试环境使用,生产环境需加认证),重启docker服务后执行curl http://<宿主机IP>:2375/containers/<目标容器ID>/stats?stream=false验证,正常会返回包含CPU、内存数据的JSON结果
  • 回到JMeter添加HTTP请求采样器,请求方法选GET,URL填入上述验证用的接口地址
  • 给HTTP采样器添加JSON提取器,分别提取需要的指标:
    • CPU使用率:JSON路径表达式填$.cpu_stats.cpu_usage.percent,提取结果存入自定义变量如container_cpu_usage
    • 内存使用率:JSON路径表达式填$.memory_stats.usage_percent,提取结果存入自定义变量如container_mem_usage

方式2:SSH执行docker命令采集(无需修改docker配置)

  • 给JMeter安装SSH Sampler插件,添加SSH Command采样器,配置宿主机SSH账号密码
  • 采样器内执行命令:docker stats <目标容器名/容器ID> --no-stream --format "{{.CPUPerc}} {{.MemPerc}}",该命令会直接返回不带动态流的资源占用数据
  • 给SSH采样器添加正则表达式提取器,把返回结果里的CPU、内存数值提取出来存入自定义变量即可

第二步:压测执行规则(保证数据可对比)

  • 两类镜像的压测参数完全一致:并发数、ramp-up时间、压测时长、业务请求逻辑完全相同
  • 每类镜像至少执行3次重复测试,去掉最高、最低异常值后取平均值,排除偶然误差
  • 压测全程宿主机不运行其他无关进程,避免额外占用资源影响测试结果

第三步:两类镜像性能对比方案

  • 压测过程中用JMeter的简单数据写入器把业务指标(TPS、响应时间)和采集到的容器CPU、内存指标一起写入CSV文件
  • 核心对比维度参考:
    • 相同并发请求下,两类镜像的平均CPU使用率、CPU峰值
    • 相同请求量下,两类镜像的平均内存占用、内存波动范围
    • 满负载长时间压测下,两类镜像的内存走势,判断是否存在资源泄露问题
    • 相同资源占用率下,两类镜像承载的业务TPS、响应时间差异,判断资源利用率高低
  • 可把CSV导出的数据生成对比柱状图、折线图,性能差异会更直观

内容的提问来源于stack exchange,提问作者ejakub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:39:03