欢送拜访我的GitHub
这里分类和汇总了欣宸的全副原创(含配套源码):https://github.com/zq2599/blog_demos
K8S环境的Jenkin性能问题解决
本文是《K8S环境的Jenkin性能问题解决》的续篇,上一篇解决了Jenkins集群中的Master节点的性能问题,然而真正执行工作的并非Master节点,而是为每个工作长期创立的Pod,当这些Pod的性能问题决定着工作的快慢甚至成败;
环境信息
- 硬件:三台CentOS 7.7服务器
- kubernetes:1.15
- JDK:1.8
- maven:3.6.3
工作节点的性能问题
Java程序员罕用Jenkins编译构建Maven我的项目,如果构建参数用的是默认配置,很容易呈现性能问题,接下来就用开源我的项目来重现此问题:
- 在配置Jenkins的kubernetes插件时,依照理论硬件状况给工作pod调配的内存是1G,如下图:
- 接下来从GitHub下载Flink的源码(1.8.3-rc3版本),而后编译构建,本次工作对应的pipeline源码如下:
pipeline { agent { label 'my-jenkins-jenkins-slave' } tools { maven 'mvn-3.6.3' } stages { stage('Checkout') { steps { echo '从GitHub下载flink工程的源码(1.8.3-rc3归档包)' sh 'wget https://codeload.github.com/apache/flink/tar.gz/release-1.8.3-rc3' echo '下载完结,解压归档包' sh 'tar -zxf release-1.8.3-rc3' } } stage('Build') { steps { echo '开始编译构建' sh 'cd flink-release-1.8.3-rc3 && mvn clean package -U -s /home/jenkins/settings/settings.xml' } } }}
- 在执行编译构建工作过程中,点击下图红框中的灰色圆球,即可跳转到执行工作的Pod的日志页面:
- 下图就是Pod日志页面,红框内显示工作呈现了异样,(此时正在执行单元测试用例)
- 如下图红框所示,执行工作的Pod显示为离线状态:
- 此时登录到kubernetes环境,查看Pod状态,如下图红框所示,执行工作的Pod状态为OOMKilled,看来是内存不足导致Podl被销毁了
第一次调节
因为Pod内存过小导致工作失败,能够在Jenkins的设置页面调节Pod内存,如下图所示,这次设置到6G,留神不要超出宿主机的硬件配置:
- 反复执行一次上述工作,这一次内存短缺因此构建胜利。
察看
因为本次工作次要是执行maven编译构建,因而有必要理解一下maven过程的内存应用状况:
- 在工作执行的过程中,找到Pod对应的docker容器,ID是c6d9e1b64581
- 执行docker exec c6d9e1b64581 jps失去maven过程ID为96(名称为Launcher的那个)
- 执行docker exec c6d9e1b64581 jmap -heap 96能够看到maven过程的JVM内存状况,如下图,可见maven理论应用内存只有3G左右:
- 此时Pod有6G内存,能够通过参数设置给maven过程更多内存;
第二次调节
接下来尝试设置maven过程的内存参数,这里将大部分内存划分给老年代试试:
- 如下图,进入设置页面:
- 如下图,找到Pod Templates,新增环境变量,键是MAVEN_OPTS,值是-Xms5632m -Xmx5632m -Xmn512m -Xss256k,因为Pod总内存是6G,通过此设置后,整个Pod的零碎内存只剩512m,其余5632m内存全副划分给maven过程,并且maven过程的年老代只有512m,将所有内存都留给了老年代内存设置如下:
- 保留设置后再次执行工作,先找到工作Pod对应的docker容器,再用jmap -heap命令查看maven过程的内存状况,如下图,5632m内存全副划分给了maven过程,并且年老代也管制在512m:
- 下图是执行jstat命令查看maven过程的GC状况,红框中是YGC次数,蓝框中是FGC次数,因为年老代内存过小导致频繁YGC,不过FGC次数不多:
通过Jenkins设置页面,对工作的Pod以及对应的maven过程的自定义设置曾经实现,心愿本文能给您一些参考,帮忙您依据我的项目的特点做针对性的调节和优化。
欢送关注公众号:程序员欣宸
微信搜寻「程序员欣宸」,我是欣宸,期待与您一起畅游Java世界...
https://github.com/zq2599/blog_demos