You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins 2.375.4中hudson.triggers.SafeTimerTask执行失败求助

Jenkins无法创建本地线程问题排查与解决

环境信息

  • Jenkins版本:2.375.4
  • 运行环境:RHEL-8系统的Podman容器,容器由systemd服务管理

错误日志

Apr 18 11:39:19 rhrd0100lws004d.ncte.navy.local container-jenkins[2628014]: [72922.726s][warning][os,thread] 无法启动线程 - pthread_create调用失败(EAGAIN),属性:stacksize: 1024k, guardsize: 0k, detached。
Apr 18 11:39:19 rhrd0100lws004d.ncte.navy.local container-jenkins[2628014]: 2023-04-18 11:39:19.832+0000 [id=51]        SEVERE        hudson.triggers.SafeTimerTask#run: 定时任务hudson.model.Queue$MaintainTask@4bd07352执行失败
Apr 18 11:39:19 rhrd0100lws004d.ncte.navy.local container-jenkins[2628014]: java.lang.OutOfMemoryError: 无法创建本地线程:可能是内存不足或达到进程/资源限制
Apr 18 11:39:19 rhrd0100lws004d.ncte.navy.local container-jenkins[2628014]:         at java.base/java.lang.Thread.start0(Native Method)
Apr 18 11:39:19 rhrd0100lws004d.ncte.navy.local container-jenkins[2628014]:         at java.base/java.lang.Thread.start(Thread.java:798)
Apr 18 11:39:19 rhrd0100lws004d.ncte.navy.local container-jenkins[2628014]:         at hudson.model.Executor.start(Executor.java:844)
Apr 18 11:39:19 rhrd0100lws004d.ncte.navy.local container-jenkins[2628014]:         at hudson.model.Computer.startFlyWeightTask(Computer.java:1303)
Apr 18 11:39:19 rhrd0100lws004d.ncte.navy.local container-jenkins[2628014]:         at hudson.model.Queue.lambda$createFlyWeightTaskRunnable$1(Queue.java:1790)
Apr 18 11:39:19 rhrd0100lws004d.ncte.navy.local container-jenkins[2628014]:         at hudson.model.Queue.maintain(Queue.java:1578)
Apr 18 11:39:19 rhrd0100lws004d.ncte.navy.local container-jenkins[2628014]:         at hudson.model.Queue$MaintainTask.doRun(Queue.java:2909)
Apr 18 11:39:19 rhrd0100lws004d.ncte.navy.local container-jenkins[2628014]:         at hudson.triggers.SafeTimerTask.run(SafeTimerTask.java:94)
Apr 18 11:39:19 rhrd0100lws004d.ncte.navy.local container-jenkins[2628014]:         at jenkins.security.ImpersonatingScheduledExecutorService$1.run(ImpersonatingScheduledExecutorService.java:69)
Apr 18 11:39:19 rhrd0100lws004d.ncte.navy.local container-jenkins[2628014]:         at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
Apr 18 11:39:19 rhrd0100lws004d.ncte.navy.local container-jenkins[2628014]:         at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
Apr 18 11:39:19 rhrd0100lws004d.ncte.navy.local container-jenkins[2628014]:         at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
Apr 18 11:39:19 rhrd0100lws004d.ncte.navy.local container-jenkins[2628014]:         at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
Apr 18 11:39:19 rhrd0100lws004d.ncte.navy.local container-jenkins[2628014]:         at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
Apr 18 11:39:19 rhrd0100lws004d.ncte.navy.local container-jenkins[2628014]:         at java.base/java.lang.Thread.run(Thread.java:829)

原因分析

  • 线程资源配额耗尽:pthread_create返回EAGAIN错误,说明当前进程已达到系统或容器允许的最大线程数限制,无法创建新线程。
  • 内存不足:每个Java线程默认分配1024KB栈内存,当容器或系统可用内存不足时,无法为新线程分配栈空间,触发OutOfMemoryError。
  • 容器资源限制:Podman容器可能被设置了严格的进程数(PIDs)或内存配额,限制了Jenkins进程的线程创建能力。
  • Jenkins线程配置不合理:如果Jenkins主节点执行器数量过多、插件后台线程冗余,会导致线程资源被快速耗尽。

解决办法

1. 调整Java线程栈大小

修改Jenkins的JVM启动参数,减小线程栈占用,从而在相同内存下支持更多线程:

  • 找到Jenkins的启动配置(如systemd服务文件/etc/systemd/system/container-jenkins.service),在JVM参数中添加-Xss512k(将栈大小从1024KB改为512KB)。
  • 执行命令重启服务:
    systemctl daemon-reload
    systemctl restart container-jenkins
    

2. 提升容器资源限制

  • 增加进程数限制:修改Podman容器启动命令,添加--pids-limit 65535(允许最大65535个进程/线程),更新systemd服务文件后重启容器。
  • 增加内存配额:在容器启动命令中添加--memory 4g(分配4GB内存,根据实际情况调整),确保有足够内存分配线程栈。

3. 优化Jenkins内部线程使用

  • 减少执行器数量:登录Jenkins管理界面,进入「系统管理」→「节点管理」→「主节点配置」,降低「执行器数量」,避免创建过多执行线程。
  • 清理冗余插件与任务:禁用或卸载未使用的插件,减少后台线程消耗;检查并删除不必要的定时任务,降低线程负载。

4. 调整系统级资源限制

在RHEL-8宿主机上,提升Jenkins用户的进程数限制:

  • 编辑/etc/security/limits.conf,添加以下配置:
    jenkins soft nproc 65535
    jenkins hard nproc 65535
    
  • 重启系统或重新登录后,配置生效,再重启Jenkins容器。

内容的提问来源于stack exchange,提问作者Eric Dunn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 07:27:55