kvm页面点击刷新后报会话失效问题分析
更新时间: 2026/05/28
在Gitcode上查看源码问题背景
- 单板类型:NA
- 软件版本:openUBMC 25.09。
- 涉及功能:kvm,会话管理。
- 触发条件:kvm页面点击刷新。
- 业务表现:预期会话不中断;实际提示会话失效。
问题复现步骤
- 通过web打开kvm页面
- 在kvm页面点击刷新页面。
关键日志信息
kvm页面点击刷新后提示会话失效,无法连接。
定位过程
“KVM 页面刷新后提示会话失效”属于合理设计行为,并非系统故障。其本质在于:
- KVM 会话依赖短期有效的 token 和 WebSocket 长连接;
- 浏览器刷新破坏了连接上下文,导致会话状态中断;
- 系统出于安全与资源管理考虑,不允许直接恢复旧会话。
问题原因
KVM 会话与 Web 会话分离管理
- KVM 会话(KVM Session)和 Web 会话(Web Session)是两个独立的会话实体,由不同- 服务分别管控。
- KVM 会话通常通过 WebSocket 协议在端口 2198 上建立,用于传输键盘、视频、鼠标- (KVM)数据流。
- Web 会话则用于登录 BMC 界面、浏览系统状态等,其超时策略较短(如 5 分钟),而 KVM 会话被认为是“长时间操作”,默认超时时间为 60 分钟。
刷新页面导致 WebSocket 断开
当用户点击浏览器的“刷新”按钮时:
- 浏览器终止当前所有前端连接,包括与 KVM 服务建立的 WebSocket 会话;
- WebSocket 断开后,后端会检测到连接异常关闭,标记该 KVM 会话为 非活动或已失效;
- 即便原 KVM 虚拟机仍在运行,因通信链路中断,前端无法恢复原有会话,故弹出“会话失效”提示。
KVM 连接通常依赖一个临时访问令牌(token)来认证会话权限:
该 token 在用户点击“启动 KVM”时生成,具有短暂有效期(通常几分钟); 刷新页面后,浏览器尝试用旧 token 重新连接,但由于 token 已失效,认证失败,返回 “会话失效”。
解决方案
为避免“会话失效”提示,建议采取以下方式操作:
避免直接刷新 KVM 页面
- 应通过页面提供的“断开”或“退出”按钮安全关闭 KVM 会话,再重新连接。
重新获取 KVM 连接链接
- 返回 BMC 主界面 → 进入 KVM 控制面板 → 点击“启动 KVM” → 获取新的有效 token 和 WebSocket 地址。
检查并清理残留会话
- 若频繁遇到“无法连接 KVM”,可进入【用户信息】页面查看当前活跃会话,并手动注销失效会话。
确保网络稳定
- 频繁中断会导致服务端判定为异常断开,增加会话资源未正确释放风险。