适用于:Configuration Manager
状态消息传送是 Configuration Manager 中最重要的报告机制之一。 它负责应用程序和更新部署统计信息,以及许多其他流。
本文重点介绍处理传入状态消息和更新数据库的SMS_STATE_SYSTEM组件(也称为 StateSys)。
有关状态消息系统的详细信息,请参阅 Configuration Manager 中的状态消息传送说明。
现象
Configuration Manager 管理员注意到报告软件更新符合性和应用程序部署时出现重大延迟。 在这种情况下, <Configuration Manager Installation Directory>\Inboxes\auth\statesys.box\incoming
文件夹包含大量文件。 例如,有数百万个文件。
下面是按以下方式筛选 InboxMon.log 文件时 StateSys
的示例输出:
06-11-2021 08:53:35.276 SMS_INBOX_MONITOR 8972 (0X230C) FILE COUNT FOR DIRECTORY F:\PROGRAM FILES\MICROSOFT CONFIGURATION MANAGER\INBOXES\AUTH\STATESYS.BOX\INCOMING\HIGH IS 13360.~
06-11-2021 08:53:35.401 SMS_INBOX_MONITOR 8972 (0X230C) FILE COUNT FOR DIRECTORY F:\PROGRAM FILES\MICROSOFT CONFIGURATION MANAGER\INBOXES\AUTH\STATESYS.BOX\INCOMING\LOW IS 347.~
06-11-2021 08:53:36.556 SMS_INBOX_MONITOR 8972 (0X230C) FILE COUNT FOR DIRECTORY F:\PROGRAM FILES\MICROSOFT CONFIGURATION MANAGER\INBOXES\AUTH\STATESYS.BOX\INCOMING IS 1087076.~
06-11-2021 09:00:00.785 SMS_INBOX_MONITOR 8972 (0X230C) FILE COUNT FOR DIRECTORY F:\PROGRAM FILES\MICROSOFT CONFIGURATION MANAGER\INBOXES\AUTH\STATESYS.BOX\INCOMING\HIGH IS 7.~
06-11-2021 09:00:01.170 SMS_INBOX_MONITOR 8972 (0X230C) FILE COUNT FOR DIRECTORY F:\PROGRAM FILES\MICROSOFT CONFIGURATION MANAGER\INBOXES\AUTH\STATESYS.BOX\INCOMING\LOW IS 213.~
06-11-2021 09:00:02.885 SMS_INBOX_MONITOR 8972 (0X230C) FILE COUNT FOR DIRECTORY F:\PROGRAM FILES\MICROSOFT CONFIGURATION MANAGER\INBOXES\AUTH\STATESYS.BOX\INCOMING IS 1099177.~
06-11-2021 09:15:00.135 SMS_INBOX_MONITOR 8972 (0X230C) FILE COUNT FOR DIRECTORY F:\PROGRAM FILES\MICROSOFT CONFIGURATION MANAGER\INBOXES\AUTH\STATESYS.BOX\INCOMING\HIGH IS 23.~
06-11-2021 09:15:00.240 SMS_INBOX_MONITOR 8972 (0X230C) FILE COUNT FOR DIRECTORY F:\PROGRAM FILES\MICROSOFT CONFIGURATION MANAGER\INBOXES\AUTH\STATESYS.BOX\INCOMING\LOW IS 0.~
06-11-2021 09:15:01.130 SMS_INBOX_MONITOR 8972 (0X230C) FILE COUNT FOR DIRECTORY F:\PROGRAM FILES\MICROSOFT CONFIGURATION MANAGER\INBOXES\AUTH\STATESYS.BOX\INCOMING IS 1117189.~
文件数可能会继续增长,或者文件在合理的时间范围内处理速度可能太慢。 长时间的服务器中断或大规模部署后,可能会出现此问题。
原因
传入的文件是通常文件扩展名为或.smw
的.smx
纯文本 XML 文件。 这些文件包含客户端 ID(称为 SMS GUID)和有效负载。 通常,每个文件都包含多个消息。 这是因为客户端会在发送消息之前对消息进行批处理(默认值为 15 分钟)。
StateSys 旨在分批选取文件、分析 XML 文件并更新数据库。 更新数据库时,它会运行 Configuration Manager 提供的一些 SQL 存储过程和 CLR 程序集。 因此,它主要取决于 SQL Server 后端性能。 当 SQL Server 长时间与其他任务饱和时,此条件可能会导致状态消息累积。
同时,StateSys 有一些设计,可能会阻止它赶上近百万文件的积压工作:
- 文件按字母顺序进行处理,而不是按“先出(FIFO)”顺序处理。 由于管理点为文件生成随机名称,因此可能会在旧消息之前处理新消息。 StateSys 对这种情况具有复原能力。
- 每个消息都包含一个序列号。 StateSys 维护表中
SR_MissingRanges
存储的缺失范围的列表。 如果缺少的范围超过两天(默认值),StateSys 会为客户端重新同步。 重新同步会导致客户端发送与所有其他消息相同的队列的大型 XML 文件。 如果新状态消息始终比旧消息早两天进行处理,则此条件可能会成为某些客户端的恶性循环,并导致频繁重新同步。
解决方法
若要排查性能问题,请执行以下步骤:
确定并消除导致积压的问题。
如果问题是大规模部署,请暂时禁用部署,或重新考虑部署策略。 例如,如果部署软件更新组 1,000 个更新,则它可能会为每个更新、每个状态(默认)、每个客户端和整个组生成强制状态消息。 这可以创建数百万条状态消息。
如果问题 SQL Server 性能不佳,请与数据库管理员协作解决此问题。 如果有许多文件无法处理,请先调查根本原因。
建立 Configuration Manager 性能基线,了解环境的常规处理速率。 StateSys 的特定性能计数器包括“已处理的消息记录/分钟”和“消息文件记录预处理器/分钟”。通常,这些平均数万人。 如果没有要处理的文件,这两个计数器将减少到 0。
如果通常的处理速率不足以处理积压工作,请转到下一步。
-
警告
如果更改这些设置不正确,则可能会出现严重问题。 Microsoft无法保证这些问题可以解决,并且不支持此方案。 自行修改设置。 建议在解决积压工作后还原这些设置。
必须至少具有 Configuration Manager 基础结构管理员权限才能修改这些设置。
使用 Windows Management Instrumentation Tester 工具(Wbemtest)连接到 SMS 提供程序。 选择“连接”,在“命名空间”下输入站点服务器,然后选择“连接”。 输入
root\SMS\site_<site code>
本地连接,或输入\\MachineName\root\SMS\site_<site code>
远程连接。选择 “查询”,输入以下查询,然后选择“ 应用” :
SELECT * FROM SMS_SCI_COMPONENT WHERE ITEMNAME = 'SMS_STATE_SYSTEM|SMS SITE SERVER'
此查询返回安装了SMS_STATE_SYSTEM组件的 Configuration Manager 站点的列表。
双击要更改其设置的网站,然后双击站点>/StateSys 实例的属性<列表中的 Props。
若要查看此实例的嵌入属性列表,请选择“ 查看嵌入”。
双击每个嵌入属性以检查属性名称和值。 查找名称为 Loader Threads 和值 4 的属性。
双击 “值”,将值增加到 16。 选择“保存属性”,然后选择“保存对象”。
查找名为 Min Missing Message Age 和值 2,880(分钟)的另一个嵌入属性。
双击 “值”,将值增加到 10,080 (7 天),以防止不必要的重新同步。 选择“保存属性”,然后选择“保存对象”。
在 Props 的属性编辑器对话框中,选择“保存属性”。
在 StateSys 实例的对象编辑器 对话框中,选择“ 保存对象”。
关闭 Wbemtest。
使用 Configuration Manager Service Manager 停止,然后重启SMS_STATE_SYSTEM组件。
重启SMS_STATE_SYSTEM组件后,新设置将记录 StateSys.log,如下所示。
08-24-2021 21:24:16.574 SMS_STATE_SYSTEM 19380 (0X4BB4) USING THE FOLLOWING CONFIGURATION PROPERTIES FROM THE SITEF CONTROL FILE: 08-24-2021 21:24:16.575 SMS_STATE_SYSTEM 19380 (0X4BB4) SITE CODE CB1 08-24-2021 21:24:16.575 SMS_STATE_SYSTEM 19380 (0X4BB4) PARENT SITE CODE 08-24-2021 21:24:16.576 SMS_STATE_SYSTEM 19380 (0X4BB4) LOADER THREADS 16 08-24-2021 21:24:16.576 SMS_STATE_SYSTEM 19380 (0X4BB4) INBOX POLLING INTERVAL (SECS) 900 08-24-2021 21:24:16.577 SMS_STATE_SYSTEM 19380 (0X4BB4) LOADER CHUNK SIZE (KB) 256 08-24-2021 21:24:16.578 SMS_STATE_SYSTEM 19380 (0X4BB4) MAX CHUNKS FETCHED 100 08-24-2021 21:24:16.578 SMS_STATE_SYSTEM 19380 (0X4BB4) VERBOSE LOGGING NO 08-24-2021 21:24:16.579 SMS_STATE_SYSTEM 19380 (0X4BB4) MIN RESYNC PERIOD (HOURS) 72 08-24-2021 21:24:16.579 SMS_STATE_SYSTEM 19380 (0X4BB4) RESYNC CHECK INTERVAL (MIN) 15 08-24-2021 21:24:16.580 SMS_STATE_SYSTEM 19380 (0X4BB4) MIN MISSING MESSAGE AGE (MIN) 10880 08-24-2021 21:24:16.581 SMS_STATE_SYSTEM 19380 (0X4BB4) HEARTBEAT MESSAGE INTERVAL (MIN) 60 08-24-2021 21:24:16.581 SMS_STATE_SYSTEM 19380 (0X4BB4) === STATESYS HAS BEEN SUCCESSFULLY INITIALIZED. ===
通过性能计数器和 SQL Server CPU 负载监视处理速率改进。 如果 CPU 负载继续超过 80%,请考虑减少加载程序线程值以避免使其他 Configuration Manager 活动饱和。 相反,如果看到处理速度增加几乎没有 CPU 成本,请增加线程数。
详细信息
Microsoft顶级服务提供以下主动交付:
请联系客户成功客户经理(CSAM),获取顶级支持合同,以计划这些预订。