了解反压

 

适用于: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

上一次修改主题: 2008-03-13

反压是 Microsoft Exchange 传输服务的一种系统资源监视功能。在运行 Microsoft Exchange Server 2007 且安装了集线器传输服务器角色或边缘传输服务器角色的计算机上,通常会使用这一功能。它将对重要的系统资源(如可用硬盘驱动器空间和可用内存)进行监视。如果系统资源使用率超出了指定限制,Exchange 服务器会停止接受新的连接和邮件。这样,便可防止过多地使用系统资源,并使 Exchange 服务器可以传送现有邮件。当系统资源使用率恢复到正常级别后,Exchange 服务器就可以接受新的连接和邮件。

作为反压功能的一部分,将监视下列系统资源:

  • 存储邮件队列数据库的硬盘驱动器中的可用空间。

  • 存储邮件队列数据库事务日志的硬盘驱动器中的可用空间。

  • 内存中的未提交邮件队列数据库事务数目。

  • EdgeTransport.exe 进程使用的内存大小。

  • 全部进程使用的内存大小。

对于集线器传输服务器或边缘传输服务器中的每个受监视系统资源,可应用下列三种资源使用率级别:

  • 正常   资源的使用未过度。服务器可以接受新的连接和邮件。

  • 中等   资源的使用稍微过度。此时将以有限的方式对服务器应用反压功能。来自权威域中的发件人的邮件可以流动。但是,服务器将拒绝来自其他源的新连接和新邮件。

  •    资源的使用严重过度。此时将充分应用反压功能。所有邮件都停止流动,服务器将拒绝一切新连接和新邮件。

用于配置反压功能的选项

Caution警告:
我们非常不鼓励对生产服务器上 EdgeTransport.exe.config 文件中的反压功能设置进行修改。对反压功能设置进行修改可能导致性能不佳或数据丢失。建议您在修改反压功能设置之前,调查您可能遇到的反压事件的根本原因并进行更正。

反压功能的所有配置选项都位于 EdgeTransport.exe.config 应用程序配置文件中,该配置文件位于 C:\Program Files\Microsoft\Exchange Server\Bin 目录中。EdgeTransport.exe.config 文件是与 EdgeTransport.exe 文件关联的 XML 应用程序配置文件。EdgeTransport.exe 和 MSExchangeTransport.exe 是 Microsoft Exchange 传输服务所使用的可执行文件。此服务在每台集线器传输服务器或边缘传输服务器上运行。保存到 EdgeTransport.exe.config 文件的更改在 Microsoft Exchange 传输服务重新启动之后应用。如果符合下列条件之一,将强制使用默认值:

  • 缺少配置选项。

  • 存在配置选项,其中包含默认值。

以下示例显示了 EdgeTransport.exe.config 文件的典型结构:

<configuration>

<runtime>

<gcServer enabled="true" />

</runtime>

<appSettings>

<add key=" 配置选项 " value=" " />

...

</appSettings>

</configuration>

可以在 <appSettings> 部分中添加新的配置选项或修改现有的配置选项。很多可以使用的配置选项都与反压功能完全无关。所有与反压功能无关的配置选项都不在本主题的讨论范围内。

note注意:
<add key=../> 部分中的参数名称区分大小写。

表 1 给出了 EdgeTransport.exe.config 文件中提供的可用于反压功能的一般配置选项。

表 1   一般反压功能选项

参数名称 说明

EnableResourceMonitoring

此参数用于启用或禁用反压功能。默认值为 TRUE。

ResourceMonitoringInterval

此参数用于控制检查系统资源使用率级别的时间间隔。若要指定值,请输入一个时间跨度:hh:mm:ss,其中 h = 小时,m = 分钟,s = 秒。默认值为 00:00:02。此参数的有效范围为 00:00:0100:00:30

监视邮件队列数据库的可用硬盘驱动器空间

默认情况下,邮件队列数据库存储在 C:\Program Files\Microsoft\ExchangeServer\TransportRoles\data\Queue。该位置由 EdgeTransport.exe.config 文件中的 QueueDatabasePath 参数控制。

有关邮件队列数据库的详细信息,请参阅管理队列数据库

默认情况下,使用以下公式计算高级别的硬盘驱动器空间使用率:

100*(硬盘驱动器大小 - 固定常量) / 硬盘驱动器大小

在正式发布 (RTM) 版本的 Microsoft Exchange Server 2007 中,固定常量的值为 4 GB。

在 Microsoft Exchange Server 2007 Service Pack 1 (SP1) 中,固定常量的值为 500 MB。

该公式的结果用所用硬盘驱动器空间占全部硬盘驱动器空间百分比的形式表示。无论硬盘驱动器的空间为多大,该公式确保始终有可用硬盘驱动器空间供邮件队列数据库使用。该公式的结果总是向下舍入为最接近的整数。

默认情况下,中等级别硬盘驱动器使用率比高级别硬盘驱动器使用率低 2%。默认情况下,正常级别硬盘驱动器使用率比高级别硬盘驱动器使用率低 4%。随着可用硬盘驱动器空间不断减少,硬盘驱动器使用率会升高。

通过在 EdgeTransport.exe.config 文件中指定值,可以覆盖高级别、中等级别、正常级别硬盘驱动器使用率的默认计算。表 2 给出了 EdgeTransport.exe.config 文件中提供的用于监视邮件队列数据库可用硬盘驱动器空间的选项。

表 2   用于监视邮件队列数据库可用硬盘驱动器空间的选项

参数名称 默认值 有效输入范围

PercentageDatabaseDiskSpaceUsedHighThreshold

0. 该值指示将使用默认公式。

3 至 100

PercentageDatabaseDiskSpaceUsedMediumThreshold

0. 该值指示实际值比 PercentageDatabaseDiskSpaceUsedHighThreshold 值低 2%。

3 至 100。此值必须小于 PercentageDatabaseDiskSpaceUsedHighThreshold 值。

PercentageDatabaseDiskSpaceUsedNormalThreshold

0. 该值指示实际值比 PercentageDatabaseDiskSpaceUsedMediumThreshold 值低 2%。

3 至 100。此值必须小于 PercentageDatabaseDiskSpaceUsedMediumThreshold 值。

important要点:
如果将硬盘驱动器空间使用率的反压限制设置为其默认级别,边缘传输服务器或集线器传输服务器上用于存储邮件队列数据库的硬盘驱动器必须具有固定大小的可用硬盘驱动器空间。在 Exchange 2007 RTM 中,所需的可用硬盘驱动器空间大小为 4 GB。在 Exchange 2007 SP1 中,所需的可用硬盘驱动器空间为 500 MB。如果可用空间小于所需的可用硬盘驱动器空间大小,则将硬盘驱动器使用率级别视为高级别。因此,所有邮件都将停止流动。在这种情况下,您必须执行下列步骤之一:
- 将邮件队列数据库重定位到另一个具有更多可用空间的硬盘驱动器中。有关详细信息,请参阅如何更改队列数据库的位置
- 增大 PercentageDatabaseDiskSpaceUsedHighThresholdPercentageDatabaseDiskSpaceUsedMediumThresholdercentageDatabaseDiskSpaceUsedNormalThreshold 参数的值。

监视邮件队列数据库事务日志的可用硬盘驱动器空间

默认情况下,邮件队列数据库事务日志存储在 C:\Program Files\Microsoft\ExchangeServer\TransportRoles\data\Queue。该位置由 EdgeTransport.exe.config 文件中的 QueueDatabaseLoggingPath 参数控制。

有关邮件队列数据库的详细信息,请参阅管理队列数据库

EdgeTransport.exe.config 文件包含一个 QueueDatabaseCheckPointDepthMax 参数,其默认值为 20 MB。此参数控制硬盘驱动器中所有未提交事务日志允许占用的总大小。在计算硬盘驱动器使用率的公式中,将使用此参数。

note注意:
QueueDatabaseCheckPointDepthMax 参数的值将应用于集线器传输服务器或边缘传输服务器上所有与传输相关的可扩展存储引擎 (ESE) 数据库。这包括邮件队列数据库和 IP 筛选数据库。如果将 QueueDatabaseCheckPointDepthMax 参数的值设置得太低,则会导致重大的性能问题,因为这样会强制将未提交的事务提交到数据库,而不是将其写入事务日志中。建议您不要修改 QueueDatabaseCheckPointDepthMax 参数的默认值。

默认情况下,使用以下公式计算高级别的硬盘驱动器使用率:

100*(硬盘驱动器大小 - 25*DatabaseCheckPointDepthMax) / 硬盘驱动器大小

如果 DatabaseCheckPointDepthMax 参数使用默认值 20 MB,则无论硬盘驱动器的空间为多大,始终保留 500 MB 供邮件队列数据库事务日志使用。该公式的结果总是向下舍入为最接近的整数。

默认情况下,中等级别硬盘驱动器使用率比高级别硬盘驱动器使用率低 2%。正常级别硬盘驱动器使用率比高级别硬盘驱动器使用率低 4%。随着可用硬盘驱动器空间不断减少,硬盘驱动器使用率会升高。

通过在 EdgeTransport.exe.config 文件中指定值,可以覆盖高级别、中等级别、正常级别硬盘驱动器使用率的默认计算。表 3 给出了 EdgeTransport.exe.config 文件中提供的用于监视邮件队列数据库事务日志可用硬盘驱动器空间的选项。

表 3   用于监视邮件队列数据库事务日志可用硬盘驱动器空间的选项

参数名称 默认值 有效输入范围

PercentageDatabaseLoggingDiskSpaceUsedHighThreshold

0. 该值指示将使用默认公式。

3 至 100

PercentageDatabaseLoggingDiskSpaceUsedMediumThreshold

0. 该值指示实际值比 PercentageDatabaseLoggingDiskSpaceUsedHighThreshold 值低 2%。

3 至 100。此值必须小于 PercentageDatabaseLoggingDiskSpaceUsedHighThreshold 值。

PercentageDatabaseLoggingDiskSpaceUsedNormalThreshold

0. 该值指示实际值比 PercentageDatabaseLoggingDiskSpaceUsedMediumThreshold 值低 2%。

3 至 100。此值必须小于 PercentageDatabaseLoggingDiskSpaceUsedMediumThreshold 值。

监视内存中的未提交邮件队列数据库事务数目

在可将对邮件队列数据库的更改提交到事务日志之前,会将该更改列表保存在内存中。然后,会将该列表提交给邮件队列数据库自身。这些保存在内存中的未完成邮件队列数据库事务被称为“版本存储桶”。版本存储桶数目可能会因病毒、邮件队列数据库完整性问题或硬盘驱动器性能而增大到不可接受的数目。

通过在 EdgeTransport.exe.config 文件中指定值,可以覆盖高级别、中等级别、正常级别的版本存储桶数目的默认值。表 4 给出了 EdgeTransport.exe.config 文件中提供的用于监视版本存储桶的选项。

表 4   用于监视版本存储桶数目的选项

参数名称 Exchange 2007 RTM 中的默认值 Exchange 2007 SP1 中的默认值 有效输入范围

VersionBucketsHighThreshold

100

200

1 至 8000

VersionBucketsMediumThreshold

60

120

1 至 8000。此值必须小于 VersionBucketsHighThreshold 值。

VersionBucketsNormalThreshold

40

80

1 至 8000。此值必须小于 VersionBucketsMediumThreshold 值。

监视 EdgeTransport.exe 进程使用的内存大小

默认情况下,使用以下公式计算 EdgeTransport.exe 进程使用的高级别内存使用率:

总物理内存的 75% 或 1 TB,选择二者中较小的值

上述计算并未包括硬盘驱动器上页面文件中可用的虚拟内存,也未包括其他进程使用的内存。该公式的结果用 EdgeTransport.exe 进程所用内存占全部内存百分比的形式表示。该公式的结果总是向下舍入为最接近的整数。

默认情况下,EdgeTransport.exe 文件的中等级别内存使用率为总物理内存的 73%,或为比高级别内存使用率低 2% 的值,选择二者中较小的值。默认情况下,EdgeTransport.exe 文件的正常级别内存使用率为总物理内存的 71%,或为比高级别内存使用率低 4% 的值,选择二者中较小的值。随着可用内存不断减少,内存使用率会升高。

通过在 EdgeTransport.exe.config 文件中指定值,可以覆盖 EdgeTransport.exe 进程的高级别、中等级别、正常级别内存使用率的默认计算。表 5 给出了 EdgeTransport.exe.config 文件中提供的用于监视 EdgeTransport.exe 进程所用内存大小的选项。

表 5   用于监视 EdgeTransport.exe 进程所用内存大小的选项

参数名称 默认值 有效输入范围

PercentagePrivateBytesUsedHighThreshold

0. 该值指示将使用默认计算。

3 至 100

PercentagePrivateBytesUsedMediumThreshold

0. 该值指示实际值比 PercentagePrivateBytesUsedHighThreshold 值低 2%。

3 至 100。此值必须小于 PercentagePrivateBytesUsedHighThreshold 值。

PercentagePrivateBytesUsedNormalThreshold

0. 该值指示实际值比 PercentagePrivateBytesUsedMediumThreshold 值低 2%。

3 至 100。此值必须小于 PercentagePrivateBytesUsedMediumThreshold 值。

监视全部进程使用的内存大小

默认情况下,全部进程的高级别内存使用率为总物理内存的 94%。此值并不包括硬盘驱动器上页面文件中可用的虚拟内存。随着可用内存不断减少,内存使用率会升高。

达到指定的内存使用率级别时,会出现“邮件冻结”情况。邮件冻结是一个删除内存中缓存的排队邮件的不必要元素的操作。为了提高性能,完成的邮件都缓存在内存中。因为邮件是从邮件队列数据库中直接读取的,所以删除内存中排队邮件的 MIME 内容可减少内存使用量,但会出现较高延迟。默认情况下,会启用邮件冻结。可以在 EdgeTransport.exe.config 应用程序配置文件中启用或禁用邮件冻结。

通过在 EdgeTransport.exe.config 文件中指定较高的值,可以覆盖全部进程的高级别内存使用率的默认值。表 6 给出了 EdgeTransport.exe.config 文件中提供的用于监视全部进程所用内存大小的选项。

表 6   EdgeTransport.exe.config 文件中提供的用于监视全部进程所用内存大小的选项

参数名称 默认值 有效输入范围

DehydrateMessagesUnderMemoryPressure

TRUE

TRUE 或 FALSE

PercentagePhysicalMemoryUsedLimit

94

3 至 100

如何应用反压功能

刚出现问题的征兆时,反压功能不会停止全部邮件的传递。在出现受监视资源被过度使用的提示后,会对该资源进行监视并分几个阶段执行相应操作。如果这些操作未能成功地将资源使用率恢复到正常级别,则会执行其他更正操作。更正操作的力度将不断提高,直到资源使用率恢复到正常级别。检查资源使用率级别的时间间隔由 ResourceMonitoringInterval 控制。默认值为 2 秒。

以下各节介绍应用反压功能的各个阶段。

第 1 阶段

将 EdgeTransport.exe 进程的内存使用率与 PercentagePrivateBytesUsedNormalThreshold 参数指定的值进行比较。默认值为总物理内存的 71%。如果 EdgeTransport.exe 进程的内存使用率高于指定的正常级别,则会强制执行“垃圾收集”。垃圾收集是一个检查内存中未使用的对象并收回这些对象所用内存的进程。

第 2 阶段

将内存中的未提交邮件队列数据库事务数目与 VersionBucketsNormalThreshold 参数指定的值进行比较。在 Exchange 2007 RTM 中,默认值为 40。在 Exchange 2007 SP1 中,默认值为 80。如果内存中的未提交邮件队列数据库事务数目高于指定的正常级别,则会尝试强制将内存中未完成的邮件队列数据库事务写入事务日志中。

第 3 阶段

将所有受监视资源的使用率级别与指定的正常级别使用率值进行比较。如果出现资源使用率级别高于指定的正常级别值的情况,则会对使用率级别最高的资源采取措施。以下各节介绍在各种资源使用率级别下集线器传输服务器和边缘传输服务器上执行的操作。

集线器传输服务器

如果集线器传输服务器上的资源使用率级别为中等:

  • 接受来自其他集线器传输服务器的传入简单邮件传输协议 (SMTP) 连接。

  • 拒绝来自其他邮件服务器的传入 SMTP 连接。

  • 存储驱动器继续接受来自邮箱服务器的邮件。

  • 分拣目录和重播目录将停止处理邮件。

如果集线器传输服务器上的资源使用率级别为高:

  • 拒绝来自其他集线器传输服务器的传入 SMTP 连接。

  • 拒绝来自其他邮件服务器的传入 SMTP 连接。

  • 存储驱动器停止接受来自邮箱服务器的邮件。

  • 分拣目录和重播目录将停止处理邮件。

表 7 介绍了反压功能对集线器传输服务器产生的影响。

表 7   反压功能对集线器传输服务器产生的影响

资源使用率级别 来自其他集线器传输服务器的连接 来自其他邮件服务器的连接 来自邮箱服务器的存储驱动器连接 分拣目录和重播目录提交 内部邮件流

中等

允许

拒绝

允许

拒绝

可工作

拒绝

拒绝

拒绝

拒绝

无法工作

边缘传输服务器

如果边缘传输服务器上的资源使用率级别为中等:

  • 拒绝来自其他邮件服务器的入站 SMTP 连接。

  • 分拣目录和重播目录将停止处理邮件。

如果边缘传输服务器上的资源使用率级别为高:

  • 拒绝来自其他邮件服务器的入站 SMTP 连接。

  • 分拣目录和重播目录将停止处理邮件。

表 8 介绍了反压功能对边缘传输服务器产生的影响。

表 8   反压功能对边缘传输服务器产生的影响

资源使用率级别 来自集线器传输服务器的连接 来自其他邮件服务器的连接 来自邮箱服务器的存储驱动器连接 分拣目录和重播目录提交 内部邮件流

中等

拒绝

拒绝

不适用

拒绝

不适用

拒绝

拒绝

不适用

拒绝

不适用

第 4 阶段

将 EdgeTransport.exe 进程的内存使用率与 PercentagePrivateBytesUsedNormalThreshold 参数指定的值进行比较。默认值为总物理内存的 71%。如果 EdgeTransport.exe 进程的内存使用率高于指定的正常级别,则会执行以下操作:

  • 如果重新启动 Microsoft Exchange 传输服务,则在该服务启动时,不会自动处理提交队列中的邮件。

将内存中的未提交邮件队列数据库内的事务数目与 VersionBucketsNormalThreshold 参数指定的值进行比较。在 Exchange 2007 RTM 中,该默认值为 40。在 Exchange 2007 SP1 中,该默认值为 80。如果内存中的未提交邮件队列数据库内的事务数目高于指定的正常级别,则会执行以下操作:

  • 禁用“传输转储程序”。传输转储程序是集线器传输服务器角色的一个功能,使用群集连续复制 (CCR) 或本地连续复制 (LCR) 时应启用此功能。传输转储程序在 CCR 环境中发生未计划中断后提交最近送达的邮件,这在 LCR 环境中是激活过程的一部分。传输转储程序仅用于 LCR 和 CCR 环境中。有关详细信息,请参阅如何配置传输 Dumpster

  • 禁用需使用远程传递队列的面向任何远程目标的邮件传递。这些远程目标包括远程域或远程 Active Directory 目录服务站点。需使用邮箱传递队列的面向邮箱服务器的邮件传递则不受影响。

第 5 阶段

如果 EdgeTransport.exe 进程的内存使用率处于中等或高级别,或者如果所有其他进程的内存使用率超出了指定的最大值,则会执行以下操作:

  • 从内存中刷新增强的 DNS 缓存。

  • 进行邮件冻结。

Exchange 2007 RTM 中的反压日志记录信息

以下列表介绍了 Exchange 2007 RTM 中特定反压事件生成的事件日志条目:

  • 因资源使用率级别发生更改而生成的事件日志条目

    事件类型:警告

    事件源:MSExchangeTransport

    事件类别:资源管理器

    事件 ID: 15001

    说明:资源压力已从先前使用率级别更改为当前使用率级别

  • 因持续出现高级别资源使用率而生成的事件日志条目

    事件类型:警告

    事件源:MSExchangeTransport

    事件类别:资源管理器

    事件 ID: 15002

    说明:资源压力持续处于高级别。

  • 因 EdgeTransport.exe 进程的内存使用率级别发生更改而生成的事件日志条目

    事件类型:警告

    事件源:MSExchangeTransport

    事件类别:资源管理器

    事件 ID: 15003

    说明:专用字节占用空间已从先前使用率级别更改为当前使用率级别

Exchange 2007 SP1 中的反压日志记录信息

以下列表介绍了 Exchange 2007 SP1 中特定反压事件生成的事件日志条目:

  • 因任何资源使用率级别的增加而生成的事件日志条目

    事件类型:错误

    事件源:MSExchangeTransport

    事件类别:资源管理器

    事件 ID: 15004

    说明:资源压力已从先前使用率级别增加到当前使用率级别

  • 因任何资源使用率级别降低而生成的事件日志条目

    事件类型:信息

    事件源:MSExchangeTransport

    事件类别:资源管理器

    事件 ID: 15005

    说明:资源压力已从先前使用率级别降低到当前使用率级别

  • 非常低的可用磁盘空间的事件日志条目

    事件类型:错误

    事件源:MSExchangeTransport

    事件类别:资源管理器

    事件 ID: 15006

    说明:Microsoft Exchange 传输服务拒绝邮件,因为可用磁盘空间低于所配置的阀值。可能需要执行管理操作以释放磁盘空间,以便服务可以继续进行操作。

  • 非常低的可用内存事件日志条目

    事件类型:错误

    事件源:MSExchangeTransport

    事件类别:资源管理器

    事件 ID: 15007

    说明:Microsoft Exchange 传输服务拒绝邮件提交,因为服务继续消耗超过所配置的阀值的内存。可能需要重新启动该服务,才能继续正常操作。