如何在jenkins中调查Java堆空间错误

zpgglvta  于 2022-11-21  发布在  Jenkins
关注(0)|答案(1)|浏览(115)

我 有 一 个 * * 矩阵 管道 作业 * * , 它 执行 多 个 阶段 ( 大约 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}"
               )
            }
        }

中 的 每 一 个
问题 是 此 报告 阶段 经常 失败 , 并 出现 以下 错误 :

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

格式
我 已经 通过 修改 systemd 服务 配置 将 jenkins 服务 器 的 堆 空间 增加 到 8GB , 方法 如下 :

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

格式
因为 我 使用 以下 命令 进行 了 验证 :

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 插件 ) 可能 有 缺陷 , 可能 会 消耗 太 多 内存 。
有人 知道 这样 的 事情 吗 ? 有 没有 变通 的 办法 ?
更 重要 的 是 , 如果 一 个 插件 消耗 太 多 , 我 可以 使用 哪些 方法 来 尝试 跟踪 ? 我 从 CS 学位 开始 就 对 Java 有 了 概念 , 但 我 对 jenkins 开发 生态 系统 并 不 熟悉 。
先 谢谢 你 了 。

相关问题