了解客户端限制策略
**适用于:**Exchange Server 2010
**上一次修改主题:**2009-11-17
Microsoft Exchange Server 2010 使用客户端限制策略来管理 Exchange 组织的性能。为此,Exchange 会根据需要跟踪每个用户占用和强制执行连接带宽限制的资源。
此外,客户端限制有助于确保以下事项:
- 用户不会有意地加重系统负担。
- 用户不会无意地加重系统负担。
- 使用各种不同连接方法的用户按比例共享资源。
目录
默认和非默认策略
了解策略参数
Exchange 命令行管理程序命令和参数
常见的限制策略管理任务
限制性能计数器
虽然系统有默认的客户端限制策略,其基本足够用于管理 Exchange 系统所承受的负载,但仍可以根据组织需要自定义默认策略或添加其他策略。
如果在 Exchange 组织中托管了多个租户,则可以为租户的每个用户定义一个可接受的负载。同样,如果是内部部署组织,则可以按用户定义可接受的负载。通过这些策略,Exchange 将评估每个用户使用系统的方式,并确保得出的每个用户的负载处于用户策略所定义的可接受范围内。客户端限制系统将跟踪每个用户的系统使用情况,并使用与该用户关联的限制策略确定是否发生限制。
创建 Exchange 组织后,系统会自动创建默认限制策略,该策略将隐式管理该组织内的所有用户。
在 Exchange 2010 企业版安装中有一个单独的默认限制策略,称为“第一个组织”。在 Outlook Live 服务安装中,每个租户都有其自身的默认限制策略。
限制策略设置通过使用 Exchange 命令行管理程序中的 Get-ThrottlingPolicy、Set-ThrottlingPolicy、New-ThrottlingPolicy 和 Remove-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 中参数的组件类型首字母缩写词。
组件首字母缩写词 | 描述 | 示例 |
---|---|---|
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 服务参数的限制,例如,EWSMaxConcurrency、EWSPercentTimeInAD、EWSPercentTimeInCAS 和 EWSPercentTimeInMailboxRPC。
返回顶部
MaxConcurrency 策略参数的值表示指定用户针对 Exchange 服务器一次可以建立的并发连接数。连接将在收到请求时建立,一直持续到将响应完整地发送给请求者。如果用户尝试提出的并发请求超过其策略允许的范围,则新的连接尝试将失败。但是,现有的连接仍然有效。<Component Acronym>MaxConcurrency 的有效范围介于 0 到 100(包含两者)之间。要表示 <Component Acronym>MaxConcurrency 不应该受限制,此值应该设置为 $null
。
重要
除非有业务需要,否则请勿将限制策略参数设置为 $null
。非限制用户在有意或无意对服务器施加高负载的能力方面将不受限制。
PercentTimeInCAS、PercentTimeInAD 或 PercentTimeInMailboxRPC 策略参数的值表示一分钟可以使用的百分比:
- 运行客户端访问服务器代码 (<Component Acronym>PercentTimeInCAS)
- 运行 LDAP 请求 (<Component Acronym>PercentTimeInAD)
- 运行邮箱 RPC 请求 (<Component Acronym>PercentTimeInMailboxRPC)
如果值为 100,则表示在每个一分钟期限内,进程可花费 60 秒时间消耗相关资源。虽然进程似乎始终不会遇到限制值设为 100 的情况,但仍需要考虑并发请求的影响。如果进程发出了两个并发请求且每个请求都花费 60 秒钟在客户端访问服务器上运行代码,则该进程在 60 秒钟期限内有效使用了 120 秒,从而表示 <Component Acronym>PercentTimeInCAS 值为 200%。
要表示 PercentTimeInCAS、PercentTimeInAD 和 PercentTimeInMailboxRPC 不应该受限制,此值应设为 $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 的值。
返回顶部
本节讨论以下 Windows PowerShell 参数:
- PowerShellMaxConcurrency
- PowerShellMaxCmdlets
- PowerShellMaxCmdletsTimePeriod
- PowerShellMaxCmdletQueueDepth
在远程命令行管理程序上下文中,PowerShellMaxConcurrency 参数定义远程命令行管理程序用户可以同时打开的最大远程命令行管理程序会话数。在 Web 服务上下文中,PowerShellMaxConcurrency 参数定义用户可以同时运行的并发 cmdlet 数。此值不一定与用户打开的浏览器数匹配。
PowerShellMaxCmdlets 参数定义在每段未受限制的时间段内可以运行的 cmdlet 数量。此参数直接取决于 PowerShellMaxCmdletsTimePeriod 参数所定义的值。应同时设置这两个值。
PowerShellMaxCmdletsTimePeriod 参数定义用户可以运行由 PowerShellMaxCmdlets 参数所定义数量的 cmdlet 的时间段(秒)。
PowerShellMaxCmdletQueueDepth 参数定义用户可以同时运行的操作数量。该值直接影响 PowerShellMaxCmdlets 和 PowerShellMaxConcurrency 参数的行为。例如,PowerShellMaxConcurrency 参数会至少使用两个由 PowerShellMaxCmdletQueueDepth 参数所定义的操作,但其他操作也将根据 cmdlet 每次运行时的限制进行计数。根据限制计算的操作数量取决于所运行的 cmdlet。建议 PowerShellMaxCmdletQueueDepth 参数的值至少是 PowerShellMaxConcurrency 参数值的四倍。该参数不会影响通过使用 Exchange 控制面板运行的操作或通过 Exchange Web 服务运行的操作。
通过 Exchange 命令行管理程序,可以使用下表中所述的 cmdlet 修改和查看客户端限制策略设置。
Cmdlet 名称 | 描述 |
---|---|
New-ThrottlingPolicy |
此 cmdlet 可新建限制策略。 |
Remove-ThrottlingPolicy |
此 cmdlet 可删除限制策略。 |
Get-ThrottlingPolicy |
使用此 cmdlet 可以查看限制策略的设置。 |
Set-ThrottlingPolicy |
此 cmdlet 可以修改限制策略的所有可用设置。 |
备注
要将限制策略与单个用户或用户组关联,请将 ThrottlingPolicy 参数与 New-Mailbox 和 Set-Mailbox cmdlet 一起使用。
可以在 Exchange 命令行管理程序中使用 Set-Mailbox 和 New-Mailbox cmdlet 的 ThrottlingPolicy 参数,以便通过修改邮箱属性将客户端限制策略与单个用户或用户组关联。有关详细信息,请参阅 Set-Mailbox 和 New-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
。新策略与默认限制策略有着几乎相同的设置。不同之处在于新的非默认限制策略 ClientThrottlingPolicy2
将 EWSPercentTimeInCAS
设置为 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 性能工具中,这些计数器称为实例。
返回顶部