问题描述
我正在 kubernetes 中运行 Jenkins 控制器。我注意到控制器一直在重新启动。
kgp jkmaster-0
NAME READY STATUS RESTARTS AGE
jkmaster-0 1/1 Running 8 30m
分配给pod的内存如下
Limits:
memory: 2500M
Requests:
cpu: 300m
memory: 1G
只要控制器空闲,我就看不到任何尖峰发生。但是,一旦我开始生成作业,我就会注意到出现了尖峰,每次尖峰都会导致 OOMError
并重新启动
kgp jkmaster-0
NAME READY STATUS RESTARTS AGE
jkmaster-0 0/1 OOMKilled 3 3h8m
为了进一步研究这个问题,我想生成一个堆转储。所以我所做的是添加以下内容
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/srv/jenkins/
到JAVA_OPTS
。我期待下一次当 jenkins 控制器点击 OOM
时,它应该生成一个低于 /srv/jenkins/
的 Heapdump,但没有。知道我遗漏了什么吗?
重启后 /srv/jenkins/ 下没有 java_pid.hprof
类型的文件。
所有JAVA_OPTS
JAVA_OPTS: -Djava.awt.headless=true -XX:InitialRAMPercentage=10.0 -XX:MaxRAMPercentage=60.0 -server -XX:NativeMemoryTracking=summary -XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication \
-XX:+UnlockDiagnosticVMOptions -XX:G1SummarizeRSetStatsPeriod=1 -XX:+PrintFlagsFinal -Djenkins.install.runSetupWizard=false -Dhudson.DNSMultiCast.disabled=true \
-Dhudson.slaves.NodeProvisioner.initialDelay=5000 -Dsecurerandom.source=file:/dev/urandom \
-Xlog:gc:file=/srv/jenkins/gc-%t.log -Xlog:gc*=debug -XX:+AlwaysPretouch -XX:+disableExplicitGC \
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/srv/jenkins/ -Dhudson.model.ParametersAction.keepUndefinedParameters=true -Dhudson.model.DownloadService.noSignatureCheck=true
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)