You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何排查Jenkins矩阵流水线的Java堆内存溢出问题

矩阵流水线JUnit报告阶段Java堆内存溢出问题排查求助

背景与问题

我有一个矩阵流水线任务(matrix pipeline job),包含约200个阶段,其中多数为功能测试,测试结果通过以下流水线代码记录:

stage('Report') {
    script {
       def summary = junit allowEmptyResults: true, testResults: "**/artifacts/${product}/test-reports/*.xml"
       def buildURL = "${env.BUILD_URL}"
       def TestAnalyzer = buildURL.replace("/${env.BUILD_NUMBER}", "/test_results_analyzer")
       def TestsURL = buildURL.replace("job/${env.JOB_NAME}/${env.BUILD_NUMBER}", "blue/organizations/jenkins/${env.JOB_NAME}/detail/${env.JOB_NAME}/${env.BUILD_NUMBER}/tests")
       slackSend (
          color: summary.failCount == 0 ? 'good' : 'warning',
          message: "*<${TestsURL}|Test Summary>* for *${env.JOB_NAME}* on *${env.HOSTNAME} - ${product}* <${env.BUILD_URL}| #${env.BUILD_NUMBER}> - <${TestAnalyzer}|${summary.totalCount} Tests>, Failed: ${summary.failCount}, Skipped: ${summary.skipCount}, Passed: ${summary.passCount}"
       )
    }
}

该Report阶段频繁出现如下错误:

> Archive JUnit-formatted test results                        9m 25s
[2022-11-16T02:51:49.569Z] Recording test results
Java heap space

已尝试的操作

我已通过修改systemd服务配置调整Jenkins服务器堆内存:

software-dev@magnet:~$ sudo cat /etc/systemd/system/jenkins.service.d/override.conf
[Service]
Environment="JAVA_OPTS=-Djava.awt.headless=true -Xmx8g"

验证配置已生效(当前已将堆大小提升至10GB):

software-dev@magnet:~$ tr '\0' '\n' < /proc/$(pidof java)/cmdline
/usr/bin/java
-Djava.awt.headless=true
-Xmx10g
-jar
/usr/share/java/jenkins.war
--webroot=/var/cache/jenkins/war
--httpPort=8080

目前正在等待夜间构建结果,但认为10GB的堆内存规模过大,怀疑是JUnit等插件存在内存泄漏问题。

求助问题

  • 是否有人遇到过类似情况?是否有可行的规避方案?
  • 具备Java基础但不熟悉Jenkins开发生态的情况下,该通过哪些方法排查插件的内存占用情况?

内容的提问来源于stack exchange,提问作者ncarrier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 20:11:28