logo
59
171
WeChat Login

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

Open
created 1 months ago
Edit

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

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

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

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

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

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

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

Developer

@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(晶晶) 顺便问个问题,保活机制检测的是当前时刻有无链接?还是时段。

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

Developer

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

Developer

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

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

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

Creator

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

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

Developer

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

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

Developer

@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.
Developer

明天来看看

Creator

明天来看看

@jingjingwu(晶晶) 情况如何

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