logo
58
185
WeChat Login

预览模式的保活有问题#3358

Resolved
created 2 months ago
Edit

简单描述一下问题和重现方式

https://cnb.cool/ai-models/Ollama/OpenWebUI/-/build/logs/cnb-df8-1jiuigcc9

如流水线,预览模式我是默认 keepAliveTimeout 参数 10m ,我全程在 **.cnb.space 域名没有离开,但是超过10分钟之后就给我杀了。

即:预览模式没有保活机制,只能靠离线保活的时间撑着

changed title
预览模式的离线保活有问题
预览模式的保活有问题
Administrator
Edit history

检测不到 http 连接,就会 kill 掉

webide 是因为有个 websocket 一直连着,所以不会断掉

Administrator

@CodeBuddy 你怎么看

Creator

openwebui也有个websocket呀

@jingjingwu(晶晶)

关于预览模式保活问题的分析

看了你的 issue,这是一个预览模式保活机制的问题。

问题核心

  • 设置了 10 分钟超时,即使你一直在 .cnb.space 域名访问,服务还是被杀掉了
  • 这说明当前的保活机制没有正确工作

可能的原因

  1. 保活触发机制不正确

    • 当前可能只在浏览器关闭/离开页面时触发保活
    • 但实际上应该:任何活跃请求都应重置超时时间
  2. 缺少心跳机制

    • 仅仅"没有离开页面"不等于"有活跃访问"
    • 需要定时发送心跳请求来保持会话活跃
  3. 监听范围问题

    • 可能只监听了特定路径的活动
    • 页面间切换时没有正确触发保活

建议方案

  1. 实现前端心跳机制(如每 5 分钟发送一次请求)
  2. 使用 Page Visibility API + 事件监听判断用户活跃度
  3. 改进服务端逻辑:任何发往预览服务的请求都应重置超时

这应该是一个 bug,因为预览模式的保活是核心功能,当前实现不符合预期。需要我进一步排查代码实现吗?

Creator

检测不到 http 连接,就会 kill 掉

webide 是因为有个 websocket 一直连着,所以不会断掉

@jingjingwu(晶晶) 顺便问个问题,保活机制检测的是当前时刻有无链接?还是时段。

如果是时刻的话感觉可以想办法优化下,因为很难刚好碰上这个时刻

Administrator

只查到了 16:42 之后的访问日志

Administrator

@jingjingwu(晶晶) 顺便问个问题,保活机制检测的是当前时刻有无链接?还是时段。

如果是时刻的话感觉可以想办法优化下,因为很难刚好碰上这个时刻

@leun(没猫饼) 5 分钟检测一次

Creator

@leun(没猫饼) 5 分钟检测一次

@jingjingwu(晶晶) 那应该就是我理解的那一个时刻的意思,那即使每秒钟发送心跳,也有可能没装上那个保活检测被杀掉

Administrator

只查到了 16:42 之后的访问日志

这个查的是 nginx 的日志,你看看你是不是搞错了环境?

Administrator

@jingjingwu(晶晶) 那应该就是我理解的那一个时刻的意思,那即使每秒钟发送心跳,也有可能没装上那个保活检测被杀掉

@leun(没猫饼) 这个问题我来想想咋搞

assigned self
Creator

这个查的是 nginx 的日志,你看看你是不是搞错了环境?

@jingjingwu(晶晶) 应该没搞错

image.png

是有wss的,也有heartbeat

Creator
image.png image.png
Creator

被杀了,直到 kill 前都有心跳的

image.png image.png
withdrew a comment.
Administrator

明天来看看

Creator

明天来看看

@jingjingwu(晶晶) 情况如何

added priority
P0
Creator

@CodeBuddy 你来催一下进度

@leun(没猫饼)

收到!我来催一下晶晶的进度 😄

@jingjingwu(晶晶) 这个 Issue 已经讨论了一段时间了,目前进展到什么程度了?

从评论看,最后在排查 nginx 日志的问题。请问:

  1. 日志环境的问题解决了吗?
  2. 保活机制的优化有初步方案了吗?
  3. 预计什么时候可以开始修复?

没猫饼同学等着呢,麻烦更新下状态~

Administrator

好吧,这两天一定看

Administrator
image.png 比较奇怪,检测不到 8686 端口 ESTABLISHED 状态的连接
Administrator

你这里应该是用的 bridge 模式启动的 openui 这个 容器,可以改成 host 模式

bridge 模式我们检测不到 ESTABLISHED 的连接

Creator

OKOK,我改下

Creator

你这里应该是用的 bridge 模式启动的 openui 这个 容器,可以改成 host 模式

bridge 模式我们检测不到 ESTABLISHED 的连接

@jingjingwu(晶晶)

image.png

这样就好了吧

Administrator

妥妥的

1
added labels
使用问题:已解决

NPC
referenced ISSUE
Resolved ISSUE
Assignee
(晶晶)
Label
一定是bug:待鉴定
使用问题:已解决
Priority
P0
Time period
-
Property
Add custom properties to record and label key information
Participant