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

适用于:

  • Windows 7 SP1
  • Windows 10
  • Windows 11
  • 服务器 2012 R2
  • Server 2016

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

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

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

备注

本文档中使用的某些术语可能具有不同的含义,具体取决于外部源和上下文。 有关本文档后跟星号 *的术语的详细信息,请查看本文档的“ 应用程序虚拟化性能指南术语 ”部分。

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

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

Stateful* 非永久性部署中的 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) 。
清单 预期配置
清单框 用户体验虚拟化 (UE-V) 启用了 App-V 用户状态模板,或者用户配置文件管理 (UPM) 软件。 非UE-V UPM 软件必须能够在登录名或进程/应用程序"开始"菜单和注销上触发。
清单框 配置或配置了 MICROSOFT STORE (SCS) 的 App-V 共享内容。
清单 IT 管理
清单框 管理员可能需要定期更新 VM 基础映像以确保最佳性能,否则管理员可能需要管理不同用户组的多个映像。

使用情况方案

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

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

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

  • 存储:上述方案的一般预期仍适用于此处。 但是,请记住,VM 映像通常存储在成本高昂的数组中;对方法进行了轻微的更改。 不要在基本映像中预先配置用户目标虚拟应用程序包。

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

准备环境

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

准备基本映像

  • 性能

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

配置

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

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

    当 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服务,并从Microsoft 用户体验虚拟化 (UE-V) 模板库下载以下 Microsoft 创作的 App-V 设置模板。 注册模板。 有关UE-V模板的详细信息,请参阅用户体验虚拟化 (UE-V) Windows客户端概述

备注

如果不执行其他配置步骤,用户环境虚拟化 (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

    排除:本地设置、ActivatableClasses、AppX*

  • 路径 - Software\Microsoft\AppV

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

文件位置

  • 根 - “环境变量”APPDATA

    路径 - Microsoft\AppV\Client\Catalog

  • 根 - “环境变量”APPDATA

    路径 - Microsoft\AppV\Client\Integration

  • 根 - “环境变量”APPDATA

    路径 - Microsoft\Windows\"开始"菜单 Menu\Programs

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

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

用户体验演练

以下过程是应用 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 \ SoftwareMicrosoftAppVClientPendingTasks**** \ **** \ **** \ **** \ 下捕获任务。**** 虽然此位置由 UPM 解决方案保留,但如果在登录之前未应用到环境,则不会对其进行处理。

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

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

**.NET NGEN 博客 (强烈推荐) **

Windows服务器和服务器角色

服务器性能优化指南

服务器角色

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

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

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

步骤 注意事项 优势 权衡
无功能块 1 (FB1,也称为主 FB) 没有 FB1 意味着应用程序将立即启动,流故障 (应用程序需要文件,DLL,并且必须在启动期间通过网络) 下拉。 如果存在网络限制,FB1 将:
  • 减少首次启动应用程序时使用的流故障和网络带宽数。
  • 延迟启动,直到整个 FB1 已流式传输。
  • 流故障会缩短启动时间。 需要重新排序配置 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。将启动 sxS 程序集的 msi) 安装。 如前文所述,只需在运行客户端的计算机上安装依赖项,以确保不会发生Windows安装程序 (.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) 或 Integration (Publish-AppvClientPackage) 期间可能会影响性能的一个或多个包特征。**** 一些示例特征包括:清单大小、虚拟字体数、文件数。

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

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

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

    • 永久性、个人 - 运行虚拟环境的计算机,对于每个登录都保持不变。

    • 有状态 - 对于本文档,意味着会话之间会保留用户集成,用户环境管理技术与非永久性 RDSH 或 VDI 结合使用。

    • 无状态 - 表示在会话之间不保留任何用户状态的情况。

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

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

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

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

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

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

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


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

    相关文章

    应用程序虚拟化 (App-V) 概述