了解客户端限制策略

**适用于:**Exchange Server 2010

**上一次修改主题:**2009-11-17

Microsoft Exchange Server 2010 使用客户端限制策略来管理 Exchange 组织的性能。为此,Exchange 会根据需要跟踪每个用户占用和强制执行连接带宽限制的资源。

此外,客户端限制有助于确保以下事项:

  • 用户不会有意地加重系统负担。
  • 用户不会无意地加重系统负担。
  • 使用各种不同连接方法的用户按比例共享资源。

目录

默认和非默认策略

了解策略参数

Exchange 命令行管理程序命令和参数

常见的限制策略管理任务

限制性能计数器

默认和非默认策略

虽然系统有默认的客户端限制策略,其基本足够用于管理 Exchange 系统所承受的负载,但仍可以根据组织需要自定义默认策略或添加其他策略。

如果在 Exchange 组织中托管了多个租户,则可以为租户的每个用户定义一个可接受的负载。同样,如果是内部部署组织,则可以按用户定义可接受的负载。通过这些策略,Exchange 将评估每个用户使用系统的方式,并确保得出的每个用户的负载处于用户策略所定义的可接受范围内。客户端限制系统将跟踪每个用户的系统使用情况,并使用与该用户关联的限制策略确定是否发生限制。

创建 Exchange 组织后,系统会自动创建默认限制策略,该策略将隐式管理该组织内的所有用户。

在 Exchange 2010 企业版安装中有一个单独的默认限制策略,称为“第一个组织”。在 Outlook Live 服务安装中,每个租户都有其自身的默认限制策略。

了解策略参数

限制策略设置通过使用 Exchange 命令行管理程序中的 Get-ThrottlingPolicySet-ThrottlingPolicyNew-ThrottlingPolicyRemove-ThrottlingPolicy cmdlet 进行管理。

限制策略的可接受负载通过该限制策略上的 cmdlet 参数值定义。限制策略所涉及的组件类型如下:

  • Microsoft Exchange ActiveSync 
  • Exchange Web 服务
  • IMAP
  • Outlook Web App
  • POP
  • Windows PowerShell

除 Windows PowerShell 组件类型外,所有这些组件类型的策略参数运行方式都类似。

常用组件类型由四个策略参数进行管理:<Component Acronym>MaxConcurrency<Component Acronym>PercentTimeInAD<Component Acronym>PercentTimeInCAS-<Component Acronym>PercentTimeInMailboxRPC。参数名以组件类型首字母缩写词作为前缀。下表列出了用于限制策略 cmdlet 中参数的组件类型首字母缩写词。

用于限制策略 cmdlet 的组件类型首字母缩写词

组件首字母缩写词 描述 示例

EAS

Exchange ActiveSync

在参数 EASPercentTimeInCAS 中,组件首字母缩写词 EAS 表示 Exchange ActiveSync 组件。

EWS

Exchange Web 服务

在参数 EWSPercentTimeInCAS 中,组件首字母缩写词 EWS 表示 Exchange Web 服务组件。

OWA

Outlook Web App

在参数 OWAPercentTimeInCAS 中,组件首字母缩写词 OWA 表示 Outlook Web App 组件。

IMAP

IMAP4

在参数 IMAPPercentTimeInCAS 中,组件首字母缩写词 IMAP 表示 IMAP4 组件。

POP

POP3

在参数 POPPercentTimeInCAS 中,组件首字母缩写词 POP 表示 POP3 组件。

备注

统一消息用户被视为 Exchange Web 服务用户,因此他们到 Exchange 服务器的连接将受到 Exchange Web 服务参数的限制,例如,EWSMaxConcurrencyEWSPercentTimeInADEWSPercentTimeInCASEWSPercentTimeInMailboxRPC

返回顶部

MaxConcurrency

MaxConcurrency 策略参数的值表示指定用户针对 Exchange 服务器一次可以建立的并发连接数。连接将在收到请求时建立,一直持续到将响应完整地发送给请求者。如果用户尝试提出的并发请求超过其策略允许的范围,则新的连接尝试将失败。但是,现有的连接仍然有效。<Component Acronym>MaxConcurrency 的有效范围介于 0 到 100(包含两者)之间。要表示 <Component Acronym>MaxConcurrency 不应该受限制,此值应该设置为 $null

重要

除非有业务需要,否则请勿将限制策略参数设置为 $null。非限制用户在有意或无意对服务器施加高负载的能力方面将不受限制。

PercentTimeInCAS、PercentTimeInAD 和 PercentTimeInMailboxRPC

PercentTimeInCASPercentTimeInADPercentTimeInMailboxRPC 策略参数的值表示一分钟可以使用的百分比:

  • 运行客户端访问服务器代码 (<Component Acronym>PercentTimeInCAS)
  • 运行 LDAP 请求 (<Component Acronym>PercentTimeInAD)
  • 运行邮箱 RPC 请求 (<Component Acronym>PercentTimeInMailboxRPC)

如果值为 100,则表示在每个一分钟期限内,进程可花费 60 秒时间消耗相关资源。虽然进程似乎始终不会遇到限制值设为 100 的情况,但仍需要考虑并发请求的影响。如果进程发出了两个并发请求且每个请求都花费 60 秒钟在客户端访问服务器上运行代码,则该进程在 60 秒钟期限内有效使用了 120 秒,从而表示 <Component Acronym>PercentTimeInCAS 值为 200%。

要表示 PercentTimeInCASPercentTimeInADPercentTimeInMailboxRPC 不应该受限制,此值应设为 $null

重要

除非有业务需要,否则请勿将限制策略参数设置为 $null。用户在有意或无意对服务器施加高负载的能力方面将不受限制。

请务必注意,<Component Acronym>PercentTimeInCAS<Component Acronym>PercentTimeInAD<Component Acronym>PercentTimeInMailboxRPC 的重叠超集。这意味着客户端访问服务器处理时间上的消耗将始终大于 <Component Acronym>PercentTimeInAD<Component Acronym>PercentTimeInMailboxRPC 上的消耗。这是因为发出 Active Directory 或 RPC 调用的 Exchange 组件必须先运行客户端访问服务器代码。此外,在发出 LDAP 或 RPC 调用的过程中,<Component Acronym>PercentTimeInCAS 处理时间上的消耗不会停止。即使请求可能在同步等待 Active Directory 或 Exchange 存储的响应,但进程仍将消耗服务器上的线程,因此应针对该用途继续计算时间。所以,<Component Acronym>PercentTimeInCAS 值必须设置为同时大于 <Component Acronym>PercentTimeInAD 和 <Component Acronym>PercentTimeInMailboxRPC 的值。

返回顶部

Exchange 命令行管理程序命令和参数

本节讨论以下 Windows PowerShell 参数:

  • PowerShellMaxConcurrency
  • PowerShellMaxCmdlets
  • PowerShellMaxCmdletsTimePeriod
  • PowerShellMaxCmdletQueueDepth

PowerShellMaxConcurrency

在远程命令行管理程序上下文中,PowerShellMaxConcurrency 参数定义远程命令行管理程序用户可以同时打开的最大远程命令行管理程序会话数。在 Web 服务上下文中,PowerShellMaxConcurrency 参数定义用户可以同时运行的并发 cmdlet 数。此值不一定与用户打开的浏览器数匹配。

PowerShellMaxCmdlets

PowerShellMaxCmdlets 参数定义在每段未受限制的时间段内可以运行的 cmdlet 数量。此参数直接取决于 PowerShellMaxCmdletsTimePeriod 参数所定义的值。应同时设置这两个值。

PowerShellMaxCmdletsTimePeriod

PowerShellMaxCmdletsTimePeriod 参数定义用户可以运行由 PowerShellMaxCmdlets 参数所定义数量的 cmdlet 的时间段(秒)。

PowerShellMaxCmdletQueueDepth

PowerShellMaxCmdletQueueDepth 参数定义用户可以同时运行的操作数量。该值直接影响 PowerShellMaxCmdletsPowerShellMaxConcurrency 参数的行为。例如,PowerShellMaxConcurrency 参数会至少使用两个由 PowerShellMaxCmdletQueueDepth 参数所定义的操作,但其他操作也将根据 cmdlet 每次运行时的限制进行计数。根据限制计算的操作数量取决于所运行的 cmdlet。建议 PowerShellMaxCmdletQueueDepth 参数的值至少是 PowerShellMaxConcurrency 参数值的四倍。该参数不会影响通过使用 Exchange 控制面板运行的操作或通过 Exchange Web 服务运行的操作。

管理客户端限制策略

通过 Exchange 命令行管理程序,可以使用下表中所述的 cmdlet 修改和查看客户端限制策略设置。

用于管理客户端访问服务器上客户端限制策略的 cmdlet

Cmdlet 名称 描述

New-ThrottlingPolicy

此 cmdlet 可新建限制策略。

Remove-ThrottlingPolicy

此 cmdlet 可删除限制策略。

Get-ThrottlingPolicy

使用此 cmdlet 可以查看限制策略的设置。

Set-ThrottlingPolicy

此 cmdlet 可以修改限制策略的所有可用设置。

备注

要将限制策略与单个用户或用户组关联,请将 ThrottlingPolicy 参数与 New-MailboxSet-Mailbox cmdlet 一起使用。

按用户管理客户端限制策略设置

可以在 Exchange 命令行管理程序中使用 Set-MailboxNew-Mailbox cmdlet 的 ThrottlingPolicy 参数,以便通过修改邮箱属性将客户端限制策略与单个用户或用户组关联。有关详细信息,请参阅 Set-MailboxNew-Mailbox

返回顶部

常见的限制策略管理任务

以下是一些可用于管理客户端限制策略的方法。

检索默认的限制策略

默认情况下,客户端限制策略会将 IsDefault 参数设置为 true。可以使用 where-object 筛选器检索默认限制策略。以下示例显示了如何检索默认限制策略。

Get-ThrottlingPolicy | where-object {$_.IsDefault -eq $true}

检索用于管理用户的限制策略

可以按用户设置限制策略。因此,可能需要检索管理特定用户的策略。可以从感兴趣的用户的邮箱中获取 ThrottlingPolicy 参数并将其传递给 Get-ThrottlingPolicy cmdlet。以下示例中使用了一位名为 Tony Smith 的用户的邮箱。

$policy = $null;
$policyLink = (Get-Mailbox tonysmith).ThrottlingPolicy;
if ($policyLink -eq $null)
{ 
    $policy = Get-ThrottlingPolicy | where-object {$_.IsDefault -eq $true}
}
else
{
    $policy = $policyLink | Get-ThrottlingPolicy;

新建非默认限制策略

要新建非默认限制策略,请运行 New-ThrottlingPolicy cmdlet 并设置所需参数。省略的任何参数都将继承默认限制策略的值。以下示例创建了新的限制策略 ClientThrottlingPolicy2。新策略与默认限制策略有着几乎相同的设置。不同之处在于新的非默认限制策略 ClientThrottlingPolicy2EWSPercentTimeInCAS 设置为 80 并关闭了 EWSPercentTimeInAD 限制。

New-ThrottlingPolicy -Name ClientThrottlingPolicy2 -EWSPercentTimeInCAS 80 -EWSPercentTimeInAD $null;

将非默认合并策略分配给用户

要将非默认限制策略分配给用户,请使用 Set-Mailbox cmdlet,方法如下。

$b = Get-ThrottlingPolicy ClientThrottlingPolicy2;
Set-Mailbox -Identity tonysmith -ThrottlingPolicy $b;

如果用户由非默认限制策略管理,而您想要该用户使用默认策略,您可能认为可以通过将 ThrottlingPolicy 参数设置为 $null 来完成这一更改。遗憾的是,将 ThrottlingPolicy 参数设置为 $null 不会修改邮箱对象。要将默认限制策略应用于用户,必须通过使用以下命令为该用户显式设置默认限制策略。

$policy = Get-ThrottlingPolicy | where-object {$_.IsDefault -eq $true}
Set-Mailbox -Identity tonysmith -ThrottlingPolicy $policy;

查找由特定限制策略管理的所有用户

如果要了解特定限制策略所管理的用户,请运行 Get-Mailbox cmdlet 并筛选限制策略标识,如下例所示。在此示例中,$policy 是要筛选的策略。

Get-Mailbox | where-object {$_.ThrottlingPolicy -eq $policy.Identity}

删除限制策略

只能删除非默认策略以及未与任何邮箱关联的限制策略。要执行删除操作,请运行 Remove-ThrottlingPolicy cmdlet 并使用以下命令传递限制策略的标识。

Remove-ThrottlingPolicy ClientThrottlingPolicy2

如果限制策略与用户进行了关联,则必须首先将这些用户重新分配给另一策略,之后才能删除要删除的策略。以下示例显示了进行此操作的方法。

$policy = Get-ThrottlingPolicy ClientThrottlingPolicy2;
$mailboxes = Get-Mailbox | where-object {$_.ThrottlingPolicy -eq $policy.Identity};
$defaultPolicy = Get-ThrottlingPolicy | where-object {$_.IsDefault -eq $true};
foreach ($mailbox in $mailboxes)
{
Set-Mailbox -Identity $mailbox.Identity -ThrottlingPolicy $defaultPolicy;
}
Remove-ThrottlingPolicy ClientThrottlingPolicy2;

修改限制策略

修改现有限制策略(包括默认策略)的方法是,运行 Set-ThrottlingPolicy cmdlet 并指定要更改的参数。例如,要将默认限制策略的 EWSMaxConcurrency 参数值更改为 4,可以使用以下命令。

$a = Get-ThrottlingPolicy | where-object {$_.IsDefault -eq $true}
$a | Set-ThrottlingPolicy -EWSMaxConcurrency 4

限制性能计数器

因为限制策略可帮助管理 Exchange 服务器上 Exchange 组件的整体使用,所以检查限制影响系统的方式通常会非常有用。Exchange 为每个进程都提供了一套限制性能计数器。例如,Exchange 进程(如 Outlook Web App)会有自己的一套计数器,Exchange Web 服务也会自己的一套计数器。在 Windows 性能工具中,这些计数器称为实例。

返回顶部