写点什么

K8S 环境的 Jenkin 性能问题处理续篇 (任务 Pod 设置)

作者:Java高工P7
  • 2021 年 11 月 11 日
  • 本文字数:1004 字

    阅读完需:约 3 分钟

Java 程序员常用 Jenkins 编译构建 Maven 项目,如果构建参数用的是默认配置,很容易出现性能问题,接下来就用开源项目来重现此问题:


  1. 在配置 Jenkins 的 kubernetes 插件时,给任务 pod 分配的内存是 1G,如下图:



  1. 接下来从 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'


}


}


}


}


  1. 在执行编译构建任务过程中,点击下图红框中的灰色圆球,即可跳转到执行任务的 Pod 的日志页面:


![在这里插入图片描述](https://img-blog.csdnimg.cn/20200329165402481.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JvbGluZ19jYXZhbHJ5,s


【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


ize_16,color_FFFFFF,t_70)


  1. 下图就是 Pod 日志页面,红框内显示任务出现了异常,(此时正在执行单元测试用例)



  1. 如下图红框所示,执行任务的 Pod 显示为离线状态:



  1. 此时登录到 kubernetes 环境,查看 Pod 状态,如下图红框所示,执行任务的 Pod 状态为 OOMKilled,看来是内存不足导致 Podl 被销毁了:


第一次调节(K8S 参数)

  1. 由于 Pod 内存过小导致任务失败,可以在 Jenkins 的设置页面调节 Pod 内存,如下图所示,这次设置到 6G,注意不要超出宿主机的硬件配置:



  1. 重复执行一次上述任务,这一次内存充足因而构建成功;

观察

由于本次任务主要是执行 maven 编译构建,因此有必要了解一下 maven 进程的内存使用情况:


  1. 在任务执行的过程中,找到 Pod 对应的 docker 容器(kubectl describe pod xxx 命令),ID 是 22484d8b1e56

  2. 执行 docker exec 22484d8b1e56 jps 得到 maven 进程 ID 为 87(名称为 Launcher 的那个),如下图:



  1. 执行 docker exec 22484d8b1e56 jmap -heap 87 可以看到 maven 进程的 JVM 内存情况,如下图,可见 maven 实际使用内存只有 3G 左右:



  1. 此时 Pod 有 6G 内存,可以通过参数设置给 maven 进程更多内存;

第二次调节(JVM 参数)

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
K8S环境的Jenkin性能问题处理续篇(任务Pod设置)