玩Devops的小伙伴應該對Jenkins都有了解,
Github上16.8k的Star的專案,1500+的構建、發布等自動化插件可供選擇,事實上的業界CICD標準領導者,
JFrog、Coding等一眾你能見到的企業級的Devops解決方案基本上都是用Jenkins做引擎,
產研流水線用Jenkins可以說真的很香,?但是前幾天它突然不聽話了,它也有不香的時候,手動裂開,
前幾天在做一個jenkins job的遷移,由于是第一次搞,在遷移的程序中遇到了小意外,出了點小插曲,
起因是在遷移的程序中發現一個歷史的ci的pipeline job對應build目錄特別大,執行下面的命令壓縮備份起來例外耗時,等的花兒都謝了,
# tar -czvf a-jobs-bak.tar.gz a-jobs
熟悉jenkins的同學都應該知道build目錄是用來存放job的歷史構建記錄的,于是進去之后執行下面的命令發現有近 N w個歷史構建記錄的檔案夾沒洗掉,
# ls | wc -l
所以就到job的配置頁面查看job的配置,發現該job并沒有配置丟棄舊的構建的策略,

然后愉快的給該job配置了一個丟棄舊的構建的策略

本以為萬事大吉,靜靜的等著jenkins清理歷史構建記錄即可,不想一會兒,就有不少同事反饋構建的流水線回應緩慢,有不少超時,
于是趕緊在瀏覽器中訪問jenkins,這個時候發現jenkins頁面加載已經例外緩慢,基本上已經打不開了,
沒有多想,第一反應就是剛配置的丟棄舊的構建策略生效后由于檔案過多,整個jenkins都在刪檔案導致的,所以就趕緊重啟jenkins,
# systemctl restart jenkins
起來之后發現,瀏覽器中可以訪問jenkis,但是依然比較緩慢,這個時候感覺上面配置的丟棄舊的構建的策略依然在起作用,服務器依然在忙于刪檔案,
然后就立即洗掉上面給這個job配置的丟棄舊的構建的策略,緊接著再次重啟jenkins服務,服務起來后沒有再次出現回應緩慢卡頓的現象,同事們反饋所有研發的流水線恢復正常,問題得到解決,
這里要說明的是設定丟棄舊的構建策略在提交之后并不會立即生效,而是在有新的任務進來并且執行完成之后才會觸發,
由于上面操作的是生產的ci,所有研發人員的構建部署事件都會通過中間件向上面提交,配置的丟棄舊的構建的策略提交之后立馬會有任務進來,
這個時候就觸發了丟棄舊的構建的執行,于是jenkins就開始忙于洗掉數以萬計的檔案,然后就出現了上文中所述的問題,
總結一下本次得到的教訓就是在正常的jenkins服務時間內一定要謹慎的設定或者修改job的的丟棄舊的構建策略來讓jenkins去主動去洗掉大量的歷史構建記錄,這會是個災難,會引起你的服務不可用,
所以我們在給有需要job配置丟棄舊的構建策略之前一定要先確定下服務器上歷史構建記錄的數量,
如果該job下歷史構建記錄較多,達到了以萬計,建議你選擇在正常的jenkins服務時間內手動分批洗掉,或者在服務使用量低峰或者服務維護時間進行洗掉操作,
如果需要洗掉的檔案數較少,你可以通過設定或者修改job的丟棄舊的構建策略等待jenkins自動洗掉,
更推薦的做法是在job創建之初就給job配置丟棄舊的構建策略并且指定保持構建的最大次數為一個較小的值,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/248930.html
標籤:其他
下一篇:centos8安裝jenkins
