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

Rundeck崩溃/重启后运行中作业未终止的配置方法咨询

问题详情

环境信息

  • 应用版本:Rundeck Community - v4.2.1(相关问题已存在较长时间)
  • 数据库:PostgreSQL 9.6

问题表现

当Rundeck进程崩溃或所在服务器宕机时,崩溃前处于执行状态的作业会一直保持RUNNING状态,进入对应执行详情页会显示如下提示:

"Workflow State and Log Output is not available."

业务影响

处于异常运行状态的执行记录会阻塞后续作业调度执行,且无法触发对应告警。

核心疑问

是否存在相关配置项,可在Rundeck服务崩溃或重启时,强制将所有处于RUNNING状态的作业标记为失败?


解答

Rundeck社区版没有提供服务崩溃/重启后自动标记残留RUNNING状态作业为失败的内置配置项,可通过以下方案实现对应需求:

  • 启动前置自动清理
    编写数据库清理脚本,配置为Rundeck服务的启动前置执行逻辑,在服务进程启动前连接PostgreSQL完成残留记录清理,核心逻辑分两步:
    1. 筛选所有启动时间早于本次Rundeck服务启动时间、状态仍为RUNNING的执行记录
    2. 将筛选出的记录统一更新为FAILED状态,补充标记为系统自动清理的异常终止记录
      核心参考SQL如下:
    -- 执行更新前先查询待清理记录确认范围
    SELECT id, project, job_id, date_started FROM execution 
    WHERE status = 'RUNNING' AND date_started < (SELECT start_time FROM sys_info LIMIT 1);
    
    -- 批量更新残留记录为失败状态
    UPDATE execution 
    SET status = 'FAILED', date_completed = NOW(), aborted_by = 'system-auto-clean'
    WHERE status = 'RUNNING' AND date_started < (SELECT start_time FROM sys_info LIMIT 1);
    
    注意:执行SQL操作前务必备份execution表数据,避免误改造成数据丢失。如果是多节点集群部署,需要结合execution表的server_nodeuuid字段匹配已离线节点ID,仅清理离线节点上的残留执行,避免误标记其他正常节点上正在运行的作业。
  • 作业层防阻塞配置
    对核心作业单独配置执行超时阈值,超过指定时长未完成的作业会被自动终止并标记为失败;同时打开作业并发控制规则,避免单条卡住的执行永久阻塞后续调度。
  • 定时巡检兜底
    配置固定周期的巡检任务,扫描所有运行时长超过合理阈值(通常为作业配置超时时间的2倍)的RUNNING状态执行,自动标记为失败并触发告警,覆盖进程假死、脚本挂死等非宕机场景的异常卡住问题。

内容的提问来源于stack exchange,提问作者Padraig Lennon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 02:31:14