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

Jenkins agent频繁自动重启且报ClosedChannelException错误如何修复

Jenkins Agent 频繁自动重启 ClosedChannelException 问题排查修复

你遇到的java.nio.channels.ClosedChannelException报错,本质是Jenkins控制器和Agent节点之间的remoting通信链路被非正常中断,触发的连接断开异常,对应排查和修复方案如下:

排查步骤

  • 网络稳定性排查:首先验证控制器和Agent之间的网络是否存在偶发断连,重点检查中间的防火墙、安全组是否配置了TCP会话超时规则,多数云环境、企业内网防火墙会默认断开空闲超过30分钟的TCP连接。可以在Agent节点长期执行ping <Jenkins控制器IP>、nc -zv <Jenkins控制器IP> <Agent通信端口> 命令验证连通性波动。
  • 版本兼容性排查:检查Jenkins控制器和Agent节点的Remoting组件版本,两端版本差超过2个以上大版本时会出现兼容性问题导致连接异常断开。
  • 节点资源排查:查看Agent节点的CPU、内存、磁盘IO占用情况,节点资源占满时会无法响应控制器的心跳请求,被判定为离线自动重启。可以用top、free -h、iostat 命令查看实时资源占用。
  • 连接配置排查:检查Jenkins控制器上对应Agent的配置,确认是否开启了闲置超时自动断开的配置,阈值设置过小会导致无任务运行时Agent被主动断开。

修复方案

  • 网络层优化:如果确认是防火墙会话超时导致的断连,可以调整Agent节点的TCP保活内核参数,避免空闲连接被主动断开:
echo "net.ipv4.tcp_keepalive_time = 300" >> /etc/sysctl.conf
echo "net.ipv4.tcp_keepalive_intvl = 60" >> /etc/sysctl.conf
echo "net.ipv4.tcp_keepalive_probes = 10" >> /etc/sysctl.conf
sysctl -p

同时同步调整防火墙、安全组规则,放通控制器和Agent之间的通信端口,提高会话超时阈值或者禁止主动断开Jenkins相关的空闲连接。

  • 连接配置优化:在Jenkins控制器的Agent配置页开启连接丢失时自动重启Agent选项,如果是JNLP方式启动的Agent,启动命令添加-noReconnect false参数,开启自动重连机制。
  • 资源优化:如果是Agent节点资源不足导致的断连,升级节点的CPU、内存配置,或者拆分节点上的任务负载,避免单节点同时运行过多任务导致资源耗尽。
  • 版本对齐:将Jenkins控制器和Agent节点的Remoting组件都升级到最新稳定版,确保两端版本兼容。

内容的提问来源于stack exchange,提问作者Avinash Rathod

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:06:03