PAYATHON 2026

Jenkins Agent 显示已连接但节点仍离线,如何排查?

数据阿明

结论

INFO: Connected 和 Jenkins 中的 Inbound agent connected 说明 Agent 曾成功建立连接,但不能证明 Remoting 通道之后一直正常,也不能说明节点现在可以执行任务。现有日志还不足以确定根因。需要按时间顺序对照 Agent、Jenkins Controller 和 Windows 服务器的状态,确认连接何时关闭,节点何时转为离线。

先确认节点的实际状态

在 Jenkins 中打开对应节点页面,查看节点状态、离线原因、是否被手动标记为离线,以及节点日志中连接建立后的记录。记下节点转为离线的时间,并确认是否有多个节点在相近时间离线。

逐个核对节点配置,包括节点名称是否与 Agent 配置对应、节点是否启用,以及启动方式或节点属性是否发生变更。如果节点页面显示了离线原因或日志提示,可据此继续排查。

对照连接关闭前后的日志

按时间顺序查看 Agent 的 CMD 输出、Jenkins 节点日志和 Controller 系统日志,重点留意连接成功后的连接关闭、异常、重连、超时、JVM 退出或 Controller 重启记录。

目前提供的日志片段包含 Send Unexport 和协议层通信记录,但上下文不足以判断它们是否导致节点离线。需要取得这些记录前后的完整日志。

启动命令中的 -workDir 指定了 Agent 的工作目录。检查 Agent 进程是否仍在运行、工作目录是否可访问,以及进程是否在节点离线时退出。问题发生时,也可以手动运行同一启动命令,观察 Agent 是否持续运行,以及 CMD 是否出现后续异常:

java -jar agent.jar -jnlpUrl <jenkins_url>/jenkins-agent.jnlp -secret <secret_key> -workDir "<work_directory>"

不要在公开日志或问题记录中暴露 <secret_key> 的实际值。

检查服务器负载与网络稳定性

近期并行运行的自动化任务可能增加 CPU、内存或进程压力,尤其是同时运行多个 Chrome 实例时。查看离线时间附近 Windows 服务器的 CPU 和内存使用情况、可用磁盘空间、Chrome 及 Java 进程数量,并检查系统是否记录了进程退出或资源不足。目前的材料只能把负载作为待验证的线索,不能据此认定它造成了故障。

也要检查 Agent 到 Jenkins Controller 的网络连接在离线时段是否中断或重置。如果多个 Agent 位于同一服务器或网络路径,并且同时离线,先比对它们共同依赖的服务器、网络和 Controller 事件。如果只有个别节点离线,再检查对应主机和节点配置。

建议的排查顺序

  1. 记录各节点显示的离线原因和离线时间。
  2. 对照 Agent、节点和 Controller 日志,找到连接成功后的第一条异常或断开记录。
  3. 确认 Agent 的 Java 进程是否仍在运行,工作目录是否可用。
  4. 检查离线时段的服务器资源、系统事件和网络状态。
  5. 比较多个节点的离线时间,判断是否存在共同的基础设施故障。
  6. 根据日志中的明确错误继续处理。如果没有错误信息,先收集完整时间窗口的日志,再缩小排查范围。

仅凭已提供的连接成功日志和 remoting 片段,无法判断原因是服务器负载、网络中断、进程退出还是节点配置问题。判断时应参考离线时间附近的完整日志和节点离线原因。

备注:内容仅供参考。