Docker API压测核心是环境隔离、快速复现与资源可控;通过wrk/ab/locust等轻量镜像,配合docker run单命令或docker-compose多服务编排,实现可执行、可对比、可回收的压测环境,并结合docker stats/cadvisor+Prometheus监控定位真实瓶颈。

用 Docker 做 API 接口压测,核心是“环境隔离 + 快速复现 + 资源可控”。不需要搭整套测试平台,几条命令就能拉起一个可执行、可对比、可回收的压测环境。
选对工具镜像,避免重复造轮子
优先使用成熟、轻量、专为压测设计的官方或社区镜像,比如:
-
wrk:高性能 HTTP 压测工具,适合高并发短连接场景(如 REST API);Docker Hub 上有官方镜像
ghcr.io/wrk/wrk或社区维护版williamyeh/wrk -
ab(Apache Bench):简单直接,适合快速验证单接口基础性能;可用
byrnedo/alpine-curl镜像配合ab工具,或直接用httpd:alpine自带版本 -
locust:支持分布式、脚本化、可视化,适合复杂业务链路(如登录→下单→支付);官方镜像
locustio/locust开箱即用 - 已有项目封装好的压测平台,如知识库中提到的 ThinkPHP + wrk 实现的在线压测工具,已支持 Docker 一键部署,含任务管理与历史记录,适合团队共享使用
用 docker run 快速发起单次压测
不依赖编排文件,一条命令即可跑通流程。例如对 https://api.example.com/v1/users 发起 100 并发、共 5000 次请求:
docker run --rm -it \ -v $(pwd)/results:/results \ ghcr.io/wrk/wrk -t12 -c100 -d30s https://api.example.com/v1/users \ > /results/wrk-report-$(date +%s).txt
说明:
-
-t12表示启用 12 个线程,-c100表示维持 100 个并发连接 -
-d30s表示持续压测 30 秒(比固定请求数更能反映稳定态表现) -
-v挂载本地目录,方便保存报告并跨多次测试比对 - 若目标服务在宿主机运行,用
host.docker.internal替代localhost访问
用 docker-compose 模拟多维度并发场景
当需要组合多个压测行为(如混合读写、阶梯加压、多接口轮询),推荐用 docker-compose.yml 编排:
version: '3.8'
services:
api-test-read:
image: ghcr.io/wrk/wrk
command: -t4 -c50 -d20s https://www.php.cn/link/f6688fcc298d6dee5c1898e2b090621c
depends_on: [target-api]
<p>api-test-write:
image: ghcr.io/wrk/wrk
command: -t4 -c30 -d20s -s /scripts/post.lua <a href="https://www.php.cn/link/f6688fcc298d6dee5c1898e2b090621c">https://www.php.cn/link/f6688fcc298d6dee5c1898e2b090621c</a>
volumes: ['./scripts:/scripts']</p><p>target-api:
image: your-api-service:latest
ports: ['8080:8080']</p><h1>可加资源限制,让压测更贴近生产约束</h1><pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">deploy:
resources:
limits:
memory: 1g
cpus: '1.0'
这样启动后,两个 wrk 容器会并行施压,同时监控目标服务资源水位,更容易暴露瓶颈点。
结合监控看真实瓶颈在哪
光看压测结果数字不够,要同步采集容器和宿主机指标:
- 实时查看:运行
docker stats --no-stream your-api-container 观察 CPU、内存、网络吞吐变化 - 长期记录:用
cadvisor(google/cadvisor:latest)暴露/metrics,接入 Prometheus + Grafana 可视化 - 定位延迟拐点:wrk 输出中的
Latency Distribution(如 P90/P99)突然升高时,立刻查对应时刻的 CPU 或 GC 日志 - 注意网络层干扰:Docker 默认桥接模式可能引入额外延迟,高精度测试建议用
--network host或macvlan
整个过程不依赖开发环境配置,也不污染本地系统,改个参数、换台机器、重跑一遍就能横向对比。关键是把“压什么”“怎么压”“怎么看”三步拆清楚,而不是堆功能。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











