Configuration Manager 中集合的最佳做法

适用于: Configuration Manager(current branch)

某些集合管理指南可能相互矛盾。 例如,出于性能原因,应限制频繁更新的集合数。 但经常更新集合很方便,因为大多数Configuration Manager功能都依赖于集合。 在设计和配置集合和集合评估时,请仔细考虑性能影响和业务要求。

对 Configuration Manager 中的集合使用以下最佳做法。

配置更新的维护时段

可以为设备集合配置维护时段,以限制Configuration Manager在这些设备上安装软件的时间。 如果将维护时段配置为太小,则客户端可能不会安装关键软件更新。 此状态使客户端容易受到更新缓解的问题的影响。

规划维护时段时要记住的重要注意事项:

  • 默认软件更新最大运行时间为 60 分钟。
  • 当Configuration Manager计算是否可以安装更新时,它会增加 5 分钟的最大运行时间,以考虑重启。
  • 维护时段的剩余持续时间必须长于软件更新的最大运行时间加 5 分钟。

避免频繁的集合评估

完整的集合评估不仅评估目标集合,还会评估发生更新时集合限制的任何集合。 此外,如果没有计划的集合更新,则仍会评估其限制集合。 因此,某些集合的评估频率可能比预期更高。

在繁忙的Configuration Manager环境中,可以通过缩减计划来提高集合评估性能,以避免重复的集合评估。 在深层树中,可以降低集合评估频率,因为较高级别的集合评估也会触发较低级别的集合评估。

了解集合评估图

请注意集合评估图的工作原理,以便可以设计适当的集合结构。 不要依赖完整的集合评估来始终更新所有集合。 如果增量更新的集合按计划更新,则引用未启用增量更新的集合可能不会更新。 由于更新可能在增量评估期间发生,因此完全评估可能不会更新集合,结束该周期的集合评估图。 在这种情况下,不会进行引用集合评估。 有关详细信息,请参阅 集合评估图

限制增量更新

为许多集合启用增量更新可能会导致评估延迟。 最好将增量更新的集合数限制为 200 个。 确切数字取决于:

  • 集合总数
  • 在层次结构中添加和更改新资源的频率
  • 层次结构中的客户端数
  • 层次结构中集合成员身份规则的复杂性

如果增量评估周期花费的时间超过配置的更新频率,则Configuration Manager会不断处理集合评估,这可能会影响系统性能。 减少增量更新集合的数量,或增加增量评估周期之间的时间。

鉴于增量集合的潜在影响,必须制定策略或过程来创建集合并分配更新计划。 策略注意事项的示例可能包括:

  • 仅对用于安全范围、客户端设置和维护时段的集合使用增量更新。 这些集合更新会影响客户端行为和对资源的访问。
  • 对于未获得许可批准的应用程序,请将应用程序播发到现有集合,并使用全局条件来限制可用性。
  • 为计划了完整集合更新的其他集合概述适当的时间段。

避免从 CAS 评估大型树

在Configuration Manager环境中,管理中心站点 (CAS) 不评估集合成员身份。 主站点是评估集合的唯一站点。 辅助站点充当仅使用从主站点复制的数据的代理。

若要请求集合更新,CAS 会将请求发送到每个主站点。 主站点评估集合并将结果发送回 CAS。 只有在将所有集合评估指令复制到所有站点、所有站点评估所有集合以及所有数据返回到 CAS 并合并之后,才会显示集合评估结果。

下图演示了 CAS 请求手动集合更新时的流:

从 CAS 手动收集更新

从具有多个主站点的 CAS 进行集合更新可能很耗时。 如果集合未及时评估,则很容易重复该请求。

集合评估线程开始并加载评估图后,评估将继续,直到集合评估图为空。 然后,线程终止并可用于下一次评估。 但是,如果另一个集合评估周期在线程评估集合时排队,该线程会立即重启以尝试评估“错过”周期。

每个评估方法在其自己的线程中运行。 在线程中,Configuration Manager可能会多次尝试绘制同一集合的图形。 然后,Configuration Manager删除第二个和更高版本的请求。

若要防止出现这些情况,请避免手动收集大型树的评估,尤其是从 CAS 处理多个站点时。

考虑集合深度和交叉引用

若要在业务需求和性能之间取得平衡,请务必了解创建的集合结构及其在其他集合上的依赖关系。 如果使用引用一个或多个也引用其他集合的规则创建集合,则会评估所有这些集合以创建该集合的成员身份。

Configuration Manager中的包含和排除集合规则比编写自定义 WQL 查询更容易引用集合。 但是,如果使用 include 和 exclude 集合会导致高性能损失,则可以改用 WQL 查询方法。 使用以下示例查询,并将示例集合 ID XYZ0003F 替换为要包含或排除的集合的 ID。

包括:

Select * from SMS_R_System where SMS_R_System.ResourceId in (select ResourceID from SMS_CM_RES_COLL_XYZ0003F)

排除:

Select * from SMS_R_System where SMS_R_System.ResourceId not in (select ResourceID from SMS_CM_RES_COLL_XYZ0003F)

使用 CEViewer 监视集合评估

可以使用 集合评估查看器 (CEViewer) 来监视正在评估的集合数以及每个集合更新所需的时间。 CEViewer 位于站点服务器上的 CD.Latest 文件夹中。

提示

从 Configuration Manager 版本 2010 开始,此功能内置于控制台中。 有关详细信息,请参阅 如何查看集合评估

若要使用 SQL 手动执行类似的检查,可以使用以下查询:

SELECT [t2].[CollectionName], [t2].[SiteID], [t2].[value] AS [Seconds], [t2].[LastIncrementalRefreshTime], [t2].[IncrementalMemberChanges] AS [IncChanges], [t2].[LastMemberChangeTime] AS [MemberChangeTime]
FROM (
    SELECT [t0].[CollectionName], [t0].[SiteID], DATEDIFF(Millisecond, [t1].[IncrementalEvaluationStartTime], [t1].[LastIncrementalRefreshTime]) * 0.001 AS [value], [t1].[LastIncrementalRefreshTime], [t1].[IncrementalMemberChanges], [t1].[LastMemberChangeTime], [t1].[IncrementalEvaluationStartTime], v1.[RefreshType]
    FROM [dbo].[Collections_G] AS [t0]
    INNER JOIN [dbo].[Collections_L] AS [t1] ON [t0].[CollectionID] = [t1].[CollectionID]
    inner join v_Collection v1 on [t0].[siteid] = v1.CollectionID
    ) AS [t2]
WHERE ([t2].[IncrementalEvaluationStartTime] IS NOT NULL) AND ([t2].[LastIncrementalRefreshTime] IS NOT NULL) and (refreshtype='4' or refreshtype='6')
ORDER BY [t2].[value] DESC