[英]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 開發生態系統。
提前謝謝你。
您可以嘗試將測試分成塊/批/組,但此解決方案需要更改代碼。
更多細節
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.