我們正在使用第三方服務來創建和使用代金券。已經制作了 80k 代金券。我們的一個 cronjobs 會同步檢查每張憑證的狀態(已使用/未使用),并在我們的服務器資料庫中進行更新。完成一個通行證需要2小時,然后從第一個憑證繼續下一個通行證。
約束:
- 第三方支持每秒 6 次查詢 (QPS)。
- 我們只有一個主 Jenkins 服務器,沒有代理節點。
使用一臺 Jenkins 服務器,我們可以提高執行時間嗎?
我們可以為同一個 cronjob 在主 Jenkins 服務器上設定多個并行執行的作業嗎?就像前 50k 條記錄由一個作業處理,其余的由另一個作業處理。
uj5u.com熱心網友回復:
如果您在遇到資源(CPU、記憶體)瓶頸的情況下有垂直擴展 VM 的空間,那么您應該能夠實作性能。IMV 最佳選擇是在您的管道中使用并行階段。如果您事先知道批量大小,則可以對每個階段中的大小進行硬編碼,如果您想添加一些邏輯來確定您有多少記錄,然后根據該分配記錄,您可以創建一個具有動態階段的管道,例如以下。
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
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/529358.html
標籤:詹金斯詹金斯插件
下一篇:迭代groovy檔案內容
