Workflow-CPS并行阶段中sh命令执行卡顿问题咨询
问题:Jenkins Workflow-CPS Parallel Step 导致Sh命令响应延迟
我们的主构建流水线使用workflow-cps的parallel步骤同时运行约50个容器,高度依赖sh命令。当并行阶段添加更多代理时,被Groovy脚本包裹的sh命令完成时间会明显变长,该现象在常规Linux静态节点和K8s Pod代理中均存在。
复现流水线代码
pipeline { agent none stages { stage('Build and Test') { parallel { stage('Stage1') { agent { kubernetes { yaml """ apiVersion: v1 kind: Pod metadata: name: test-pod spec: containers: - name: test-build image: ubuntu resources: requests: memory: 4000Mi cpu: 4 limits: memory: 4000Mi cpu: 4 command: ['sleep'] args: ['6h'] tty: true """ } } steps { container('test-build') { script{ for (int i = 0; i < 30; i++) { sh 'cat /etc/hosts' } } } } } stage('Stage2') { agent { kubernetes { yaml """ apiVersion: v1 kind: Pod metadata: name: test-pod spec: containers: - name: test-build image: ubuntu resources: requests: memory: 4000Mi cpu: 4 limits: memory: 4000Mi cpu: 4 command: ['sleep'] args: ['6h'] tty: true """ } } steps { container('test-build') { script{ for (int i = 0; i < 30; i++) { sh 'cat /etc/hosts' } } } } } // ... 重复添加更多相同阶段 } } } }
测试结果
- 7个并行阶段:每个代理完成耗时约50秒
- 17个并行阶段:每个代理完成耗时约120秒
- 35个并行阶段:每个代理完成耗时约270秒
- 对比测试:仅保留1个并行阶段,同时触发50次独立构建,每个构建仅需约15秒完成
分析与诉求
这并非通用的系统负载问题,推测parallel步骤以某种机制限制了sh命令的响应速度,怀疑与CpsFlowExecution线程的调度或资源限制有关,恳请提供针对性的解决建议。
内容的提问来源于stack exchange,提问作者SimpleNiko
相关产品推荐
相关产品推荐

