[Question]: After adding the S3 data source, the logs show that it’s always on the schedule, even after waiting for half an hour

在 RAGFlow 添加 S3 数据源后,任务一直停在调度状态、长时间不上传也不解析,通常是 task executor 没有真正领取调度任务,可优先排查 Redis 连接、executor 健康状态和资源占用。日志里只有心跳、pending/lag/done/failed 全为 0,说明 exec

快速结论:在 RAGFlow 添加 S3 数据源后,任务一直停在调度状态、长时间不上传也不解析,通常是 task executor 没有真正领取调度任务,可优先排查 Redis 连接、executor 健康状态和资源占用。日志里只有心跳、pending/lag/done/failed 全为 0,说明 executor 在线但没有任务流入。

适用环境:Issue 报告使用 RAGFlow,部署方式为 Docker(日志中出现容器内 IP 与 task_executor 进程),且已配置 SANDBOX_EXECUTOR_MANAGER_IMAGE=infiniflow/sandbox-executor-manager:latest 但处于禁用状态。操作系统、Python、CUDA、显卡等版本未在 Issue 中明确,不作补写。

最快修复方案:暂无确认的一步修复方案。Issue 的讨论建议:先确认 executor 持续正常上报心跳并能轮询/领取任务,排查后端日志中的 Redis 或 executor 启动错误;若怀疑旧版本调度 Bug,可优先尝试升级到最新 nightly Docker 镜像(对应 PR #6340 相关修复)。

注意事项:禁用 SANDBOX_EXECUTOR_MANAGER_IMAGE 只影响沙箱代码执行,默认情况下 S3 同步在沙箱外运行,通常不会因此阻断 S3 同步任务;但若业务依赖沙箱能力则需另行确认。升级 nightly 镜像属于“可优先尝试”,并非 Issue 中针对本环境的最终确认结论,升级前请备份并留意版本兼容性。

问题场景

用户在 RAGFlow 中添加 S3 数据源后,日志显示任务一直处于 schedule(调度)状态,等待半小时后上传与解析流程仍未启动。executor 侧只有 task_executor_1c2ac955e24d_0 在持续上报心跳,未检测到其他 executor 任务;心跳内容显示 pending: 0、lag: 0、done: 0、failed: 0、current: {}。用户同时说明 SANDBOX_EXECUTOR_MANAGER_IMAGE=infiniflow/sandbox-executor-manager:latest 对其处于禁用状态。

报错原文

[Question]: After adding the S3 data source, the logs show that it's always on the schedule, even after waiting for half an hour
2025-12-01 09:12:12,497 WARNING  32 Database connection issue (attempt 1/5): (0, '')
2025-12-01 09:12:12,499 WARNING  32 Database connection issue (attempt 1/5): (0, '')
2025-12-01 09:12:28,208 INFO     56 task_executor_1c2ac955e24d_0 reported heartbeat: {"ip_address": "172.18.0.6", "pid": 56, "name": "task_executor_1c2ac955e24d_0", "now": "2025-12-01T09:12:28.208+08:00", "boot_at": "2025-11-26T19:13:11.997+08:00", "pending": 0, "lag": 0, "done": 0, "failed": 0, "current": {}}
2025-12-01 09:12:58,210 INFO     56 task_executor_1c2ac955e24d_0 reported heartbeat: {"ip_address": "172.18.0.6", "pid": 56, "name": "task_executor_1c2ac955e24d_0", "now": "2025-12-01T09:12:58.210+08:00", "boot_at": "2025-11-26T19:13:11.997+08:00", "pending": 0, "lag": 0, "done": 0, "failed": 0, "current": {}}
2025-12-01 09:13:28,212 INFO     56 task_executor_1c2ac955e24d_0 reported heartbeat: {"ip_address": "172.18.0.6", "pid": 56, "name": "task_executor_1c2ac955e24d_0", "now": "2025-12-01T09:13:28.212+08:00", "boot_at": "2025-11-26T19:13:11.997+08:00", "pending": 0, "lag": 0, "done": 0, "failed": 0, "current": {}}

原因分析

根据讨论,该现象通常意味着 executor 没有领取到调度任务,可能原因包括:Redis 连接异常、executor 配置错误,或资源耗尽导致无法轮询/认领任务。日志中的 Database connection issue (attempt 1/5): (0, '') 属于数据库连接告警,可能与 Redis/数据库层连接问题相关,但不是唯一确定结论。仅持续心跳、没有任务活动,说明 executor 在运行但可能无法轮询或抢占任务,也存在旧版本调度 Bug 的可能(讨论提到 PR #6340 修复过类似卡住任务的问题)。禁用沙箱执行器镜像本身通常不阻断 S3 同步,因为 S3 同步默认在沙箱外执行。

环境排查

  • 确认 RAGFlow 版本与部署镜像版本,怀疑旧版 Bug 时可对比最新 nightly 镜像。
  • 检查 Redis 连接是否正常,以及后端日志中是否存在 Redis 或 executor 启动相关错误。
  • 检查数据库连接告警是否持续出现,排除数据库/Redis 层的连接问题。
  • 确认 executor 服务持续存活并按间隔上报 heartbeat,而不是只有启动时一次。
  • 检查 executor 与沙箱相关资源占用,关注是否出现 “Container pool is busy” 或 “no_available_container” 类错误。
  • 确认 SANDBOX_EXECUTOR_MANAGER_IMAGE 禁用是否符合预期;如需沙箱执行能力,应评估其影响。

解决步骤

  1. 查看后端日志,筛选 Redis 连接错误、executor 启动错误及数据库连接告警,先定位执行链路在哪一层中断。
  2. 确认 executor heartbeat 是否持续按间隔输出;若只有单次心跳,说明 executor 可能未正常轮询任务。
  3. 检查 Redis/数据库服务连通性,排除连接异常造成的任务无法调度。
  4. 检查 executor/sandbox 资源使用情况,若存在容器池繁忙或资源耗尽错误,先释放资源或调整配置。
  5. 若上述排查无明确异常,可优先尝试升级到最新 nightly Docker 镜像(讨论称 PR #6340 修复了类似卡住调度任务的问题),升级后重新添加或重新调度 S3 数据源。
  6. 升级后仍卡住时,收集完整后端日志(尤其是错误行和 heartbeat 行)再进一步定位。

验证方法

重新触发 S3 数据源同步后观察后端日志:heartbeat 应持续出现,并且 executor 出现非零 pending 或 current 任务活动,进而出现上传/解析流程相关日志;数据源任务不再长期停留在 schedule 状态即表示问题缓解。若仍只有心跳且 pending 为 0,说明问题未解决,需回到环境排查继续定位。

参考来源

infiniflow/ragflow #11617

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 30234

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注