bug: Open WebUI is slow to submit and process responses in long chats

用户在使用 Open WebUI(Docker 部署,版本 v0.3.16)与 Ollama 后端交互时,进行长时间连续对话。问题在移动端(iOS/Android)浏览器或 PWA 模式下尤为显著,电脑端虽也有类似现象但相对轻微。例如,一个包含约 90 条消息(约 45 条用户消息和 45 条助手消

bug: Open WebUI is slow to submit and process responses in long chats

bug: Open WebUI is slow to submit and process responses in long chats

快速结论:该问题主要发生在使用 Open WebUI 进行长对话(例如超过 20-30 条消息)时,尤其在移动端的浏览器或 Web App 模式下(如添加到 iPhone 主屏幕或 macOS Dock)。优先排查是否在 Web App 模式(PWA)下使用,并更新至最新版本的 Open WebUI,因为近期的版本已经大幅优化了消息和聊天的渲染性能。

问题场景

用户在使用 Open WebUI(Docker 部署,版本 v0.3.16)与 Ollama 后端交互时,进行长时间连续对话。问题在移动端(iOS/Android)浏览器或 PWA 模式下尤为显著,电脑端虽也有类似现象但相对轻微。例如,一个包含约 90 条消息(约 45 条用户消息和 45 条助手消息)的对话,提交和响应时间会从原本的秒级延迟到几分钟。

报错原文

无具体报错文本。表现为界面操作(提交消息、显示响应)显著卡顿,但后台 Ollama 的推理和返回时间正常(例如一条 10 秒生成的回复,在 UI 上可能需要几分钟才能完全显示)。核心问题是 UI (SvelteKit 组件) 在渲染大量消息时的性能瓶颈。

原因分析

根本原因是 Open WebUI 的前端(基于 SvelteKit)在渲染大量聊天消息时,性能和内存管理没有得到足够优化。具体来说:

  • 可能原因:页面中累积的 SvelteKit 组件过多,导致 DOM 操作和渲染循环阻塞。
  • 可能原因:Spinner 或动画等非必要组件在长列表中不断刷新,消耗大量主线程资源。
  • 可能原因:浏览器缓存和增量更新机制未能有效处理长会话,导致每次交互都重新渲染大量内容。

注意:该项目维护者(@tjbck)表示后续版本已经显著改善了渲染性能(3-4 倍提升),但复杂长文场景仍有优化空间。

环境排查

  • Open WebUI 版本:确认是否已经更新到最新版(如 v0.3.17 或更高版本)。Issue 报告中提到 v0.3.16 仍有此问题,但近期版本有针对渲染性能的大幅优化。
  • 使用模式:确认是否在“Web App 模式”(PWA,如通过 Safari 添加到主屏幕或 macOS Dock)下使用。部分用户反馈该模式下问题更严重。
  • 设备与浏览器:确认是否 iPhone/Android 手机、iPad 或低配置电脑(如 2015 MacBook Pro)上使用。问题在性能较弱的设备上更明显。
  • Ollama 日志:确认 Ollama 返回推理结果的时间是否正常(例如,检查 Ollama 日志或 Open WebUI 后端的响应计时)。Issue 中提及推理时间(10 秒)远小于 UI 渲染时间(几分钟),确认瓶颈在前端。

解决步骤

可优先尝试:更新 Open WebUI 至最新版本。项目在 v0.3.17 及之后版本中针对消息和聊天渲染做了 3-4 倍速度提升。

  1. 更新 Open WebUI:如果是 Docker 部署,重新拉取最新镜像:
    docker pull ghcr.io/open-webui/open-webui:main (请注意:Issue 中没有给出具体命令,此为通用操作,请以实际文档为准)
    重新启动容器,确保使用最新代码。
  2. 切换运行模式:如果使用 PWA 模式(将网页添加到主屏幕),尝试直接在 Safari/Chrome 浏览器中打开 WebUI,观察是否改善。
  3. 清理会话/缩短上下文:
    • 如果对话过长,考虑开启新对话(New Chat)来避免累积大量历史消息。
    • 检查是否启用了“内存”或“代码解释器”等占用大量历史消息的功能。
  4. 关闭不必要的浏览器插件/标签页:尤其是广告拦截、脚本管理类插件可能干扰 WebUI 的 WebSocket 或进程。
  5. 在电脑端尝试:如果问题主要在移动端出现,可以临时使用电脑浏览器进行长对话,待优化版本更新后再切换回移动端。

验证方法

在更新版本或更改使用模式后,进行一个包含 30 条以上消息的连续对话。观察:

  • 消息提交到开始显示响应的延迟时间。
  • 流式输出的流畅度(是否会变成一次性输出/非流式效果)。
  • UI 交互是否仍会卡顿几分钟。

如果更新后长对话的交互延迟从几分钟降低到秒级(例如 10-15 秒以内),说明问题已解决。

参考来源

open-webui/open-webui #5032

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 12800

发表回复

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