同一个cronjob的多个job在Jenkins中使用不同的参数



我们使用第三方服务来创建和使用代金券。已经制作了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
}

最新更新