高级概念

XenApp 和 XenDesktop 7.11 至最新版本:延迟和 SQL 阻止查询改进

文章 XenApp 和 XenDesktop 7.7:区域、延迟和代理性能中提供了有关延迟代理的性能信息。本文介绍了 XenApp 和 XenDesktop 7.11 对延迟代理的改进。它还介绍了为防止 VDA 注册时出现死锁而进行的改进。

延迟改进的代理

在 XenApp 和 XenDesktop 7.11 中,我们重新审视了核心代理 SQL 代码,该代码确定哪个 VDA 加载最少,然后向该 VDA 发送启动请求。我们决定从“完美”负载平衡算法切换到“足够好”负载平衡算法。

在 XenApp 和 XenDesktop 7.11 之前,该代码会查找负载最少的 VDA,并将锁定/阻止其他启动请求,直到该 VDA 可用为止。这阻止了所有其他代理请求。

在 XenApp 和 XenDesktop 7.11 中,该代码会查找当前未锁定的负载最少的工作进程。这意味着,尽管我们可能无法获得负载最少的 worker(也许我们只能获得第二或第三个负载最少的 worker),但我们可以在不锁定所有其他启动请求的情况下做到这一点。如果我们找不到解锁的工人,我们就坐下来等锁。有了足够多的 VDA,很少会发现它们同时被锁定,但是当它发生时,其行为与之前的算法相同。

在某些情况下,管理员可能会注意到负载平衡的细微差别,但需要密切注意我们没有使用负载最低的 VDA。

在核心代理代码中的其他地方,SQL 阻塞问题已得到改善。Citrix 建议大型站点使用 7.13 或 7.6 CU3 代理,以实现所有当前已知的改进。

业绩结果

下表向 上一篇文章 中的数据添加了两个数据点,以显示由此产生的延迟改进的中介:

产品版本 7.7 7.11+ 7.7 7.7 7.11+
延迟时间(毫秒) 90 90 250 250 250
并发请求 48 48 36 48 48
平均响应时间(秒) 12.9 3.7 26.7 不适用 7.6
每秒钟的代理请求 3.7 12.6 1.3 不适用 6.3
错误 (%) 0 0 4.6 42.8 0
启动 1 万个用户的时间 44 分 55 秒 13 分 10 秒 2 小时 3 分 不适用 26 分 27 秒

正如您所看到的,在 250 毫秒的延迟下,XenApp 和 XenDesktop 7.11 现在在 90 毫秒时的性能优于 7.7 代码。因此,我们没有花时间测试大量的数据点,而是测试了以前失败的数据点。您可以看到,如果使用 7.11 或更高版本,用户将体验更快的资源代理,即使代理和 SQL Server 之间的延迟。

使用 LTSR 7.6 CU3 控制器的客户也可以从同样的改进中受益。尽管我们预计 LTSR 7.6 CU3 的部署不会有延迟,但即使没有延迟,这些更改仍能提高性能,而且我们知道有些客户的确有一定的延迟的 LTSR 7.6 CU3。

注册风暴序列化

不幸的是,我们知道存在锁的一个领域是 VDA 注册。锁的原因是为了避免在注册 worker 时出现死锁。现在,我们对死锁的原因有了更好的了解,死锁的原因是没有在多个注册线程上以一致的顺序锁定一个 worker 的会话。我们现在按会话 ID 执行会话锁定,这会停止 VDA 注册死锁。

我们已经在内部测试了这种行为变化,发现它有助于解决我们重新注册量表测试中的一些问题。但是,由于某些客户的环境非常复杂,我们尚未完全移除此锁定,以便有时间进行更多测试。相反,我们为使用 XenApp 和 XenDesktop 7.12 或更高版本的客户提供了有关此锁的使用情况的可调整信息。此可调参数位于 XenApp 和 XenDesktop 7.12 数据库的 chb_config.site 表中:

select SerializeMultiSessionAudits, SerializeMultiSessionDeregistrations from chb_config.Site

SerializeMultiSessionAudits SerializeMultiSessionDeregistrations

--------------------------- ------------------------------------

1 1

您可以将这些标志设置为 0 以删除锁的用法:

update chb_config.Site set SerializeMultiSessionAudits=0, SerializeMultiSessionDeregistrations=0

select SerializeMultiSessionAudits, SerializeMultiSessionDeregistrations from chb_config.Site

(1 row(s) affected)

SerializeMultiSessionAudits SerializeMultiSessionDeregistrations

--------------------------- ------------------------------------

0 0

自 XenApp 和 XenDesktop 7.15 起,默认情况下禁用此锁定。此外,升级到 XenApp 和 XenDesktop 7.15 或更高版本也会禁用锁定。可调对象是为需要重新启用锁定的客户提供的。

这篇文章是从 Chris Gilbert 撰写的博客文章修改而来的。要阅读原始博客并查看评论,请访问 https://www.citrix.com/blogs/2017/03/06/latency-and-sql-blocking-query-improvements/

XenApp 和 XenDesktop 7.11 至最新版本:延迟和 SQL 阻止查询改进