Hudson

以較低的程序優先級執行 Hudson 建構

  • February 7, 2012

在我的辦公室,我們有一台執行 Hudson (1.395) 的舊伺服器和其他一些東西(JIRA 和 SVN 是重要的兩個)。當 Husdon 執行建構時,伺服器上的減速非常明顯。

我一直在嘗試找到一種方法來重新優化 Hudson 啟動的建構過程(我們使用 maven)。似乎沒有這個選項。我不希望正在執行的 Tomcat Hudson 副本的優先級較低,因此我一直在嘗試找出一種僅將其應用於建構過程的方法。在不替換/添加伺服器/從屬設備的情況下,這些是我見過的唯一選項:

  1. 我可以用我自己的外掛替換 maven 外掛,它通過 nice 啟動 Java。儘管我已經在程式碼中找到了更改的位置(在 MavenProcessFactory.java 中,大約第 110 行),但要進行如此小的更改似乎還有很長的路要走。這將是一個維護負擔
  2. 我可以將 Hudson 指向一個偽造的 Java 目錄。通過這樣做,我可以用一個呼叫真正的 Java 的 shell 腳本替換 Java,reniced。
  3. 我可以設置某種腳本,例如使用 cron,但我必須擷取每個子程序才能正確執行

有沒有人做過這樣的事情?你知道另一種選擇嗎?

選項#3 是一個明顯的技巧。#2 避免了我必須接觸程式碼(所以我不必擔心未來的升級),但目前尚不清楚發生了什麼。修補程式碼需要一些維護,但我可以清楚地說明我是如何執行 Maven 的,甚至可以在每個項目的基礎上進行配置。

如果軟體本身沒有讓您執行此操作的功能,您幾乎已經概述了三個可用的選項,可以在不費力工作的情況下實現它。

更仔細地查看這些選項:

選項3很爛。不要這樣做。太複雜和太多的可能性搞砸了。

選項 1 不那麼糟糕——你只需要記住每次升級時都要打更新檔,這很煩人。

選項 2 是 Least Suck 路徑。這是我會做的。

是的,發生了什麼並不是很明顯,但是如果你記錄你所做的事情(並且文件一個顯而易見的地方),這不是一個糟糕的解決方案。

引用自:https://serverfault.com/questions/319566