本文帮助你识别和排查影响 Operations Manager (OpsMgr) 数据库和数据仓库数据插入时间的性能问题。 本文适用于所有受支持的 System Center Operations Manager 版本
原始产品版本: System Center Operations Manager
原始 KB 数: 2681388
Operations Manager 数据库存在性能问题的一个典型迹象是 Operations Manager 事件日志中出现事件 ID 2115 事件。 这些事件通常指示管理服务器上或者运行 Microsoft SQL Server 且托管 Operations Manager 或 Operations Manager 数据仓库数据库的服务器上存在性能问题。
背景
数据库和数据仓库写入操作工作流在管理服务器上运行。 这些工作流首先将它们从代理和网关服务器收到的数据保留在内部缓冲区中。 然后,它们从内部缓冲区收集这些数据,并将其插入数据库和数据仓库。 完成首次数据插入后,工作流会创建另一个批。
每个数据批的大小取决于创建该批时缓冲区中可以保留的数据量。 但是,一个批中的最大数据项数目限制为 5,000 个。 如果传入数据项的速率提高,或者将数据项插入 Operations Manager 和数据仓库数据库的吞吐量降低,则缓冲区会累积更多数据,并且批大小会增加。
有多个写入操作工作流在管理服务器上运行。 例如,以下工作流处理将不同数据类型的数据插入 Operations Manager 和数据仓库数据库的操作:
- Microsoft.SystemCenter.DataWarehouse.CollectEntityHealthStateChange
- Microsoft.SystemCenter.DataWarehouse.CollectPerformanceData
- Microsoft.SystemCenter.DataWarehouse.CollectEventData
- Microsoft.SystemCenter.CollectAlerts
- Microsoft.SystemCenter.CollectEntityState
- Microsoft.SystemCenter.CollectPublishedEntityState
- Microsoft.SystemCenter.CollectDiscoveryData
- Microsoft.SystemCenter.CollectSignatureData
- Microsoft.SystemCenter.CollectEventData
当管理服务器上的数据库或数据仓库写入操作工作流遇到数据批插入速度缓慢的问题时(例如超过 60 秒),工作流会开始将事件 ID 2115 记录到 Operations Manager 事件日志中。 此事件每分钟记录一次,直到数据批已插入到数据库或数据仓库,或者数据被写入操作工作流模块删除。 因此,记录事件 ID 2115 的原因是在将数据插入数据库或数据仓库期间发生了延迟。 下面是由于写入操作工作流模块删除了数据而记录的事件示例:
事件类型:错误
事件源: HealthService
事件类别: 无
事件 ID: 4506
计算机: <RMS 名称>
说明:
由于管理组 <MANAGEMENT GROUP> NAME> 中针对 ID 为“{F56EB161-4ABE-5BC7-610F-4365524F294E}”的规则<“Microsoft.SystemCenter.OperationalDataReporting.SubmitOperationalDataFailed.Alert”中存在太多未完成的数据,因此数据被删除。
深入了解
事件 ID 2115 包含两项重要信息:
- 遇到问题的工作流的名称
- 自工作流开始插入最后一批数据以来的已用时间
例如:
日志名称: Operations Manager
源: HealthService
事件 ID: 2115
级别: 警告
计算机: <RMS 名称>
说明:
管理组管理组 <名称> 中的绑定数据源已将项发布到工作流,但在 300 秒内未收到响应。 这表示工作流存在性能或功能问题。
工作流 ID: Microsoft.SystemCenter.CollectPublishedEntityState
实例: <RMS 名称>
实例 ID: {88676CDF-E284-7838-AC70-E898DA1720CB}
工作流 Microsoft.SystemCenter.CollectPublishedEntityState
将实体状态数据写入 Operations Manager 数据库。 事件 ID 2115 消息指示 Microsoft.SystemCenter.CollectPublishedEntityState
工作流正在尝试插入一批实体状态数据,并且该数据在 300 秒前启动。 在此示例中,实体状态数据插入操作未完成。 通常,插入一批数据应在 60 秒内完成。
如果工作流 ID 包含术语 DataWarehouse,则问题涉及 Operations Manager 数据仓库数据库。 否则,问题与将数据插入 Operations Manager 数据库相关。
原因
以下任何问题都可能导致此类问题。
插入问题
此问题可能表示数据库性能问题或代理发送的数据过多。 事件 ID 2115 说明仅指示存在影响将数据插入数据库(Operations Manager 或 Operations Manager 数据仓库)的积压工作。 发生这些事件的原因有很多。 例如,可能突然出现了大量的发现数据。 或者,可能存在数据库连接问题。 或者,数据库可能已满。 或者,可能存在与磁盘或网络相关的约束。
在 Operations Manager 中,发现数据插入是一个劳动力密集程度相对较高的过程。 此事件也可能是突发性的,在这种情况下,管理服务器将接收大量数据。 这些突发情况可能导致出现事件 ID 2115 的临时实例,但如果发现数据收集过程中一直出现事件 ID 2115,则可能表示出现了数据库或数据仓库插入问题,或者管理包中的发现规则正在收集过多的发现数据。
实例空间更改或管理包导入所导致的 Operations Manager 配置更新将直接影响数据库服务器上的 CPU 利用率。 这可能会影响数据库插入时间。 在执行管理包导入或大规模的实例空间更改后,预期会出现事件 ID 2115 消息。 有关详细信息,请参阅 检测和排查 Operations Manager 中的频繁配置更改问题。
在 Operations Manager 中,高开销的用户界面查询也可能影响数据库上的资源利用率,从而导致数据库插入时间出现延迟。 当用户执行高开销的用户界面操作时,你可能会看到记录的事件 ID 2115 消息。
数据库已满或脱机
如果 Operations Manager 或 Operations Manager 数据仓库数据库空间不足或脱机,则管理服务器预期会继续将事件 ID 2115 消息记录到 Operations Manager 事件日志中。 此外,挂起时间也会增加。
如果写入操作工作流无法连接到 Operations Manager 或 Operations Manager 数据仓库数据库,或者它们使用无效的凭据建立连接,则会阻止数据插入并记录事件 ID 2115 消息,直到这种情况得到解决。
配置和环境问题
如果未正确配置 Operations Manager 数据库、数据仓库数据库和所有支持环境,则事件 ID 2115 消息也可能表示存在性能问题。 下面是此问题的一些可能原因:
- SQL Server 日志或
TempDB
数据库太小或空间不足。 - Operations Manager 和数据仓库数据库与管理服务器之间的网络链路带宽受限或延迟很大。 对于这种情况,我们建议将管理服务器放置在 Operations Manager 和数据仓库服务器所在的同一 LAN 上。
- 托管数据库、日志或
TempDB
Operations Manager 和数据仓库数据库使用的数据磁盘速度缓慢或遇到功能问题。 对于这种情况,我们建议使用 RAID 10,并在阵列控制器上启用带后备电池的写入缓存。 - Operations Manager 数据库或数据仓库服务器没有足够的内存或 CPU 资源。
- 托管 Operations Manager 数据库或数据仓库的 SQL Server 实例处于脱机状态。
我们还建议将管理服务器放置在 Operations Manager 和数据仓库数据库服务器所在的同一 LAN 上。
如果托管数据库的磁盘子系统、日志或 TempDB
Operations Manager 和数据仓库数据库使用的事件 ID 2115 消息速度缓慢或遇到功能问题,则也会发生事件 ID 2115 消息。 我们建议使用 RAID 10,并在阵列控制器上启用带后备电池的写入缓存。
解决方法
排查性能相关的事件 ID 2115 消息的第一步是标识事件中返回的数据项。 例如,工作流 ID 会指示数据项的类型(如“发现”、“警报”、“事件”、“性能”)以及涉及哪个数据库。 如果工作流 ID 包含术语 DataWarehouse,则故障排除焦点应位于 Operations Manager 数据仓库数据库上。 对于其他情况,重点应放在 Operations Manager 数据库上。
方案 1
在以下示例中,问题涉及 Microsoft.SystemCenter.CollectSignatureData
工作流:
事件类型:
警告事件源:HealthService
事件类别: 无
事件 ID: 2115
计算机: <RMS 名称>
说明:管理组管理组 <名称> 中的绑定数据源已将项发布到工作流,但在 300 秒内未收到响应。 这表示工作流存在性能或功能问题。
工作流 ID: Microsoft.SystemCenter.CollectSignatureData
实例: <RMS 名称>
实例 ID: {F56EB161-4ABE-5BC7-610F-4365524F294E}
分辨率
我们可以通过运行以下 SQL 查询来识别此示例中的性能签名数据收集规则。 应在 SQL Server Management Studio 中针对 Operations Manager 数据库运行此查询。
-- Return all Performance Signature Collection Rules
Use OperationsManager
select
managementpack.mpname,
rules.rulename
from performancesignature with (nolock)
inner join rules with (nolock)
on rules.ruleid = performancesignature.learningruleid
inner join managementpack with(nolock)
on rules.managementpackid = managementpack.managementpackid
group by managementpack.mpname, rules.rulename
order by managementpack.mpname, rules.rulename
此查询返回所有性能签名收集规则及其各自的管理包名称。 为管理包名称和规则名称返回一列。
管理服务器上的以下性能监视器计数器提供有关数据库和数据仓库写入操作插入批大小与时间的信息:
- OpsMgr 数据库写入操作模块(*)\平均批大小
- OpsMgr 数据库写入操作模块(*)\平均处理时间
- OpsMgr 数据仓库写入器模块(*)\平均批处理时间(毫秒)
- OpsMgr 数据仓库写入器模块(*)\平均批大小
如果批大小增加(例如,默认批大小为 5,000 项),则表示管理服务器将数据插入数据库或数据仓库的速度缓慢,或者它正在从代理或网关服务器接收突发性的数据项。
通过检查数据库和数据仓库写入操作帐户 平均处理时间 计数器,我们可以了解向数据库和数据仓库写入一批数据平均需要多长时间。 根据将一批数据写入数据库所需的时间,我们有机会进行优化。
方案 2
如果承载 Operations Manager 数据库或数据仓库数据库的 SQL Server 实例处于脱机状态,事件 ID 2115 和事件 ID 29200 将记录到 Operations Manager 事件日志中。 例如:
日志名称: Operations Manager
源: HealthService
日期:
事件 ID: 2115
级别: 警告
说明:
管理组 MSFT 中的绑定数据源已将项发布到工作流,但在 60 秒内未收到响应。 这表示工作流存在性能或功能问题。
工作流 ID: Microsoft.SystemCenter.CollectEventData
实例: name.contoso.local
实例 ID: {88676CDF-E284-7838-AC70-E898DA1720CB}
日志名称: Operations Manager
源: OpsMgr 配置服务
事件 ID: 29200
级别:错误
说明:
OpsMgr 配置服务已失去与 OpsMgr 数据库的连接,因此无法从数据库获取任何更新。 这可能是一个可自行恢复的暂时性问题。 如果该问题持续出现,则通常表示数据库有问题。 原因:
建立与 SQL Server 的连接时,出现网络相关或特定于实例的错误。 找不到或无法访问服务器。 请验证实例名称是否正确,SQL Server 是否已配置为允许远程连接。 (提供程序:命名管道提供程序,错误:40 - 无法打开到 SQL Server 的连接)
分辨率
若要解决此问题,请执行以下步骤:
- 连接到托管 Operations Manager 数据库的服务器。
- 打开 服务 小程序。
- 验证 SQL Server (MSSQLSERVER) 服务是否已启动并运行。
- 如果未启动和运行 SQL Server (MSSQLSERVER) 服务,请启动服务。
恢复数据库连接后,工作流应该可以成功地开始在相应数据库中再次存储数据。 事件 ID 31554 确认已成功写入信息:
日志名称: Operations Manager
源: 运行状况服务模块
事件 ID: 31554
任务类别: 数据仓库
级别:信息
说明:
工作流成功将数据存储在数据仓库中
一个或多个工作流受此影响。
工作流名称: Microsoft.SystemCenter.DataWarehouse.CollectEventData
实例名称: name.contoso.local
实例 ID: {88676CDF-E284-7838-AC70-E898DA1720CB}
方案 3
事件 ID 2115 是由无效的 RunAs 凭据引起的。
分辨率
在 Operations Manager 事件日志中检查以下事件。 这些事件通常表示 数据仓库 SQL Server 身份验证帐户 可能具有不正确的凭据。
日志名称: Operations Manager
源: HealthService
事件 ID: 7000
任务类别: 运行状况服务
级别:错误
说明:运行状况服务无法登录管理组管理组名称的 RunAs 帐户<帐户名称>>。< 错误为“登录失败: 未知的用户名或错误的密码。(1326L)”。 这将使运行状况服务无法使用此运行方式帐户监视或执行操作。
日志名称: Operations Manager
源: HealthService
事件 ID: 7015
任务类别: 运行状况服务
级别:错误
说明:
运行状况服务无法验证管理组管理组<名称的 RunAs 帐户<帐户名称>>的未来有效性。 错误为“登录失败: 未知的用户名或错误的密码。(1326L)”。
若要解决此问题,请执行以下步骤:
- 打开 Operations Manager 控制台。
- 选择“ 管理”。
- 选择“ 运行方式配置\帐户”。
- 为 数据仓库 SQL Server 身份验证帐户配置适当的凭据。
方案 4
磁盘性能问题导致的事件 ID 2115。 如果托管数据库、日志或者 Operations Manager 和数据仓库数据库使用的 TempDB 的数据磁盘运行速度缓慢或遇到问题,则可能会发生这种情况。 对于这种情况,我们建议使用 RAID 10,并在阵列控制器上启用带后备电池的写入缓存。
分辨率
首先,为包含 SQL Server 数据或日志文件的所有驱动器捕获以下物理磁盘计数器:
空闲时间百分比:报告的磁盘空闲时间。 低于 50% 的任何值可能指示存在磁盘瓶颈。
平均磁盘队列长度:此值不应超过 LUN 上的主轴数的两倍。 例如,如果 LUN 有 25 个轴,则可接受的值为 50 。 但是,如果 LUN 有 10 个轴,则值为 25 太高。 可以根据 RAID 配置中的 RAID 级别和磁盘数量使用以下公式:
RAID 0:所有磁盘正在 RAID 0 集内工作。
Average Disk Queue Length <= # (Disks in the array) *2
RAID 1:有一半的磁盘正在工作。 因此,只有一半磁盘可以计入磁盘队列。
Average Disk Queue Length <= # (Disks in the array/2) *2
RAID 10:有一半的磁盘正在工作。 因此,只有一半磁盘可以计入磁盘队列。
Average Disk Queue Length <= # (Disks in the array/2) *2
RAID 5:所有磁盘正在 RAID 5 集内工作。
Average Disk Queue Length <= # (Disks in the array/2) *2
平均磁盘传输速率(秒):完成一个磁盘 I/O 所需的秒数。
平均磁盘读取速率(秒):从磁盘读取数据花费的平均时间,以秒为单位。
平均磁盘写入速率(秒):将数据写入磁盘花费的平均时间,以秒为单位。
磁盘字节数/秒:每秒传入或传出磁盘的字节数。
磁盘传输次数/秒:每秒输入和输出操作次数 (IOPS)。注意
此列表中的最后三个计数器应始终具有大约 .020 (20 毫秒)或更少的值,并且不应超过 .050 (50 毫秒)。
SQL Server 性能故障排除指南中记录了以下阈值:
- 小于 10 毫秒:非常好
- 10-20 毫秒:好
- 20-50 毫秒:慢速,需要注意
- 大于 50 毫秒:严重的 I/O 瓶颈
- 磁盘字节数/秒:每秒传输到磁盘或从磁盘传输的字节数
- 磁盘传输次数/秒:每秒输入和输出操作次数 (IOPS)
当“空闲时间百分比”较低(10% 或更少)时,这意味着磁盘已被充分利用。 在这种情况下,此列表中的最后两个计数器(“磁盘字节数/秒”和“磁盘传输次数/秒”)将详细指示驱动器的最大吞吐量,单位分别为字节和 IOPS 。 SAN 驱动器的吞吐量变化很大,具体取决于主轴数、驱动器速度和通道速度。 我们建议咨询 SAN 供应商来了解驱动器支持多少字节和 IOPS。 如果 空闲时间 百分比较低,并且这两个计数器的值不符合驱动器的预期吞吐量,请向 SAN 供应商提供更多故障排除帮助。
以下文章提供了有关如何排查 SQL Server 性能问题的更深入见解:
- 排除 SQL Server 2008 中的性能问题
- 排查 SQL Server 2005 中的性能问题
- SQL Server 性能生存指南
- Microsoft SQL Server 2012 性能仪表板报表
- 如何:排查 SQL Server I/O 瓶颈问题
方案 5
记录事件 ID 2115,管理服务器生成 无法将数据写入 Operations Manager 中的数据仓库 警报。 在管理服务器计算机上还会遇到以下症状:
管理服务器生成了一个或多个类似于下面的警报:
日志名称: Operations Manager
源: 运行状况服务模块
日期: 1/1/2022 12:00:00 PM
事件 ID: 31551
任务类别: 数据仓库
级别:错误
关键字:经典
用户:无
计算机: <ManagementServerFQDN>
说明:
无法在数据仓库中存储数据。 将重试该操作。
异常 'SqlException': 无法打开登录请求的数据库 "OperationsManagerDW"。 登录失败。
用户 'CONTOSO\Action_Account' 登录失败。一个或多个工作流受此影响。
工作流名称:Microsoft.SystemCenter.DataWarehouse.CollectPerformanceData
实例名称: <ManagementServerFQDN>
实例 ID:{AEC38E5Z-67A9-0406-20DB-ACC33BB9C494}
管理组: <ManagementGroupName>管理服务器上的 Operations Manager 事件日志中记录了以下事件:
日志名称: Operations Manager
源: HealthService
日期: 1/1/2022 12:00:00 PM
事件 ID: 2115
任务类别:无
级别: 警告
关键字:经典
用户:无
计算机: <ManagementServerFQDN>
说明:
管理组 <ManagementGroupName> 中的绑定数据源已将项发布到工作流,但在 22560 秒内未收到响应。 这表示工作流存在性能或功能问题。
工作流 ID:Microsoft.SystemCenter.DataWarehouse.CollectPerformanceData
实例: <ManagementServerFQDN>
实例 ID: {AEC38E5Z-67A9-0406-20DB-ACC33BB9C494}
分辨率
如果未为管理服务器的数据仓库运行方式配置文件指定帐户,则可能会出现此问题。 此问题很有可能会影响辅助管理服务器。 若要解决该问题,请执行以下步骤:
在运行 Operations Manager 的计算机上,打开“操作”控制台。
在导航窗格中,选择“ 管理”。
展开 “安全性”,然后选择“ 运行方式配置文件”。
在 “运行方式配置文件 ”视图中,双击 “数据仓库帐户”。
在“运行方式配置文件属性 - 数据仓库帐户属性”对话框中,选择“运行方式帐户”选项卡,然后选择“新建”。
在 “运行方式帐户 ”列表中,选择 “数据仓库操作帐户”。
在 “名称” 列表中,选择生成警报的管理服务器。
选择“确定”两次。
按照步骤 4 到 8 将适当的运行方式帐户分配到以下配置文件:
- 数据仓库配置同步读取器帐户
- 数据仓库报表部署帐户
- 数据仓库 SQL Server 身份验证帐户
对于每个配置文件,请选择与运行方式配置文件名称匹配的运行方式帐户。 例如,进行以下分配:
- 将“数据仓库配置同步读取者帐户”分配到“数据仓库配置同步读取者帐户”配置文件。
- 将“数据仓库报告部署帐户”分配到“数据仓库报告部署帐户”配置文件。
- 将“数据仓库 SQL Server 身份验证帐户”分配到“数据仓库 SQL Server 身份验证帐户”配置文件。
在生成警报的管理服务器上,重启 OpsMgr 运行状况服务。
在管理服务器上的 Operations Manager 事件日志中,验证是否记录了事件 ID 为 31554 的事件。 事件 ID 31554 指示监视器状态已更改为 “正常”。 此项更改将解决警报。
方案 6
事件 ID 2115 发生在运行 HP MPIO FF DSM XP 3.01 的服务器上,其中未显示 LUN。 当用户打开性能监视器并尝试添加计数器时,性能监视器挂起,并且此应用程序的句柄计数迅速增加。
解决方法
对于此问题有两种解决方法:
- 重命名 HPPerfProv.dll 文件,然后重启 Windows。 当该文件已重命名且未加载时,性能监视器将正常工作。
- 在系统上至少提供一个 LUN。