2014-02-06 63 views
0

我有一個在Jenkins上運行的持續集成設置,每當我將更改推送到特定分支時,Jenkins啓動50個EC2從站。每個奴隸檢查分支並對分支運行一些測試。如何限制GitLab啓動的git進程數量?

問題是,50個EC2從站一次啓動,他們簽出了我的GitLab服務器的分支,它啓動每個從站的git進程並快速耗盡內存(儘管服務器有7.5 GB的RAM。)

如果我期待在上面,我可以馬上看到,隨着奴隸走了,許多使用Git的過程中出現,並開始迅速消耗掉所有內存。 kern.log告訴我內核必須定期殺死一個git進程,因爲系統內存不足。

我的問題是我怎麼限制GitLab開始以這樣的方式使奴隸不認爲GitLab已經走了git的進程數。 (我想GitLab把請求隊列中,同時爲他們服務10等。)

我也考慮了一些其他的想法。例如,我可以讓一些奴隸(種子奴隸)從GitLab中拉出分支,然後讓其他奴隸從這些種子奴隸中拉出分支。但是,這似乎可能涉及一些工作。

另一個想法是,我可以用幾秒鐘錯開EC2推出,到分佈在一兩分鐘的請求。或者,我可以獲得更多的記憶。

我歡迎任何其他方法來處理這個問題的想法。

+0

你在你的主gitlab盒上運行一個CI運行器嗎? –

回答

0

我認爲你最後的想法是最好的: 儘量分散負載爲您gitlab實例。

例如,你可以通過建立神器啓動CI:

假設你一起工作的Java說,你可以建立在CI服務器上的戰爭文件,並通過一個共享的S3存儲分發。

這樣,每次構建時只需查詢一次gitlab,並根據需要運行儘可能多的副本。每個實例下載構建並運行其測試。