目前有4种Jenkins环境,
a) 单机版
b) Docker云(单个机器,但是任务运行在Docker容器)
c) K8s 云(两个节点(106.75.33.219(master),106.75.96.108 都是2核4G,机械磁盘,Jenkins master在Kubernetes集群中启动的Pod,放在Kubernetes主节点,其他Jenkins任务不允许在主节点调度。)
d) Jenkins 分布式(两个节点(106.75.33.219(master),106.75.96.108 都是2核4G,机械磁盘)
a,b,d 3个Jenkins执行单个Job(pipeline任务,输出hello
world)时间都是1s内,而k8s分布式执行单个Job的构建平均需要10s左右,具体时间如下:
以前针对单机版和K8s云Jenkins并行构建做了一定测试,K8s云并行10个任务,任务并不能实际并行10个,10个任务一起开始构建,但是并没有完全并行,后面的任务一直在等待,pipeline脚本一直没有执行。所有,进行如下测试,确定并行机制。
针对以上4中Jenkins环境分别测试并发性。测试方案:
同时构建多个JOB(5个和10个)每个Job中每隔5s打印一行日志,Job持续一定时间(60s),根据日志的输出情况,以及Job开始构建和结束构建的时间,判断该Jenkins环境的并发情况。
记录开始构建时间,以及开始构建后,日志打印的间隔时间分别是多少,是否是设置的间隔5s?构建5个Job和10个Job是否一致。
JobName |
发送构建请求的时间 |
开始构建时间 |
打印第一条日志时间 |
打印第m条日志的时间 |
打印第n条日志的时间 |
结束构建的时间 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
根据我们初步的测试,单机版(不使用容器)10个任务的并行是完全可以的,我们设置每个任务每隔5s打印一次日志,持续1分钟,十个任务并行构建,开始构建的时间和结束构建的时间如下,第一个时间是开始构建时间,后一个时间是结束构建时间:
taskId: testJob_1#1,2017-04-20 10:22:00,2017-04-20 10:23:09,master
taskId: testJob_2#1,2017-04-20 10:22:01,2017-04-20 10:23:09,master
taskId: testJob_3#1,2017-04-20 10:22:01,2017-04-20 10:23:10,master
taskId: testJob_4#1,2017-04-20 10:22:02,2017-04-20 10:23:10,master
taskId: testJob_5#1,2017-04-20 10:22:02,2017-04-20 10:23:10,master
taskId: testJob_6#1,2017-04-20 10:22:02,2017-04-20 10:23:11,master
taskId: testJob_7#1,2017-04-20 10:22:03,2017-04-20 10:23:11,master
taskId: testJob_8#1,2017-04-20 10:22:03,2017-04-20 10:23:11,master
taskId: testJob_9#1,2017-04-20 10:22:03,2017-04-20 10:23:12,master
taskId: testJob_10#1,2017-04-20 10:22:03,2017-04-20 10:23:12,master
All work Done
每个任务的日志输出基本每隔5-6s,是完全并行执行的。下面是某个任务的日志打印情况和时间间隔
系统日志打印 | 时间间隔 |
2017/4/20 15:26 | 6 |
2017/4/20 15:26 | 6 |
2017/4/20 15:26 | 6 |
2017/4/20 15:27 | 5 |
2017/4/20 15:27 | 6 |
2017/4/20 15:27 | 6 |
2017/4/20 15:27 | 6 |
2017/4/20 15:27 | 5 |
2017/4/20 15:27 | 6 |
2017/4/20 15:27 | 6 |
2017/4/20 15:27 | 5 |
2017/4/20 15:27 |