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:最大内存的永久保存区域大小;表示对非堆区分配的内存的最大上限(方法区)
最大堆内存与最大非堆内存的和绝对不能够超出操作系统的可用内存