使用命令行管理程序中的 Troubleshoot-DatabaseLatency.ps1 脚本管理数据库延迟

 

适用于: Exchange Server 2010 SP2, Exchange Server 2010 SP3

上一次修改主题: 2016-11-28

Troubleshoot-DatabaseLatency.ps1 脚本由 Microsoft System Center Operations Manager 2007 用于检测和更正数据库上的高延迟。 可以使用任务计划程序创建计划任务来运行此脚本。 数据库延迟可能由多种问题所导致,包括以下问题:

  • 由于磁盘损坏导致的磁盘延迟   具有非常高的读取或写入延迟的磁盘可能是由磁盘损坏所导致(如果延迟长时间存在)。

  • 域控制器延迟   域控制器可能在响应 LDAP 搜索查询时表现出长时间延迟。

  • 高用户工作负载   执行频繁操作的单个用户(或一组用户)可能导致数据库延迟。

Troubleshoot-DatabaseLatency.ps1 脚本将执行以下操作:

  1. 检查数据库延迟是否超过延迟阈值(由 LatencyThreshold 参数指定)。 默认值为 70 毫秒。

  2. 检查磁盘的传输/秒速率是否小于 DiskReadRateThreshold 性能计数器,以及磁盘的秒/传输速率是否大于 DiskReadLatencyThreshold 性能计数器。 如果是这种情况,则该脚本会确定必须更换磁盘,因为它处于低负载状态下,但是表现出高延迟。

  3. 检查单个用户在最近 10 分钟内使用多个线程的时间是否超过 TimeInServerThreshold 参数指定的值。 如果是这种情况,则可能是该用户导致了高延迟,因此会隔离该用户的邮箱。该用户的邮箱会隔离六小时,在此期间该用户不能访问电子邮件。

Troubleshoot-DatabaseLatency.ps1 脚本中使用的默认设置在 StoreTSConstants.ps1 脚本中进行定义。

注释注意:
脚本必须从其驻留的文件夹运行。默认情况下,与 Exchange 2010 一起安装的脚本安装在 C:\Program Files\Microsoft\Exchange Server\V14\Scripts。命令行管理程序不自动加载脚本。若要从本地文件运行脚本,您必须为所有脚本添加前缀“.\”,例如,若要运行 SampleScript.ps1 脚本,请键入 .\SampleScript.ps1。若要运行脚本并指定默认安装路径,请键入 "C:\Program Files\Microsoft\Exchange Server\V14\Scripts\SampleScript.ps1"。有关详细信息,请参阅使用 Exchange 命令行管理程序编写脚本

使用 Troubleshoot-DatabaseLatency.ps1 脚本

您必须先获得权限,然后才能执行此过程。若要查看所需的权限,请参阅邮箱权限主题中的“邮箱数据库”条目。

以下参数语法集和表列出了可用于检测和解决数据库延迟问题的参数。

Troubleshoot-DatabaseLatency.ps1 -MailboxDatabaseName <DatabaseID> [-LatencyThreshold <1-200>] [-TimeInServerThreshold <1-600000>] [-Quarantine <switch>] [-MonitoringContext <switch>]
参数 必需 描述

MailboxDatabaseName

必需

MailboxDatabase 参数指定要在其上监视数据库延迟的邮箱数据库。

此参数接受以下值:

  • GUID

  • 可分辨名称 (DN)

  • 数据库名称

LatencyThreshold

可选

LatencyThreshold 参数指定数据库在被视为发生延迟之前可以空闲的时间(毫秒)。

默认值为 70 毫秒。

MonitoringContext

可选

MonitoringContext 参数指定是否将命令的结果写入应用程序事件日志。如果您没有指定此值,则事件日志将被写入事件查看器中的以下位置:

“事件查看器”>“应用程序和服务日志”>“Microsoft”>“Microsoft-Exchange-Troubleshooters”/“操作”。

不必为该参数指定值。

Quarantine

可选

Quarantine 参数指定会隔离导致高延迟的重负载用户。如果不指定此参数,则不会隔离用户。

不必为该参数指定值。

TimeInServerThreshold

可选

TimeInServerThreshold 参数指定在邮箱被视为会威胁到数据库的运行状况之前,针对 Exchange 存储为其使用线程的任何用户活动,单个邮箱每分钟可以花费的时间(秒)。 秒数的测量方式是,聚合代表邮箱工作的所有线程(在 Get-StoreUsageStatistics cmdlet 报告的期间内)在 Exchange 存储中花费的时间。 每分钟的工作秒数的计算方式是,将此总数除以 Get-StoreUsageStatistics cmdlet 报告的期间(默认情况下为 10 分钟)。

例如,如果您将此参数设置为 80 秒,并且单个用户在 10 分钟内使用多个线程的时间超过 80 秒,则会返回事件错误。 如果指定了 Quarantine 参数,则会返回事件错误,并且还会将用户的邮箱隔离六小时。

默认值为 200 秒。

示例

此示例说明如何运行具有以下设置的 Troubleshoot-DatabaseLatency.ps1 脚本:

  • LatencyThreshold 参数设置为 100 毫秒。如果数据库的延迟超过 100 毫秒,则会返回错误。

  • TimeInServerThreshold 参数设置为 80 秒。 如果单个用户在 10 分钟内使用多个线程的时间超过 80 秒,则会隔离该用户。

.\Troubleshoot-DatabaseLatency.ps1 -MailboxDatabaseName MBD01 -LatencyThreshold 100 -TimeInServerThreshold 80 -Quarantine
注释注意:
此示例说明如何手动运行一次命令。为了使疑难解答工具有效地监视您的数据库状态,您需要定期运行此命令,以生成必要的参考数据。我们建议您使用 Microsoft Windows 操作系统中的任务计划程序来设置此任务。有关详细信息,请参阅任务计划程序概述

查看数据库延迟疑难解答输出

在事件查看器中,Troubleshoot-DatabaseLatency.ps1 脚本的结果将显示在以下位置:“事件查看器”>“应用程序和服务日志”>“Microsoft”>“Microsoft-Exchange-Troubleshooters”/“操作”。

例如,以下是事件 ID 5111 的输出结果。如果脚本成功运行,没有出现错误,则会返回此输出结果。

数据库延迟疑难解答检测到数据库 MBD01 的当前延迟为 1 毫秒,处于 100 毫秒的阈值内。

下表显示事件 ID、事件描述以及要执行的操作(如果需要)。

注释注意:
此表中的描述是这些事件中可能包括的信息的示例。
事件 ID 描述 操作

5110

数据库延迟疑难解答已在数据库 MBD01 上启动。

仅用于信息参考目的。不需要执行任何操作。

5111

数据库延迟疑难解答检测到数据库 MBD01 的当前延迟为 30 毫秒,处于 70 毫秒的阈值内。

仅用于信息参考目的。不需要执行任何操作。

5411

数据库延迟疑难解答在数据库 MBD01 上隔离了用户 f3bb8007-b6d1-45f5-b748-211d66fa43f6,因为其邮箱中有异常活动。 如果问题仍然存在,则需要手动干预。

警告事件:继续监视。

5412

数据库延迟疑难解答在数据库 MBD01 上发现用户 f3bb8007-b6d1-45f5-b748-211d66fa43f6 存在问题,因为其邮箱中有异常活动。 未隔离该用户,因为未指定 Quarantine 参数。 如果问题仍然存在,则需要手动干预。

警告事件:继续监视。

5710

数据库延迟疑难解答检测到数据库 MBD01 的磁盘延迟不正常。 需要更换磁盘。

错误事件: 需要更换磁盘。 有关更换说明,请与硬件制造商联系。

5712

数据库延迟疑难解答检测到数据库 MBD01 存在高 RPC 平均延迟,但是无法确定原因。需要手动干预。

错误事件: 无法确定延迟的原因。 应创建转储文件并进行分析,以确定问题的原因。

对于 Windows Vista、Windows 7 或 Windows Server 2008,请参阅如何创建用户模式进程转储文件。

对于 Windows Server 2003 或更低版本,请参阅如何使用 Userdump.exe 工具创建转储文件。

 © 2010 Microsoft Corporation。保留所有权利。