会话录制数据丢失
事件的描述
会话录制 – 事件查看器中的事件 2005
管理员可能会在会话录制服务器的事件查看器中注意到来自 Citrix Session Recording Storage Manager 的事件 2005。事件消息通常显示为:
“在录制文件过程中发生了数据丢失:VDA = XXX,CtxSessionId = YYY,路径 = ZZZ,有 NNN 字节的数据缺失。”
如果管理员尝试播放事件中指定路径处的录制文件,则在播放过程中,系统将提示该录制文件不完整。
为什么会发生这种情况
此问题可能有以下几个原因:
- 两个或更多 VDA 配置了相同的 MSMQ QMID,这可能发生在持久性和非持久性 VDA 上。
- 非持久性 VDA 上的 QMID 在重启后保持不变,这可能导致冲突。
- 会话录制服务器当前承受着巨大的负载,因此无法高效地处理大量的并发会话。
如何识别此问题
- 验证 VDA 上的 QMID 配置。
- 对于持久性 VDA
- 检查每台计算机上的注册表以验证 QMID 配置。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\MachineCache\QMId - 每个 VDA 都应具有唯一的 QMID 值以避免冲突。
- 检查每台计算机上的注册表以验证 QMID 配置。
- 对于非持久性 VDA
- 检查 VDA 上的注册表以验证 QMID。
- 重启同一 VDA 后,再次检查注册表。
- 重启后,QMID 应该不同。
- 对于持久性 VDA
- 验证服务器是否处于高负载状态。
- 检查会话录制服务器上 MSMQ 属性中配置的存储限制。
- 使用性能监视器监控 MSMQ 资源使用情况。
- 在性能监视器中添加 MSMQ 计数器以跟踪资源使用情况。
- 验证 MSMQ 中的当前数据使用情况。
- 检查 MSMQ 数据大小是否接近配置的配额限制。如果是,则服务器可能过载。
- 在性能监视器中添加 MSMQ 计数器以跟踪资源使用情况。
- 检查会话录制服务器上 MSMQ 属性中配置的存储限制。
如何解决
以下各项概述了如何解决此问题。
- 所有使用会话录制代理的 VDA 都必须为 MSMQ 分配不同的 QMID。
- 对于持久性 VDA,MSMQ 的 QMID 只需设置一次。
- 对于非持久性 VDA,MSMQ 的 QMID 需要在 Windows 启动期间设置。
- 如何修改 VDA 上的 QMID
- 此外,对于非持久性 VDA,请在 Windows 服务配置中将“会话录制代理服务”和“Citrix 会话录制监视器服务”的启动类型都设置为“自动(延迟启动)”。
-
会话录制服务器过载。 会话录制服务器支持的会话容量可能因硬件配置而异。默认情况下,它可以处理多达 2,000 个并发会话。但是,如果服务器配备了超过 16 GB 的 RAM 和 SSD 存储,则容量可能会更高。 为帮助解决过载问题:
-
增加计算机上的主内存配额,然后提高 MSMQ 存储限制。
确保总可用主内存至少是配置的 MSMQ 存储限制的 1.5 倍。
注意:
MSMQ 的总存储限制,在任何时候都应该小于系统的总物理内存容量。
更改后,必须重新启动会话录制服务器上的 MSMQ。会话录制服务将因此自动重新启动。
此过程不会导致任何会话数据丢失。
-
调整会话录制代理属性中的消息生存期。考虑将当前值加倍,以便为消息处理留出更多时间并降低数据丢失风险。

您可以通过 VDA 上的以下注册表项配置此设置:
HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\SmartAuditor\Agent\MsmqMessageLifeInSeconds根据您的环境需求设置值(以秒为单位)。
注意:
进行更改后,必须重新启动会话录制代理。
此操作将导致任何活动会话的会话数据丢失。
请务必确保此操作安排在维护窗口期内进行。
-
将所有会话录制服务器计算机上 MSMQ 的消息文件夹更改为具有超过 3000 IOPS 容量的磁盘(SSD)驱动器。
这将有助于加快处理速度,并将性能提高多达 50%。

https://learn.microsoft.com/zh-cn/previous-versions/troubleshoot/msmq/optimize-message-queuing-performance
-
如果上述步骤无法解决问题,建议的解决方案是添加额外的会话录制服务器以分担负载。
有关指导,请参阅有关在现有部署中配置负载平衡的官方文档: Citrix 文档 – 配置负载平衡
-