issue: idle performance regression caused by timer query in 0.11.0

Open WebUI v0.11.0 在空闲时 CPU 和 RSS 显著升高,原因是新增的定时器轮询对 chat 表执行未加索引的 JSON_EXTRACT 全表扫描。优先排查是否开启了 Timer 功能,并考虑回退到 v0.10.2 或等待官方修复。

快速结论:Open WebUI v0.11.0 在空闲时 CPU 和 RSS 显著升高,原因是新增的定时器轮询对 chat 表执行未加索引的 JSON_EXTRACT 全表扫描。优先排查是否开启了 Timer 功能,并考虑回退到 v0.10.2 或等待官方修复。

适用环境:Docker 安装、Open WebUI v0.11.0、Ubuntu 24.04、SQLite 数据库、含历史聊天记录。

最快修复方案:暂无确认的一步修复方案。可优先尝试回退到 v0.10.2 版本,或关注后续版本是否针对 timer query 添加索引。

注意事项:回退版本会丢失 v0.11.0 的新功能;该方案仅适用于 SQLite 后端,其他数据库(如 PostgreSQL)可能不受影响。

问题场景

用户从 Open WebUI v0.10.2 升级到 v0.11.0 后,在空闲状态下(无任何用户操作)发现容器 CPU 占用从接近 0% 上升到可观水平,RSS 内存也超过 1GB(在树莓派 5 arm64 上)。通过设置 SAFE_MODE=trueGLOBAL_LOG_LEVEL=debug 排查,发现每秒都会执行一条使用 JSON_EXTRACT 的 timer 轮询 SQL 查询。

报错原文

DEBUG    | aiosqlite.core:_connection_worker_thread:62 - executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0xffff3e574dc0>, 'SELECT chat.id, chat.user_id, chat.title, chat.chat, chat.created_at, chat.updated_at, chat.share_id, chat.archived, chat.pinned, chat.meta, chat.variables, chat.folder_id, chat.tasks, chat.summary, chat.current_message_id, chat.last_read_at \nFROM chat \nWHERE JSON_EXTRACT(chat.meta, ?) IS 1 AND JSON_EXTRACT(chat.meta, ?) = ? AND JSON_EXTRACT(chat.meta, ?) = ?', ('$."internal"', '$."type"', 'timer', '$."status"', 'pending'))

原因分析

可能原因:v0.11.0 新增的定时器(timer)轮询功能,每秒执行一次 SELECT ... FROM chat WHERE JSON_EXTRACT(...) 查询,用于检查是否有待处理的 timer 聊天记录。由于 chat.meta 是 JSON 字段,且未建立虚拟索引(virtual index),SQLite 只能对该表进行全表扫描。当 chat 表包含较多历史数据时,频繁的全表扫描导致 CPU 和内存使用大幅增加。

环境排查

  • Open WebUI 版本:v0.11.0
  • 安装方式:Docker
  • 操作系统:Ubuntu 24.04
  • 数据库:SQLite(使用默认配置)
  • CPU 架构:arm64(树莓派 5)
  • 日志设置:启用 GLOBAL_LOG_LEVEL=debug 可确认轮询查询的执行频率

解决步骤

  1. 临时回退:将 Open WebUI 降级回 v0.10.2,空闲性能可恢复正常。
  2. 等待官方修复:关注 #27622 的进展,官方计划为 timer 查询添加索引或优化轮询逻辑。
  3. 深度调试:若需保留 v0.11.0,可在安全模式下设置 SAFE_MODE=true 观察是否影响 timer 功能(该模式下不会执行 timer 查询,但会禁用部分安全功能)。注意:Issue 未提及这一做法,此处仅为推测。

验证方法

监控 Open WebUI 容器空闲时的 CPU%RSS 内存:正常状态下 CPU 应接近 0%,RSS 不超过 1GB(视聊天记录量而定)。同时观察 debug 日志中 timer 轮询查询的间隔和耗时,若不再出现或频率恢复正常,则问题解决。

参考来源

open-webui/open-webui #27687

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 15733

发表回复

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