应用程序虚拟化的性能指南

适用于:

  • Windows 7 SP1
  • Windows 10
  • Windows 11
  • Server 2012 R2
  • Server 2016

了解如何配置 App-V 以获得最佳性能、优化虚拟应用包以及提供更好的 RDS 和 VDI 用户体验。

实现多种方法有助于改善最终用户体验。 但是,你的环境可能并不支持所有方法。

在阅读本文档之前,应阅读并理解以下信息。

注意

本文档中使用的某些术语可能具有不同的含义,具体取决于外部源和上下文。 有关本文档中使用的术语的详细信息, *请参阅本文档的 Application Virtualization Performance Guidance Terminology(应用程序虚拟化性能指南术语 )部分。

最后,本文档将提供配置运行 App-V 客户端的计算机和环境以达到最佳性能的信息。 使用排序器优化虚拟应用程序包的性能,并了解如何使用用户体验虚拟化 (UE-V) 或其他用户环境管理技术,在远程桌面服务 (RDS) 和非持久性虚拟桌面基础结构 (VDI) 中提供最佳的 App-V 用户体验。

为了帮助确定哪些信息与环境相关,应查看每个部分的简要概述和适用性清单。

有状态* 非持久部署中的 App-V

本部分提供有关方法的信息,该方法有助于确保用户在登录后几秒钟内有权访问所有虚拟应用程序。 此访问是通过唯一解决经常长时间运行的 App-V 发布刷新来实现的。 正如你将发现的方法的基础一样,最快的发布刷新是一种实际上无需执行任何操作的方法。 必须满足许多条件,并遵循步骤来提供最佳用户体验。

有关详细信息,请使用以下部分中的信息:

使用方案 - 查看这两种方案时,请记住,这些方案是极端的方法。 根据使用情况要求,可以选择将这些步骤应用于部分用户和/或虚拟应用程序包。

  • 针对性能进行了优化 - 为了提供最佳体验,可以预期基础映像包含一些 App-V 虚拟应用程序包。 本文将讨论此要求和其他要求。

  • 针对存储进行了优化 - 如果你担心存储影响,遵循此方案将有助于解决这些问题。

准备环境

  • 准备基础映像的步骤 - 无论是在非持久性 VDI 还是 RDSH 环境中,只需在基础映像中完成几个步骤即可启用此方法。

  • 使用 UE-V 作为 App-V 方法的用户配置文件管理 (UPM) 解决方案 – 此方法的基石是 UEM 解决方案能够仅保留几个注册表和文件位置的内容。 这些位置构成用户集成*。 请务必查看 UPM 解决方案的特定要求。

用户体验演练

  • 演练 – 它是 App-V 和 UE-V 操作的分步演练,以及用户应具有的期望。

  • 结果 – 描述预期结果。

对包生命周期的影响

通过性能优化/优化增强 VDI 体验

适用性清单

清单 部署环境
清单框 非持久性 VDI 或 RDSH。
清单框 用户体验虚拟化 (UE-V) 、其他 UPM 解决方案或用户配置文件磁盘 (UPD) 。
清单 预期配置
清单框 启用了 App-V 用户状态模板的用户体验虚拟化 (UE-V) ,或者将用户配置文件管理 (UPM) 软件。 非 UE-V UPM 软件必须能够在登录或进程/应用程序启动和注销时触发。
清单框 app-V 共享内容存储 (SCS) 已配置或可配置。
清单 IT 管理
清单框 管理员可能需要定期更新 VM 基础映像以确保最佳性能,或者管理员可能需要为不同的用户组管理多个映像。

使用方案

查看这两种方案时,请记住,这些方案代表了极端情况。 根据使用情况要求,可以选择将这些步骤应用于部分用户和/或虚拟应用程序包。

  • 性能:为了提供最佳用户体验,此方法使用 UPM 解决方案的功能,需要额外的映像准备,并且可能会产生一些更多的映像管理开销。

    以下部分介绍有状态非持久性部署中的许多性能改进。 有关详细信息,请参阅本文) 中的 优化包发布性能 (的序列化步骤

  • 存储:此处仍适用以前方案的一般预期。 但是,请记住,VM 映像通常存储在昂贵的阵列中;方法略有改变。 不要在基础映像中预配置面向用户的虚拟应用程序包。

    本文) 的 用户体验演练 (详细介绍了此更改的影响。

准备环境

以下信息显示了为该方法准备基础映像和 UE-V 或其他 UPM 解决方案所需的步骤。

准备基础映像

  • 性能

    • 启用 App-V 客户端,如 启用 App-V 内置客户端中所述。
    • 启用 UE-V 并从 UE-V 模板库下载 App-V 设置模板,请参阅以下步骤。
    • (SCS) 模式配置共享内容存储。 有关详细信息,请参阅 部署 App-V Sequencer 和配置客户端
    • 在登录注册表 DWORD 上配置保留用户集成。
    • 预配置所有用户包和面向全局的包,例如 Add-AppvClientPackage
    • 预配置所有用户和面向全局的连接组,例如 Add-AppvClientConnectionGroup
    • 预发布所有面向全局的包。 或:
      • 执行全局发布/刷新。

      • 执行用户发布/刷新。

      • 取消发布所有用户目标包。

      • 删除以下用户虚拟文件系统 (VFS) 条目:

        • AppData\Local\Microsoft\AppV\Client\VFS
        • AppData\Roaming\Microsoft\AppV\Client\VFS
  • 存储

    • 启用 App-V 客户端,如 启用 App-V 内置客户端中所述。
    • 启用 UE-V 并从 UE-V 模板库下载 App-V 设置模板,请参阅以下步骤。
    • (SCS) 模式配置共享内容存储。 有关详细信息,请参阅 部署 App-V Sequencer 和配置客户端
    • 在登录注册表 DWORD 上配置保留用户集成。
    • 预配置所有面向全局的包,例如 Add-AppvClientPackage
    • 预配置所有面向全局的连接组,例如 Add-AppvClientConnectionGroup
    • 预发布所有面向全局的包。

配置

对于关键的 App-V 客户端配置以及更多上下文和操作方法,请查看以下配置设置:

  • 共享内容存储 (SCS) 模式:运行共享内容存储时,硬盘上仅保留发布数据;其他虚拟应用程序资产保留在内存中, (RAM) 。 这种结果有助于节省本地存储,并将每秒磁盘 I/O (IOPS) 最小化。

    当 App-V 客户端终结点与 SCS 内容服务器 SAN 之间提供低延迟连接时,建议使用此设置。

  • PreserveUserIntegrationsOnLogin:如果尚未预配置 add-AppvClientPackage () 特定包,并且未配置此设置,则 App-V 客户端将取消集成*持久化的用户集成,然后重新集成*。

    对于每个满足上述条件的包,在发布/刷新期间将有效地完成两次工作。

    如果不打算在基础映像中预配置每个可用用户包,请使用此设置。

    • 在 注册表中配置 HKEY_LOCAL_MACHINE\Software\Microsoft\AppV\Client\Integration
    • 创建值为 1 的 DWORD 值 PreserveUserIntegrationsOnLogin
    • 重启 App-V 客户端服务或重启运行 App-V 客户端的计算机。
  • MaxConcurrentPublishingRefresh:此设置确定可以同时执行发布刷新/同步的用户数。 默认设置没有限制。

    限制并发发布刷新次数可防止 CPU 使用率过高,从而影响计算机性能。 建议在 RDS 环境中使用此限制,其中多个用户可以同时登录到同一台计算机并执行发布刷新同步。

    如果达到并发发布刷新阈值,则发布新应用程序并在最终用户登录后使其可供其使用所需的时间可能会花费不确定的时间。

    • 在 注册表中配置 HKEY_LOCAL_MACHINE\Software\Microsoft\AppV\Client\Publishing
    • 使用所需的最大并发发布刷新次数创建 DWORD 值 MaxConcurrentPublishingrefresh
    • 无需重启 App-V 客户端服务和计算机。

为 App-V 方法配置 UE-V 解决方案

建议使用用户体验虚拟化 (UE-V) 来捕获和集中特定用户的应用程序设置和 Windows 操作系统设置。 然后,这些设置将应用于用户访问的不同计算机,包括台式计算机、便携式计算机和虚拟桌面基础结构 (VDI) 会话。 UE-V 针对 RDS 和 VDI 方案进行优化。

有关详细信息,请参阅:

注意

如果不执行其他配置步骤,用户环境虚拟化 (UE-V) 将无法同步目标计算机上的“开始”菜单快捷方式 (.lnk 文件) 。 默认情况下,将排除.lnk文件类型。

UE-V 仅支持从 RDS 和 VDI 方案中的排除列表中删除.lnk文件类型,其中每个用户的设备都将有相同的应用程序集安装到同一位置,并且每个.lnk文件对所有用户的设备都有效。 例如,UE-V 目前不支持以下两种方案,因为最终结果是快捷方式在一台设备上有效,但并非所有设备都有效。

  • 如果用户在启用了.lnk文件的设备上安装了应用程序,而同一本机应用程序安装在另一台设备上,则为启用了 .lnk 文件的其他安装根目录。

  • 如果用户在一个设备上安装了应用程序,但另一台设备上未安装应用程序,但启用了.lnk文件。

重要提示

本主题介绍如何使用注册表编辑器更改 Windows 注册表。 如果错误地更改 Windows 注册表,可能会导致严重问题,可能需要重新安装 Windows。 在更改注册表之前,应 (System.dat 和User.dat) 创建注册表文件的备份副本。 Microsoft 无法保证可以解决更改注册表时可能出现的问题。 更改注册表的风险自担。

使用 Microsoft 注册表编辑器 (regedit.exe) 导航到HKEY\_LOCAL\_MACHINE\Software\Microsoft\UEV\Agent\Configuration\ExcludedFileTypes排除的文件类型并从中删除.lnk

为 App-V 方法配置其他用户配置文件管理 (UPM) 解决方案

在有状态环境中,预期会实现 UPM 解决方案,并且可以支持跨会话和登录名之间的用户数据持久性。

UPM 解决方案的要求如下。

若要启用优化的登录体验(例如用户的 App-V 方法),解决方案必须能够:

  • 将以下用户集成保留为用户配置文件/角色的一部分。

  • 在登录时触发用户配置文件同步 (或应用程序启动) ,这可以保证在发布/刷新开始之前应用所有用户集成,或者,

  • (UPD) 或类似技术(包含用户集成)附加和分离用户配置文件磁盘。

注意

仅当整个配置文件存储在用户配置文件磁盘上时,才使用 UPD 时,才支持 App-V。

将 UPD 用于存储在用户配置文件磁盘中的选定文件夹时,不支持 App-V 包。 写入时复制驱动程序不会处理 UPD 所选文件夹。

  • 在会话注销之前捕获对构成用户集成的位置的更改。

使用 App-V 在添加发布服务器 (Add-AppvPublishingServer) 可以配置同步,例如,在登录期间和/或在指定的刷新间隔后刷新。 在这两种情况下,都创建计划任务。

在早期版本的 App-V 中,这两个计划任务都是使用 VBScript 配置的,该 VBScript 将启动用户和全局刷新。 从 Application Virtualization 5.0 SP2 的修补程序包 4 开始,SyncAppvPublishingServer.exe启动登录的用户刷新。 引入此更改旨在为 UPM 解决方案提供触发过程。 此过程延迟发布/刷新,以允许 UPM 解决方案应用用户集成。 发布/刷新完成后,它将退出。

用户集成

注册表 - HKEY_CURRENT_USER

  • 路径 - Software\Classes

    排除:本地设置、激活类、AppX*

  • 路径 - Software\Microsoft\AppV

  • Path - Software\Microsoft\Windows\CurrentVersion\App Paths

文件位置

  • 根 – “环境变量” APPDATA

    路径 – Microsoft\AppV\Client\Catalog

  • 根 – “环境变量” APPDATA

    路径 – Microsoft\AppV\Client\Integration

  • 根 – “环境变量” APPDATA

    路径 - Microsoft\Windows\Start Menu\Programs

  • (保留所有桌面快捷方式、虚拟和非虚拟)

    根 - “KnownFolder” {B4BFCC3A-DB2C-424C-B029-7FE99A87C641}FileMask - *.lnk

用户体验演练

以下过程是 App-V 和 UPM 操作以及用户期望的分步演练。

  • 性能:在 VDI/RDSH 环境中实现此方法后,首次登录时,

    • (操作) 启动用户发布/刷新。

      (预期) 如果用户第一次发布虚拟应用程序 (非持久性) ,则此操作将采用通常的发布/刷新持续时间。

  • (操作) 发布/刷新后,UPM 解决方案会捕获用户集成。

    (预期) 根据 UPM 解决方案的配置方式,此捕获可能会在注销过程中发生。 此结果会产生与保留用户状态相同的/类似的开销。

    在后续登录时

    • (操作) UPM 解决方案在发布/刷新之前将用户集成应用于系统。

      (预期) 桌面上或开始菜单中将存在快捷方式,这些快捷方式将立即生效。 当发布/刷新完成 (即包权利) 更改时,某些权利可能会消失。

    • (操作) 发布/刷新将处理用户包权利更改的取消发布和发布操作。

      (预期) 如果没有权利更改,发布将在几秒钟内完成。 否则,相对于虚拟应用程序的数量和复杂性,发布/刷新将增加

      发布操作 (Publish-AppVClientPackage) 将条目添加到用户目录、将权利映射到用户、标识本地存储,并通过完成任何集成步骤来完成。

    • (操作) UPM 解决方案将在注销时再次捕获用户集成。

      (预期) 与上一个相同。

    结果

    • 由于用户集成已完全保留,因此不会完成发布/刷新集成等工作。 所有虚拟应用程序将在登录后几秒钟内可用。
    • 发布/刷新将处理对用户授权的虚拟应用程序的更改,这会影响体验。
  • 存储:在 VDI/RDSH 环境中实现此方法后,首次登录时

    • (操作) 启动用户发布/刷新。

      (预期) :

      • 如果此实例是用户首次发布虚拟应用程序 (例如非持久性) ,则这需要通常的发布/刷新持续时间。
      • 第一次和后续登录将受到预配置包 (添加/刷新) 的影响。
    • (操作) 发布/刷新后,UPM 解决方案会捕获用户集成。

      (预期) 根据 UPM 解决方案的配置方式,此捕获可能会在注销过程中发生。 此结果会产生与保留用户状态相同的/类似的开销。

    在后续登录时

    • (操作) UPM 解决方案在发布/刷新之前将用户集成应用于系统。

    • (操作) 添加/刷新必须预先配置所有用户目标应用程序。

      • (预期) :
        • 这可能会显著增加应用程序可用性的时间, (大约 10 秒) 。
        • 这会增加相对于虚拟应用程序的数量和复杂性*的发布刷新时间。
    • (操作) 发布/刷新将处理用户包权利更改的取消发布和发布操作。

    结果:由于添加/刷新必须将所有虚拟应用程序重新配置为 VM,因此将延长每次登录时的发布刷新时间。

对包生命周期的影响

升级包是包生命周期的一个重要方面。 为了帮助保证用户有权访问已发布) 或降级 (未发布的) 虚拟应用程序包的适当升级 (,建议更新基本映像以反映这些更改。 若要了解原因,请查看以下部分:

App-V 5.0 SP2 引入了挂起状态的概念。 过去,

  • 如果管理员更改了权利或创建了包的新版本, (升级) 和在发布/刷新正在使用的包期间,则取消发布或发布操作将分别失败。

  • 现在,如果包正在使用中,将插入操作。 服务重启或发出另一个发布或取消发布命令时,将处理取消发布和发布笔操作。 在后一种情况下,如果虚拟应用程序在其他情况下正在使用,则虚拟应用程序将保持挂起状态。 对于全局发布的包,通常需要重启 (或服务重启) 。

在非持久性环境中,不太可能处理这些已插入的操作。 笔操作(例如,任务)在 HKEY_CURRENT_USER \ Software \ Microsoft \ AppV \ Client \ PendingTasks 下捕获。 尽管 UPM 解决方案会保留此位置,但如果在登录之前未将其应用于环境,则不会对其进行处理。

通过性能优化优化增强 VDI 体验

以下部分包含一些列表,其中包含有关 Microsoft 文档和下载的信息,这些文档和下载在优化环境性能时可能很有用。

Windows Server

Microsoft Windows Server 2012 R2 的服务器性能优化指南

服务器角色

Windows 客户端 (来宾 OS) 性能优化指南

优化包发布性能的排序步骤

多个 App-V 功能可促进新方案或启用新的客户部署方案。 以下功能可能会影响发布和启动操作的性能。

步骤 注意事项 优势 权衡
无特征块 1 (FB1,也称为主 FB) 没有 FB1 意味着应用程序将立即启动并流式传输故障, (应用程序需要文件、DLL,并且必须在启动期间通过网络) 拉下。 如果存在网络限制,FB1 将:
  • 减少首次启动应用程序时使用的流故障数和网络带宽。
  • 延迟启动,直到流式传输整个 FB1。
  • Stream错误会缩短启动时间。 需要重新排队配置 FB1 的虚拟应用程序包。

    删除 FB1

    删除 FB1 不需要原始应用程序安装程序。 完成以下步骤后,建议将运行排序器的计算机还原干净快照。

    Sequencer UI - 创建新的虚拟应用程序包。

    1. 完成“自定义 -> 流式处理”的排序步骤。

    2. 在“流式处理”步骤中,不要选择“ 优化包以通过慢速或不可靠的网络进行部署”。

    3. 如果需要,请转到 目标 OS

    修改现有虚拟应用程序包

    1. 完成流式处理前的排序步骤。

    2. 不要选择 “优化包”,以便通过慢速或不可靠的网络进行部署

    3. 移动到 “创建包”。

    Windows PowerShell - 更新现有虚拟应用程序包。

    1. 打开提升的Windows PowerShell会话。

    2. Import-module appvsequencer

    3. Update-AppvSequencerPackage - AppvPackageFilePath

      “C:\Packages\MyPackage.appv” -Installer

      “C:\PackageInstall\PackageUpgrade.exe empty.exe” -OutputPath

      “C:\UpgradedPackages”

      注意

      此 cmdlet 需要可执行 (.exe) 或批处理文件 (.bat) 。 必须提供空 (不执行任何) 可执行文件或批处理文件。

    步骤 注意事项 优势 权衡
    发布时没有 SXS 安装 (预安装 SxS 程序集) 无需重新对虚拟应用程序包进行排队。 SxS 程序集可以保留在虚拟应用程序包中。 SxS 程序集依赖项不会在发布时安装。 必须预安装 SxS 程序集依赖项。

    在排序器上创建新的虚拟应用程序包

    如果在排序程序监视期间,在应用程序安装过程中安装了 SxS 程序集 ((例如 VC++ 运行时) ),则将自动检测到 SxS 程序集并将其包含在包中。 管理员将收到通知,并且可以选择排除 SxS 程序集。

    客户端

    发布虚拟应用程序包时,App-V 客户端将检测是否已安装所需的 SxS 依赖项。 如果依赖项在计算机上不可用,并且它包含在包中,则传统的 Windows Installer (。msi) 将启动 SxS 程序集的安装。 如前所述,只需在运行客户端的计算机上安装依赖项,以确保不会安装 Windows Installer (.msi) 。

    步骤 注意事项 优势 权衡
    选择性地使用动态配置文件 App-V 客户端必须分析和处理这些动态配置文件。

    注意脚本执行、VREG 包含/排除) (的大小和复杂性。

    许多虚拟应用程序包可能已有特定于用户或计算机的动态配置文件。
    如果有选择地使用这些文件,或者根本不使用这些文件,则发布时间将会缩短。 需要单独或通过 App-V 服务器管理控制台重新配置虚拟应用程序包,以删除关联的动态配置文件。

    使用 Windows PowerShell 禁用动态配置

    • 对于已发布的包,可以在不使用的情况下使用Set-AppVClientPackage –Name Myapp –Path c:\Packages\Apps\MyApp.appv

      -DynamicDeploymentConfiguration 参数

    • 同样,使用 Add-AppVClientPackage –Path c:\Packages\Apps\MyApp.appv添加新包时,不要使用

      -DynamicDeploymentConfiguration 参数。

    有关如何应用动态配置的文档,请参阅:

    步骤 注意事项 优势 权衡
    考虑在包生命周期期间执行同步脚本。 如果包中嵌入了脚本附件,则添加 cmdlet 的速度可能会变慢。
    在虚拟应用程序启动期间运行脚本 (StartVirtualEnvironment、StartProcess) 和/或 Add+Publish 将影响在这些生命周期操作中的一个或多个期间感知到的性能。
    使用异步 (非阻塞) 脚本可确保生命周期操作高效完成。 此步骤需要了解具有嵌入式脚本附件的所有虚拟应用程序包,这些包具有关联的动态配置文件,以及同步引用和运行脚本。
    从包中删除无关的虚拟字体。 App-V 产品团队调查的大多数应用程序都包含一些字体,通常少于 20 种。 虚拟字体会影响发布刷新性能。 需要本机启用/安装所需字体。 有关说明,请参阅安装或卸载字体。

    确定包中存在的虚拟字体

    • 创建包的副本。

    • 将 Package_copy.appv 重命名为 Package_copy.zip

    • 打开 AppxManifest.xml 并找到以下语法:

      <appv:Extension Category="AppV.Fonts">
      <appv:Fonts>
      <appv:Font Path="[{Fonts}]\private\CalibriL.ttf" DelayLoad="true"></appv:Font>
      </appv:Fonts>
      

    注意

    如果有字体标记为 DelayLoad,则不会影响首次启动。

    从包中排除虚拟字体

    使用最适合用户范围的动态配置文件 - 计算机上所有用户的部署配置、特定用户的用户配置。

    • 使用部署或用户配置禁用字体。

    字体

    -->
    <Fonts Enabled="false" />
    <!--
    

    App-V 性能指南术语

    描述与 App-V 性能优化相关的概念和操作时,使用以下术语。

    • 复杂性 – 是指在预配置 (Add-AppvClientPackage) 或集成 (Publish-AppvClientPackage) 期间可能影响性能的一个或多个包特征。 一些示例特征包括:清单大小、虚拟字体数、文件数。

    • 取消集成 - 删除用户集成

    • 重新集成 - 应用用户集成。

    • 非持久性、共用 – 每次登录时创建运行虚拟环境的计算机。

    • 持久个人 – 运行虚拟环境的计算机,每次登录时都保持不变。

    • 有状态 - 对于本文档,表示用户集成在会话之间持久保存,用户环境管理技术与非持久性 RDSH 或 VDI 结合使用。

    • 无状态 – 表示会话之间没有保留用户状态的方案。

    • 触发器 – (或本机操作触发器) 。 UPM 使用这些类型的触发器来启动监视或同步操作。

    • 用户体验 - 在 App-V 的上下文中,从数量上说,用户体验是以下部分的总和:

      • 从用户启动登录到何时能够操作桌面。

      • 从桌面可以交互到发布刷新开始 (Windows PowerShell点,使用 App-V 完整服务器基础结构时同步) 。 在独立实例中,启动 Add-AppVClientPackagePublish-AppVClientPackage Windows PowerShell 命令。

      • 从开始到完成发布刷新。 在独立实例中,此刷新是导致虚拟应用程序发布的第一个到最后一个实例。

      • 从可从快捷方式启动虚拟应用程序的位置开始。 或者,它从注册文件类型关联时开始,并将启动指定的虚拟应用程序。

    • 用户配置文件管理 - 用于管理与环境关联的用户组件的受控和结构化方法。 例如,用户配置文件、首选项和策略管理、应用程序控制和应用程序部署。 可以使用脚本编写或第三方解决方案根据需要配置环境。


    对于 App-V 问题,请使用 App-V TechNet 论坛

    Application Virtualization (App-V) 概述