kvm页面点击刷新后报会话失效问题分析
更新时间: 2026/05/28
在Gitcode上查看源码

问题背景

  • 单板类型:NA
  • 软件版本:openUBMC 25.09。
  • 涉及功能:kvm,会话管理。
  • 触发条件:kvm页面点击刷新。
  • 业务表现:预期会话不中断;实际提示会话失效。

问题复现步骤

  1. 通过web打开kvm页面
  2. 在kvm页面点击刷新页面。

关键日志信息

kvm页面点击刷新后提示会话失效,无法连接。

定位过程

“KVM 页面刷新后提示会话失效”属于合理设计行为,并非系统故障。其本质在于:

  • KVM 会话依赖短期有效的 token 和 WebSocket 长连接;
  • 浏览器刷新破坏了连接上下文,导致会话状态中断;
  • 系统出于安全与资源管理考虑,不允许直接恢复旧会话。

问题原因

  1. KVM 会话与 Web 会话分离管理

    • KVM 会话(KVM Session)和 Web 会话(Web Session)是两个独立的会话实体,由不同- 服务分别管控。
    • KVM 会话通常通过 WebSocket 协议在端口 2198 上建立,用于传输键盘、视频、鼠标- (KVM)数据流。
    • Web 会话则用于登录 BMC 界面、浏览系统状态等,其超时策略较短(如 5 分钟),而 KVM 会话被认为是“长时间操作”,默认超时时间为 60 分钟。
  2. 刷新页面导致 WebSocket 断开

    当用户点击浏览器的“刷新”按钮时:

    • 浏览器终止当前所有前端连接,包括与 KVM 服务建立的 WebSocket 会话;
    • WebSocket 断开后,后端会检测到连接异常关闭,标记该 KVM 会话为 非活动或已失效;
    • 即便原 KVM 虚拟机仍在运行,因通信链路中断,前端无法恢复原有会话,故弹出“会话失效”提示。
  3. KVM 连接通常依赖一个临时访问令牌(token)来认证会话权限:

    该 token 在用户点击“启动 KVM”时生成,具有短暂有效期(通常几分钟); 刷新页面后,浏览器尝试用旧 token 重新连接,但由于 token 已失效,认证失败,返回 “会话失效”。

解决方案

为避免“会话失效”提示,建议采取以下方式操作:

  1. 避免直接刷新 KVM 页面

    • 应通过页面提供的“断开”或“退出”按钮安全关闭 KVM 会话,再重新连接。
  2. 重新获取 KVM 连接链接

    • 返回 BMC 主界面 → 进入 KVM 控制面板 → 点击“启动 KVM” → 获取新的有效 token 和 WebSocket 地址。
  3. 检查并清理残留会话

    • 若频繁遇到“无法连接 KVM”,可进入【用户信息】页面查看当前活跃会话,并手动注销失效会话。
  4. 确保网络稳定

    • 频繁中断会导致服务端判定为异常断开,增加会话资源未正确释放风险。