【发布时间】:2022-06-23 09:38:07
【问题描述】:
我们有一个 Jenkins 服务器 (2.319.2-lts-alpine) 在 AWS EC2 c5.2xlarge 实例的 docker 容器中运行,该实例有 8 个 vCPU。 这个 Jenkins 服务器有一个主节点(现在称为内置),它设置了 #0 执行器,因为我们不想在那里运行任何构建。它仅用于通过标签将队列中的构建分配给各个从节点。
现在,这个内置节点在 JavaMelody 监控中不断显示 100% CPU 百分比,导致 Jenkins 有时响应缓慢。我们最终会在白天发生很多 504 超时。
这些是我们为内置节点设置的 JVM 选项:"-XX:+UseContainerSupport -XX:MaxRAMPercentage=60.0 -XX:InitialRAMPercentage=50.0 -Djenkins.install.runSetupWizard=false -Dmail.smtp.starttls.enable=true -Dmail.smtp.ssl.protocols=TLSv1.2 -Dhudson.security.csrf.DefaultCrumbIssuer.EXCLUDE_SESSION_ID=true -Dorg.jenkinsci.plugins.docker.workflow.client.DockerClient.CLIENT_TIMEOUT=300 -Xloggc:$JENKINS_HOME/gc-%t.log -XX:NumberOfGCLogFiles=5 -XX:+UseGCLogFileRotation -XX:GCLogFileSize=20m -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCCause -XX:+PrintTenuringDistribution -XX:+PrintReferenceGC -XX:+PrintAdaptiveSizePolicy -XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:+ParallelRefProcEnabled -XX:+UseStringDeduplication -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=20 -XX:+UnlockDiagnosticVMOptions -XX:G1SummarizeRSetStatsPeriod=1 -Djenkins.CLI.disabled=true -Dpermissive-script-security.enabled=no_security -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=0 -Djava.util.logging.config.file=/opt/jenkins/logging.properties"
我注意到即使 CPU 百分比有时会降低,但不会降低那么多,并且如果有任何作业进入队列,它会立即上升到 100%。
我已经花了很多时间在谷歌上搜索试图找到任何可行的方法,但我找不到 CPU 使用率总是如此之高的原因。 有什么想法可以帮我解决这个问题吗?
【问题讨论】:
-
您可能需要进行线程转储并进一步分析。
标签: jenkins