你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 虚拟桌面的连接质量

重要

连接图形数据日志目前处于预览状态。 有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款

Azure 虚拟桌面可帮助用户在其会话主机(在 Azure 上运行)上托管客户端会话。 当用户启动会话时,他们将通过网络从其最终用户设备(也称为“客户端”)连接以访问会话主机。 重要的是,用户体验与物理设备上的本地会话尽可能相似。 在本文中,我们将讨论如何度量和提升最终用户的连接质量。

目前有两种方法可以分析 Azure 虚拟桌面部署中的连接质量:Azure Log Analytics 和 Azure Front Door。 本文介绍如何使用每种方法来优化图形质量,并改进最终用户体验。

使用 Azure Log Analytics 监视连接质量

如果你已在使用 Azure Log Analytics,就可以使用 Azure 虚拟桌面连接网络数据诊断来监视网络数据。 通过 Log Analytics 收集的连接网络数据,可以了解是哪些方面影响了最终用户的图形体验。 服务在整个会话中定期收集报表数据。 与 RemoteFX 网络性能计数器相比,Azure 虚拟桌面连接网络数据报表具有以下优势:

  • 每个记录都特定于连接,并包括可与用户关联的连接的相关 ID。

  • 此表中度量的往返时间与协议无关,将记录针对传输控制协议 (TCP) 或用户数据报协议 (UDP) 连接度量的延迟。

要开始收集此数据,需要确保已在 Azure 虚拟桌面主机池中启用诊断和“NetworkData”表。

注意

这会产生 Log Analytics 的常规存储费用。 有关详细信息,请参阅 Azure Monitor 日志定价详细信息

在 Azure 门户中检查和修改诊断设置:

  1. 登录到 Azure 门户,然后转到“Azure 虚拟桌面”,并选择“主机池”。

  2. 选择要为其收集网络数据的主机池。

  3. 如果你还没有配置诊断设置,请选择“诊断设置”,然后创建新设置。 如果已配置诊断设置,请选择“编辑设置”。

  4. 选择 allLogs 或选择要为其收集数据的诊断表的名称,包括 网络数据日志连接图形数据日志预览。 allLogs 参数会在将来自动将新表添加到你的数据表。

  5. 选择要将收集的数据发送到的位置。 Azure 虚拟桌面见解用户应选择 Log Analytics 工作区。

  6. 单击“保存”应用所做的更改。

  7. 对要度量的所有其他主机池重复此过程。

  8. 返回到主机池的资源页,选择“日志”,然后在 Azure Log Analytics 的示例查询中运行其中一个查询,确保网络数据流到所选目标。 为了使查询获得结果,主机池必须具有已连接到会话的活动用户。 请注意,网络数据可能需要 15 分钟才会显示在 Azure 门户中。

    返回到主机池的资源页,选择“日志”,然后在 Azure Log Analytics 的示例查询中运行其中一个查询,确保网络数据流到所选目标。 为了使查询获得结果,主机池必须具有已连接到会话的活动用户。 请注意,网络数据可能需要 15 分钟才会显示在 Azure 门户中。

连接网络数据

为数据表收集的网络数据包括以下信息:

  • 估计的可用带宽(千字节数/秒),即每个连接时间间隔内估计的平均可用网络带宽。

  • 估计的往返时间(毫秒),即每个连接时间间隔内估计的平均往返时间。 往返时间是指网络请求通过网络从最终用户的设备到会话主机,然后返回到设备所需的时间。

  • 相关 ID,即分配给该连接中的每个诊断的特定 Azure 虚拟桌面连接的活动 ID。

  • 生成的时间,即采用 UTC 时间格式的时间戳,用于标记数据计数器跟踪的事件在虚拟机 (VM) 上发生的时间。 所有平均值都是用以标记的时间戳结束的时间范围度量的。

  • 资源 ID,即分配给 Azure 虚拟桌面主机池的唯一 ID,它与诊断服务为此表收集的数据关联。

  • 源系统、订阅 ID、租户 ID 和类型(表名称)。

频率

服务在活动会话期间每隔两分钟生成这些网络数据点。

连接图形数据 (预览版)

当用户在其 Azure 虚拟桌面会话中报告速度缓慢或杂碎体验时,应查阅图形数据表 (预览) 。 每当图形指示器、端到端延迟和丢弃帧百分比低于 Azure 虚拟桌面的“正常”阈值时,图形数据表都会为你提供有用的信息。 此表将帮助你的管理员跟踪和了解服务器、客户端和网络中可能导致用户速度缓慢或不稳定体验的因素。 但是,虽然图形数据表是一个有用的工具,用于排查用户体验不佳的问题,因为它在整个会话中不会定期填充,但它不是可靠的环境基线。

图形表仅从 Azure 虚拟桌面图形流捕获性能数据。 此表不会捕获特定于应用程序的因素或虚拟机 (CPU 或存储约束) 的性能下降或“速度缓慢”。 应将此表与其他 VM 性能指标一起使用,以确定延迟是由远程桌面服务 (图形和网络) 或 VM 或应用本身固有的东西引起的。

为数据表收集的网络数据包括以下信息:

  • 上次评估的连接时间间隔是导致时间图形指示器低于质量阈值的两分钟。

  • 端到端延迟 (毫秒) 是服务器捕获帧到客户端上呈现时间帧之间的延迟,测量为服务器上的编码延迟之和、网络延迟、客户端上的解码延迟和客户端上的呈现时间。 所反映的延迟是上次评估的连接时间间隔中记录的最差 (最差) 延迟。

  • 压缩帧大小 (字节) 是他压缩的帧大小,在上次评估的连接时间间隔中,其端到端延迟最高。

  • 服务器上的编码延迟 (毫秒) 是使用服务器上上次评估的连接时间间隔中最高端到端延迟对帧进行编码所需的时间。

  • 客户端上的解码延迟 (毫秒) 是解码帧所需的时间,该帧在客户端上最后一个评估的连接时间间隔内具有最高的端到端延迟。

  • 客户端上的呈现延迟 (毫秒) 是呈现在客户端上最后一个评估的连接时间间隔内具有最高端到端延迟的帧所花费的时间。

  • 跳过的帧百分比是这三个源删除的帧总数百分比:

    • 客户端 (慢速客户端解码) 。
    • 网络 (网络带宽不足) 。
    • 服务器 (服务器正忙于) 。

    记录的值 (每个客户端、服务器和网络) 的值来自最后一个计算的连接时间间隔中丢弃帧最高的第二个值。

  • 估计的可用带宽 (千字节/秒) 是时间间隔内第二个具有最高端到端延迟的平均可用网络带宽。

  • 估计往返时间 (毫秒) ,这是时间间隔内第二个周期内估计的往返时间(以最长的端到端延迟)。 往返时间是指网络请求通过网络从最终用户的设备到会话主机,然后返回到设备所需的时间。

  • 相关 ID,即分配给该连接中的每个诊断的特定 Azure 虚拟桌面连接的活动 ID。

  • 生成的时间,即采用 UTC 时间格式的时间戳,用于标记数据计数器跟踪的事件在虚拟机 (VM) 上发生的时间。 所有平均值都是用以标记的时间戳结束的时间范围度量的。

  • 资源 ID,即分配给 Azure 虚拟桌面主机池的唯一 ID,它与诊断服务为此表收集的数据关联。

  • 源系统、订阅 ID、租户 ID 和类型(表名称)。

频率

与在整个会话中定期报告数据的其他诊断表不同,图形数据的数据收集频率因连接的图形运行状况而异。 该表不会记录“良好”方案的数据,但会记录以下任何指标是否记录为“差”或“正常”,生成的数据将发送到存储帐户。 数据每两分钟只记录一次,最大值。 下表列出了数据收集所涉及的指标:

指标 糟糕 确定
帧速率低的丢弃帧百分比 (小于 15 fps) 超过 15% 的写入操作 10-15% AvailablePhysicalMemory% 小于 10%
高帧愤怒的丢弃帧百分比 (大于 15 fps) 大于 50% 205.0 小于 20%
每个帧的端到端延迟 大于 300 毫秒 150 ms–300 毫秒 小于 150 毫秒

注意

对于每个帧的端到端延迟,如果一秒中的任何帧延迟超过 300 毫秒,则服务会将其注册为“Bad”。 如果一秒中的所有帧占用 150 毫秒到 300 毫秒,则服务将它标记为“正常”。

Azure Log Analytics 的示例查询:网络数据

在本部分中,我们将创建一个查询列表来帮助查看连接质量信息。 可以在 Log Analytics 查询编辑器中运行查询。

注意

对于每个示例,请将 userupn 替换为你要查找的用户的 UPN。

查询平均 RTT 和带宽

查找平均往返时间和带宽:

// 90th, 50th, 10th Percentile for RTT in 10 min increments
WVDConnectionNetworkData
| summarize RTTP90=percentile(EstRoundTripTimeInMs,90),RTTP50=percentile(EstRoundTripTimeInMs,50),RTTP10=percentile(EstRoundTripTimeInMs,10) by bin(TimeGenerated,10m)
| render timechart
// 90th, 50th, 10th Percentile for BW in 10 min increments
WVDConnectionNetworkData
| summarize BWP90=percentile(EstAvailableBandwidthKBps,90),BWP50=percentile(EstAvailableBandwidthKBps,50),BWP10=percentile(EstAvailableBandwidthKBps,10) by bin(TimeGenerated,10m)
| render timechart

查找每个连接的往返时间和带宽:

// RTT and BW Per Connection Summary
// Returns P90 Round Trip Time (ms) and Bandwidth (KBps) per connection with connection details.
WVDConnectionNetworkData
| summarize RTTP90=percentile(EstRoundTripTimeInMs,90),BWP90=percentile(EstAvailableBandwidthKBps,90),StartTime=min(TimeGenerated), EndTime=max(TimeGenerated) by CorrelationId
| join kind=leftouter (
WVDConnections
| extend Protocol = iff(UdpUse in ("0","<>"),"TCP","UDP")
| distinct CorrelationId, SessionHostName, Protocol, ClientOS, ClientType, ClientVersion, ConnectionType, ResourceAlias, SessionHostSxSStackVersion, UserName
) on CorrelationId
| project CorrelationId, StartTime, EndTime, UserName, SessionHostName, RTTP90, BWP90, Protocol, ClientOS, ClientType, ClientVersion, ConnectionType, ResourceAlias, SessionHostSxSStackVersion

查询特定用户的数据

查找特定用户的带宽:

let user = "alias@domain";
WVDConnectionNetworkData
| join kind=leftouter (
    WVDConnections
    | distinct CorrelationId, UserName
) on CorrelationId
| where UserName == user
| project EstAvailableBandwidthKBps, TimeGenerated
| render columnchart  

查找特定用户的往返时间:

let user = "alias@domain";
WVDConnectionNetworkData
| join kind=leftouter (
WVDConnections
| distinct CorrelationId, UserName
) on CorrelationId
| where UserName == user
| project EstRoundTripTimeInMs, TimeGenerated
| render columnchart  

查找往返时间最多的前 10 个用户:

WVDConnectionNetworkData
| join kind=leftouter (
    WVDConnections
    | distinct CorrelationId, UserName
) on CorrelationId
| summarize AvgRTT=avg(EstRoundTripTimeInMs),RTT_P95=percentile(EstRoundTripTimeInMs,95) by UserName
| top 10 by AvgRTT desc

查找带宽最低的 10 个用户:

WVDConnectionNetworkData
| join kind=leftouter (
    WVDConnections
    | distinct CorrelationId, UserName
) on CorrelationId
| summarize AvgBW=avg(EstAvailableBandwidthKBps),BW_P95=percentile(EstAvailableBandwidthKBps,95) by UserName
| top 10 by AvgBW asc

Azure Front Door

Azure 虚拟桌面使用 Azure Front Door 根据源 IP 地址将用户连接重定向到最近的 Azure 虚拟桌面网关。 Azure 虚拟桌面始终使用客户端选择的 Azure 虚拟桌面网关。

后续步骤