簡體   English   中英

Jenkins API響應調整

[英]Jenkins API response tuning

我們在詹金斯(Jenkins)之上構建了一個儀表板,該儀表板使用戶能夠僅查看與該項目相關的工作並觸發構建。 UI是使用reactJS構建的,后端是JAVA REST WebServices。

WebService調用Jenkins api來獲取Job信息,並將數據轉換為JSON以供UI使用。 目前,儀表板上有大約200個工作。 Jenkins API需要大約2分鍾的時間來響應細節。

Jenkins在Linux機器上運行

OracleLinux 6 x Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz / 39.25 GB

Jenkins版本-1.564,帶有16個執行器和2000多個工作

Sample API  Call - http://jenkins:8080/job/jobName/api/json?tree=displayName,builds[result],lastBuild[estimatedDuration,result,duration,number,timestamp,actions[causes[userName]]]

該API被調用200次以獲取200個作業,以獲取每個作業的詳細信息。

有關如何加快API響應速度的任何建議。

我考慮過增加Linux機器上的RAM並調整JVM OPTS。 還將詹金斯家族升級到最新的LTS。

低掛水果:

  1. 並行運行請求,即不要一個接一個地運行。
  2. 如果這樣做,並且使用標准jetty容器 ,請嘗試使用--handlerCountMax選項(默認值為40)來增加輔助進程數量

最終,您應該避免執行200個單獨的請求 根據您的設置,僅針對每個請求的安全檢查都可能導致大量開銷。

因此, 最干凈的解決方案是從主服務器上的單個Groovy腳本收集所需的所有數據 (也可以通過REST來完成此操作):

  • 這將請求數量減少到1
  • 並且可以進行進一步的優化,從而可能避免上述喬恩·S(Jon S)評論中提到的問題

好像您在服務器上沒有遇到任何延遲加載問題(因為每個作業只有60個內部版本),所以這些問題可能與Alex O建議的開銷有關。 同樣,Alex O建議在單個請求中完成所有操作。 可以通過以下請求完成:

http://jenkins:8080/api/json?tree=jobs[displayName,builds[result],lastBuild[estimatedDuration,result,duration,number,timestamp,actions[causes[userName]]]]

不用依賴作業API,我們使用jenkins API,在該API中,我們可以在單個請求中獲取所有作業的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM