邮箱和分类程序线程计数超出建议的限制

[本主题旨在解决由 Exchange Server 分析工具发现的特定问题。应只将此主题应用到已对其运行 Exchange Server 分析工具并且正面临该特定问题的系统中。通过可以免费下载的 Exchange Server 分析工具,远程收集拓扑中每台服务器的配置数据并自动分析数据。结果报告详述了重要的配置问题、潜在问题以及一些非默认产品设置。通过遵守这些建议,可以获得更佳的性能、可伸缩性、可靠性及正常运行时间。有关此工具或下载最新版本的详细信息,请参阅 https://go.microsoft.com/fwlink/?linkid=34707(英文网页)上的“Microsoft Exchange 分析工具”。]  

上一次修改主题: 2010-04-01

Microsoft Exchange 最佳实践分析工具检查在 Exchange 2007 传输服务器上运行的进程。这包括运行集线器传输角色的服务器和运行边缘传输角色的服务器。

Exchange 最佳实践分析工具确定存储驱动程序为邮箱传递 (MaxConcurrentMailboxDeliveries) 使用的工作线程数和分类程序组件使用的工作线程数。

如果存储驱动程序线程和分类程序线程的和超过 Microsoft .NET Framework 公共语言运行时 (CLR) 线程池限制的 80%,则该分析工具会生成一条警告消息。

我们建议邮箱和分类程序线程使用的上限为 CLR 线程池的 80%。如果服务器超出此限制,则服务器上的性能可能会降低。具体地说,如果将 MaxConcurrentMailboxDeliveries 参数设置为一个很高的值,如 100 或更大,则传输服务器可能会遇到分类程序线程短缺的情况。在这种情形下,可能会在 Exchange 环境中遇到邮件传递问题。

分类程序是处理传入邮件的 Exchange 传输组件。分类程序确定如何根据有关预期收件人的信息传递邮件。在分类程序检索收件人信息之后,它会应用策略、路由邮件,并根据收件人信息执行内容转换。

Exchange 2007 边缘传输服务器使用分类程序将邮件路由到相应的目标。Exchange 2007 集线器传输服务器使用分类程序来扩展分发列表并识别备选收件人或转发地址。

集线器传输服务器上的存储驱动程序将邮件传递到邮箱服务器及从邮箱服务器传递邮件。MaxConcurrentMailboxDeliveries 参数指定特定集线器传输服务器可以同时打开以进行邮件传递的最大传递线程数量。MaxConcurrentMailboxDeliveries 参数的默认值为 30。通常,存储驱动程序存放在邮件传递进程期间较长时期的线程。因此,如果将 MaxConcurrentMailboxDeliveries 参数设置为一个很高的值,则线程池线程可能会不可用而无法服务其他请求。

若要解决此问题,请使用 Set-TransportServer cmdlet 为 MaxConcurrentMailboxDeliveries 参数配置一个较低的值。此值应该使存储驱动程序线程和分类程序线程的和不超过 CLR 线程池的 80% 的建议最大值。

note注意:
若要确定可用 CLR 线程池的大小,请将服务器上的逻辑处理器的数量乘以 25。

配置 MaxConcurrentMailboxDeliveries 参数

  1. 在集线器传输服务器上,启动 Exchange 命令行管理程序。

  2. 若要检索当前的 MaxConcurrentMailboxDeliveries 值,请运行以下命令。使用 Exchange 服务器的名称替换 <servername>。

    Get-TransportServer <servername> | format-list
    
  3. 若要设置新的 MaxConcurrentMailboxDeliveries 值,请运行以下命令。使用 Exchange 服务器的名称替换 <servername>,并使用一个整数(如 30)替换 <value>。

    Set-TransportServer <servername> -MaxConcurrentMailboxDeliveries <value>
    
  4. 退出 Exchange 命令行管理程序。

详细信息

有关 Set-TransportServer cmdlet 参数的详细信息,请参阅管理邮件限制

有关如何使用 Set-TransportServer cmdlet 的详细信息,请参阅 Set- TransportServer