如何排查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
相关产品推荐
相关产品推荐

