通过Docker Compose运行多K6实例是否属于真正的并行测试?
关于K6 Docker Compose并行测试的问题解答
1. 关于容器独立运行单元的认知判断
你提到的「Docker Compose启动的每个K6容器都是独立运行单元」的认知基本正确:
- 每个容器对应宿主机上独立的k6进程,拥有独立的进程、网络namespace,默认不会互相干扰
- 处理器资源默认共享宿主机的总CPU资源,只要宿主机有足够的空闲CPU核心,两个容器的进程会被操作系统调度到不同核心同时执行;如果需要严格分配独立CPU资源,可以在service配置里加
cpus、cpuset参数做资源隔离。
2. 当前配置是否属于真正的并行执行
你当前的配置属于真正的并行执行,原因如下:
- Docker Compose默认启动时会同时启动所有没有配置依赖(
depends_on)的服务,你两个k6服务没有配置启动依赖,执行docker compose up时两个k6测试任务会几乎同时启动 - 两个测试进程独立调度,只要宿主机资源充足,两个脚本的执行过程全程并行,不会出现先后串行执行的情况。
3. 是否可以认定为并行测试
这取决于你对并行测试的定义:
- 如果你要实现的是「多份不同的测试脚本同时执行、测试过程互不干扰」,那该方案完全符合并行测试的要求,测试结果独立可分别统计。
- 如果你要实现的是K6分布式负载测试(即同一份测试脚本拆分到多个节点运行,汇总所有节点的VU、请求指标实现更高并发压测),那当前配置不属于这类并行:你两个容器跑的是不同的测试脚本,也没有配置K6分布式集群的相关参数,无法合并总测试指标。
额外提示:你当前配置里的挂载路径和脚本执行路径不匹配,volumes挂载的是本地目录到
/specs,但command里引用的是/tests/路径下的脚本,直接运行会报找不到脚本的错误,建议修改路径保持一致。
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

