我们使用第三方服务来创建和使用代金券。已经制作了8万多张代金券。我们的一个cronjob同步地逐个检查每个凭证的状态(已使用/未使用),并在服务器数据库中更新它。完成一个通行证需要2小时,然后从第一个凭证继续进行下一个通行证。
约束条件包括:
- 第三方支持每秒6个查询(QPS)。
- 我们只有一个主Jenkins服务器,没有代理节点。
使用一个Jenkins服务器我们可以改善执行时间吗?
我们可以为同一个cronjob在主Jenkins服务器上设置多个并行执行的job吗?例如,前50k条记录由一个作业处理,其余的由另一个作业处理。
如果您有空间垂直扩展您的VM,以防遇到资源(CPU,内存)瓶颈,您应该能够实现性能。IMV的最佳选择是在你的管道中使用并行级。如果你事先知道批处理大小,你可以在每个阶段内硬编码大小,如果你想添加一些逻辑来确定你有多少记录,然后基于分配记录,你可以创建一个动态阶段的Pipeline,如下所示。
pipeline {
agent any
stages {
stage('Parallel') {
steps {
script {
parallel parallelJobs()
}
}
}
}
}
def getBatches() {
// Have some logic to allocate batches
return ["1-20000", "20000-30000", "30000-50000"]
}
def parallelJobs() {
jobs = [:]
for (batch in getBatches()) {
jobs[batch] = { stage(batch) {
echo "Processing Batch $batch"
}
}
}
return jobs
}