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 进行集合更新可能很耗时。 如果集合未及时求值,则很容易重复该请求。
集合评估线程开始并加载评估图后,评估将继续,直到集合评估图为空。 然后,线程终止并可用于下一次评估。 但是,如果另一个集合评估周期在线程评估集合时排队,该线程会立即重启以尝试评估“错过”周期。
每个评估方法在其自己的线程中运行。 在线程中,Configuration Manager可能会多次尝试绘制同一集合的图形。 然后,Configuration Manager删除第二个和更高版本的请求。
若要防止出现这些情况,请避免手动收集大型树的评估,尤其是从 CAS 处理多个站点时。
考虑集合深度和交叉引用
若要在业务需求和性能之间取得平衡,请务必了解创建的集合结构及其在其他集合上的依赖关系。 如果使用引用一个或多个也引用其他集合的规则创建集合,则会评估所有这些集合以创建该集合的成员身份。
Configuration Manager中的包含和排除集合规则比编写自定义 WQL 查询更容易引用集合。 但是,如果使用包含和排除集合会导致高性能,则可以改用 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