jenkins性能優化
1、評估安裝插件,插件數量過多,會導致界面加載慢;
2、添加slave節點;
01、禁止在master上構建性能耗費大的任務,可以使用標簽的方式使其在slave上構建;
02、減少定時構建或輪詢SCM構建時間或次數;實際生產中,這兩個一般是不配置的;
3、提高磁盤IO性能;
4、可以用nginx增加緩存功能;
5、無論是master還是slave,執行器的數量不要大於CPU的核心數;
6、設置合適的保持構建天數和保持構建的最大個數;釋放磁盤空間;
7、maven倉庫設置成國內源
8、yarn設置為國內鏡像
npm install -g yarn
npm install --registry=https://registry.npm.taobao.org
yarn config set registry https://registry.npm.taobao.org --global
yarn config set disturl https://npm.taobao.org/dist --global
9、nodejs(npm)設置為國內鏡像
臨時設置:npm --registry https://registry.npm.taobao.org install xxx
全局設置:npm config set registry https://registry.npm.taobao.org
10、取消jenkins的定時清理工作空間任務
一些前端項目在構建時往往需要下載一些依賴庫,在構建時,到yarn install步驟的時候會等很長一段時間,即使全局定義指定淘寶的倉庫也一樣,然后研發開始找事情,經過測試,在不刪除工作空間的情況下,構建時會優先使用本地緩存,構建速度會大幅度提升,但是jenkins有定時清理工作空間的功能,需要關掉它;
cat jenkins.log|grep Workspace 查看jenkins日志,會發現,每天都會執行清理workspace的任務;
2021-08-22 00:51:19.309+0000 [id=1038] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$0: Started Workspace clean-up 2021-08-22 00:51:19.321+0000 [id=1038] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$0: Finished Workspace clean-up. 9 ms 2021-08-23 00:51:19.309+0000 [id=1278] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$0: Started Workspace clean-up 2021-08-23 00:51:19.328+0000 [id=1278] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$0: Finished Workspace clean-up. 18 ms 2021-08-24 00:51:19.308+0000 [id=1566] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$0: Started Workspace clean-up 2021-08-24 00:51:19.315+0000 [id=1566] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$0: Finished Workspace clean-up. 5 ms 2021-08-25 00:51:19.309+0000 [id=1808] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$0: Started Workspace clean-up 2021-08-25 00:51:19.334+0000 [id=1808] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$0: Finished Workspace clean-up. 24 ms 2021-08-26 00:51:19.309+0000 [id=2049] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$0: Started Workspace clean-up 2021-08-26 00:51:19.314+0000 [id=2049] INFO hudson.model.AsyncPeriodicWork#lambda$doRun$0: Finished Workspace clean-up. 4 ms
設置方法:Manage Jenkins ---> Script Console 執行命令:hudson.model.WorkspaceCleanupThread.disabled = true
注意:每次重啟jenkins都要設置下;
JVM性能優化
JENKINS_JAVA_OPTIONS=”-Djava.awt.headless=true -Xms10240m -Xmx10240m -XX:MaxNewSize=1024m -XX:MaxPermSize=1024m”
1、-Xmx:使用的最大堆內存大小;表示java虛擬機堆區內存可被分配的最大上限,默認為物理可用內存的1/4或者1G,最小為2M;
2、-Xms:使用的最小堆內存大小;初始堆大小,表示java虛擬機堆區內存初始內存分配的大小;默認為物理可用內存的1/64,最小為1M;
開發過程中,通常會將-Xms 與-Xmx兩個參數的配置相同的值,其目的是為了能夠在java垃圾回收機制清理完堆區后不需要重新分隔計算堆區的大小而浪費資源。
3、-XX:newSize:表示新生代初始內存的大小,應該小於-Xms的值;
4、-Xmn:至於這個參數則是對 -XX:newSize、-XX:MaxnewSize兩個參數的同時配置,也就是說如果通過-Xmn來配置新生代的內存大小,那么-XX:newSize = 5、-XX:MaxnewSize = -Xmn,雖然會很方便,但需要注意的是這個參數是在JDK1.4版本以后才使用的
6、-XX:PermSize:內存的永久保存區域大小;表示非堆區初始內存分配大小(方法區)
7、-XX:MaxPermSize:最大內存的永久保存區域大小;表示對非堆區分配的內存的最大上限(方法區)
最大堆內存與最大非堆內存的和絕對不能夠超出操作系統的可用內存