簡體   English   中英

Jenkins 作業窗口批處理執行比在 cmd.exe 中執行慢 20 倍

[英]Jenkins job windows batch execution 20 times slower than executing in cmd.exe

我剛剛在 Windows 2012 Server \o/ 上安裝了 Jenkins 2.46.2。 它作為系統服務運行。

我創建了一個執行 Windows 批處理 (.bat) 腳本來構建代碼項目的作業。 此批處理導致執行 2 個 mingw32-make.exe 命令來清理然后從源代碼構建完整的二進制文件。 在機器上手動執行批處理,位於同一文件系統(與 Jenkins 的作業使用的工作空間相同,本地磁盤 - 不是網絡磁盤),干凈構建大約需要 50 秒。

但是當由 Jenkins 執行時,這項工作需要的時間要長 20 倍以上! (約 19 分鍾)。 它以與在 cmd.exe 中手動執行的相同行為成功終止。

我在文檔中閱讀了“-Xmx1024m -XX:MaxPermSize=512m”選項以提高性能,我在 jenkins.xml 文件中更改了 jvm 的啟動參數。 但它不能解決任何問題:-(

此外,當我監控 CPU/磁盤/RAM 使用情況時,它們在構建時都保持非常低的水平,因此我推斷機器的粗暴性能不是原因。

無論我是否在 Jenkins 作業構建步驟中使用 call 語句調用批處理都不會改變任何內容:作業總是持續 19 分鍾。

誰能幫我調查一下為什么這么慢?

提前致謝 :)

我有一個類似的問題。 我注意到帶有echo Hello World的 .bat 文件運行得很快並且沒有問題。

但是,一旦我嘗試從批處理腳本啟動任何 grep.exe,即使沒有輸入文件,也需要 24 秒(在我的情況下)才能運行。 如果手動啟動,它會立即完成。

我使用了 MSys 1.0 發行版中的 grep.exe 2.5.4 版。

在我的情況下,解決方案相當出乎意料 - 我將 grep 更新到 2.24 版,現在,從 Jenkins 啟動,處理超過 1 MB 的日志文件只需不到一秒的時間。

經過幾天的調查,我終於找到了原因。

就我而言,這是 Jenkins 代理的原因。

當我在從屬代理中將Jenkins代理安裝為Windows服務時,消耗時間非常巨大,但是當我嘗試通過Windows命令行啟動Jenkins代理時,消耗時間與手動執行批處理文件一樣正常。

我的環境:

  • 主控:CentOS7
  • 奴隸特工:贏7

並且我也在win 10的一個slave agent上測試了這個案例進行對比。 通過 Jenkins 執行的時間與在代理機器上手動執行批處理文件的時間大致相同。

所以我猜這是win 7和Jenkins之間的兼容性問題。 但是對於Jenkins官方說Jenkins不再支持win 7(微軟不支持Windows 7),我們暫時擱置了。

無論如何,我們找到了克服這一點的方法。 希望這對您類似的情況有所幫助。

暫無
暫無

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

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