簡體   English   中英

如何調查 jenkins 中的 Java 堆空間錯誤

[英]How to investigate Java Heap Space errors in jenkins

我有一個矩陣管道作業,它執行多個階段(大約 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 服務器的堆空間增加到 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

我剛剛將 Heap 大小增加到 10GB,我將等待今晚構建的結果,但我感覺這個 Heap 空間量看起來確實過大,所以我懷疑是一個插件,也許是 JUnit 那個,可能是越野車,可能會消耗太多 memory。

有人知道這樣的事情嗎? 可以有解決方法嗎?

更重要的是,我可以使用哪些方法來嘗試跟蹤某個插件是否消耗過多? 自從我獲得 CS 學位以來,我就有 Java 的概念,但我不熟悉 jenkins 開發生態系統。

提前謝謝你。

您可以嘗試將測試分成塊/批/組,但此解決方案需要更改代碼。

更多細節

https://semaphoreci.com/community/tutorials/how-to-split-junit-tests-in-a-continuous-integration-environment

分組 JUnit 測試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM