反向压力是邮箱服务器和边缘传输服务器上存在的 Microsoft Exchange 传输服务的一项系统资源监视功能。 背压检测重要系统资源(如硬盘空间和内存)何时被过度使用,并采取措施防止服务器完全不堪重负且不可用。 例如,当 Exchange 服务器上的系统资源利用率级别确定为过高时,服务器会延迟接受新邮件。 如果资源利用率变差,服务器将停止接受新消息以专门处理所有现有消息,甚至可能会停止处理传出消息。 当系统资源利用率返回到可接受的水平时,Exchange 服务器会通过接受新邮件和处理传出消息来恢复正常运行。
以下系统资源受背压监视:
-
DatabaseUsedSpace[%ExchangeInstallPath%TransportRoles\data\Queue]:保存消息队列数据库的驱动器的硬盘驱动器利用率。
-
PrivateBytes:EdgeTransport.exe进程使用的内存。
-
QueueLength[SubmissionQueue]:提交队列中的消息数。
-
SystemMemory:所有其他进程使用的内存。
-
UsedDiskSpace[%ExchangeInstallPath%TransportRoles\data\Queue]:保存消息队列数据库事务日志的驱动器的硬盘驱动器利用率。
-
UsedDiskSpace[%ExchangeInstallPath%TransportRoles\data]:用于内容转换的驱动器的硬盘驱动器利用率。
-
UsedVersionBuckets[%ExchangeInstallPath%TransportRoles\data\Queue\mail.que]:内存中存在的未提交邮件队列数据库事务数。
对于邮箱服务器或边缘传输服务器上的每个受监视系统资源,定义了以下级别的资源利用率或 压力 :
-
低或正常:资源未过度使用。 服务器可以接受新的连接和邮件。
-
中:资源略有过度使用。 此时将以有限的方式对服务器应用反压功能。 来自组织权威域中发件人的邮件可以流动。 但是,根据具有压力的特定资源,服务器会使用缓送技术延迟服务器响应或拒绝来自其他源的传入 MAIL FROM 命令。
-
高:资源严重过度使用。 此时将充分应用反压功能。 所有邮件都停止流动,服务器将拒绝一切新传入的 MAIL FROM 命令。
转换级别定义低、中和高资源利用率值,具体取决于资源压力是增加还是减少。 通常,随着资源利用率的降低,需要低于原始级别的资源利用率级别。 换句话说,对于低、中和高资源压力,实际上没有静态值。 需要知道利用率是增加还是减少,然后才能确定资源利用率级别的下一个更改。
下列部分说明特定资源具有压力时 Exchange 如何处理此情况。
资源: DatabaseUsedSpace[%ExchangeInstallPath%TransportRoles\data\Queue]
说明:监视保存消息队列数据库的驱动器上所有文件占用的总驱动器空间的百分比。 请注意,消息队列数据库文件包含未使用的空间,因此,所有文件使用的总驱动器空间的准确说明是数据库中的驱动器大小 -可用磁盘空间- 可用空间。
若要更改消息队列数据库的默认位置,请参阅 更改队列数据库的位置。
压力转换 (%) :
-
LowToMedium:96
-
MediumToHigh: 99
-
HighToMedium:97
-
MediumToLow: 94 注释::
使用以下公式计算默认的高级别硬盘驱动器利用率:
100 * (<硬盘驱动器大小(以 MB> 为单位 ) - 500 MB) /<硬盘驱动器大小(MB)>
此公式考虑到消息队列数据库中存在未使用的空间这一事实
1 GB = 1024 MB。 结果向下舍入为最接近的整数。
例如,如果消息队列数据库位于 1 TB (TB) 驱动器 (1048576 MB) ,则高级别利用率为 100* (1048576-500) /1048576) 或 99%。
从公式和舍入行为中可以看到,在公式计算小于 99% 的高利用率值之前,硬盘驱动器需要非常小。 例如,要实现高利用率,98% 的值需要大约 25 GB 或更少的硬盘驱动器。
EdgeTransport.exe 进程使用的内存大小
资源: PrivateBytes
说明:监视 Microsoft Exchange 传输服务的EdgeTransport.exe进程使用的内存百分比。 这不包括分页文件中的虚拟内存或其他进程使用的内存。
压力转换 (%) :
-
LowToMedium:72
-
MediumToHigh:75
-
HighToMedium:73
-
MediumToLow:71
注释:
默认情况下,EdgeTransport.exe进程的高级别内存利用率为总物理内存的 75%或 1 TB(以较小者为准)。 结果始终向下舍入为最接近的整数。
Exchange 保留 EdgeTransport.exe 进程的内存使用率的历史记录。 如果特定数量的轮询间隔(称为 历史记录深度)的利用率未降至低级别,Exchange 将拒绝传入邮件,直到资源利用率恢复到低级别。 默认情况下,EdgeTransport.exe内存利用率的历史记录深度为 30 个轮询间隔。
资源: QueueLength[SubmissionQueue]
说明:监视提交队列中的消息数。 通常,消息从接收连接器进入提交队列。 有关详细信息,请参阅Mail flow and the transport pipeline。 提交队列中的大量邮件表明分类程序处理邮件会有困难。
压力转换:
-
LowToMedium:9999
-
MediumToHigh:15000
-
HighToMedium:10000
-
MediumToLow:2000
注释:
当提交队列面临压力时,Exchange 会通过延迟对传入消息的确认来限制传入连接。 Exchange 通过 延迟将 SMTP MAIL FROM 命令的确认延迟到发送服务器来降低传入邮件流的速率。 如果压力条件继续,Exchange 会逐渐增加延迟。 在提交队列利用率恢复到低级别后,Exchange 会减少确认延迟,并恢复正常操作。 默认情况下,在提交队列压力下,Exchange 会将消息确认延迟 10 秒。 如果资源压力继续,则延迟以 5 秒为增量增加,最长为 55 秒。
Exchange 保留提交队列使用率的历史记录。 如果提交队列利用率在特定的轮询间隔数(称为 历史记录深度)中未降至低级别,则 Exchange 将停止延迟并拒绝传入邮件,直到提交利用率恢复到低级别。 默认情况下,提交队列的历史记录深度为 300 个轮询间隔。
资源: SystemMemory
说明:监视 Exchange 服务器上所有进程使用的内存百分比。 这不包括分页文件中的虚拟内存。
压力转换 (%) :
-
LowToMedium:88
-
MediumToHigh: 94
-
HighToMedium:89
-
MediumToLow:84
注释:
当服务器达到较高的内存利用率级别时,将发生 消息冻结 。 消息解除冻结会删除内存中缓存的排队消息的不必要的元素。 通常,完整的消息缓存在内存中以提高性能。 从这些缓存消息中删除 MIME 内容会减少以较高延迟为代价使用的内存量,因为消息现在直接从消息队列数据库读取。 默认情况下,会启用邮件冻结。
保存消息队列数据库事务日志的驱动器的硬盘驱动器利用率
资源: UsedDiskSpace[%ExchangeInstallPath%TransportRoles\data\Queue]
说明:监视保存消息队列数据库事务日志的驱动器上所有文件占用的总驱动器空间的百分比。 若要更改默认位置,请参阅 更改队列数据库的位置。
压力转换 (%) :
-
LowToMedium:89
-
MediumToHigh: 99
-
HighToMedium:90
-
MediumToLow:80
注释::
使用以下公式计算默认的高级别硬盘驱动器利用率:
100 * (<硬盘驱动器大小(以 MB> 为单位 ) - 1152 MB) /<硬盘驱动器大小(MB)>
1 GB = 1024 MB。 结果向下舍入为最接近的整数。
例如,如果队列数据库位于 1 TB (TB) 驱动器 (1048576 MB) ,则高级别利用率为 100* (1048576-1152) /1048576) 或 99%。
从公式和舍入行为中可以看到,在公式计算小于 99% 的高利用率值之前,硬盘驱动器需要相当小。 例如,要实现高利用率,98% 的值需要大约 56 GB 或更小的硬盘驱动器。
应用程序%ExchangeInstallPath%Bin\EdgeTransport.exe.config
配置文件包含具有默认值 384MB
的 DatabaseCheckPointDepthMax 键。 此项控制硬盘上允许存在的所有未提交的事务日志的总大小。 此键的值用于计算高利用率的公式。 如果自定义此值,公式将变为:
100 * (<硬盘驱动器大小(以 MB> 为单位 ) - 最小 (5120 MB,3* DatabaseCheckPointDepthMax) ) /<硬盘驱动器大小(MB)>
备注
DatabaseCheckPointDepthMax 密钥的值适用于 Exchange 服务器上存在的所有与传输相关的可扩展存储引擎 (ESE) 数据库。 在邮箱服务器上,这包括邮件队列数据库和发件人信誉数据库。 在边缘传输服务器上,这包括消息队列数据库、发件人信誉数据库以及连接筛选代理使用的 IP 筛选器数据库。
资源: UsedDiskSpace[%ExchangeInstallPath%TransportRoles\data]
说明:监视驱动器上用于内容转换的所有文件占用的总驱动器空间的百分比。 文件夹的默认位置由%ExchangeInstallPath%TransportRoles\data\Temp
应用程序配置文件中的 %ExchangeInstallPath%Bin\EdgeTransport.exe.config
TemporaryStoragePath 键控制。
压力转换 (%) :
-
LowToMedium:89
-
MediumToHigh: 99
-
HighToMedium:90
-
MediumToLow:80
注释:
使用以下公式计算默认的高级别硬盘驱动器利用率:
100 * (<硬盘驱动器大小(以 MB> 为单位 ) - 500 MB) /<硬盘驱动器大小(MB)>
1 GB = 1024 MB。 结果向下舍入为最接近的整数。
例如,如果消息队列数据库位于 1 TB (TB) 驱动器 (1048576 MB) ,则高级别利用率为 100* (1048576-500) /1048576) 或 99%。
从公式和舍入行为中可以看到,在公式计算小于 99% 的高利用率值之前,硬盘驱动器需要非常小。 例如,要实现高利用率,98% 的值需要大约 25 GB 或更少的硬盘驱动器。
资源: UsedVersionBuckets[%ExchangeInstallPath%TransportRoles\data\Queue\mail.queue]
说明:监视内存中存在的消息队列数据库的未提交事务数。
压力转换:
-
LowToMedium:999
-
MediumToHigh:1500
-
HighToMedium:1000
-
MediumToLow:800
注释::
在可将对邮件队列数据库的更改提交到事务日志之前,会将该更改列表保存在内存中。 然后,会将该列表提交给邮件队列数据库自身。 这些保存在内存中的未完成邮件队列数据库事务被称为“版本存储桶”。 版本存储桶数目可能会因出乎意料的大量传入邮件、垃圾邮件攻击、邮件队列数据库完整性问题或硬盘性能而增大到不可接受的数目。
当版本存储桶承受压力时,Exchange 服务器通过延迟确认传入消息来限制传入连接。 Exchange 通过 延迟将 SMTP MAIL FROM 命令的确认延迟到发送服务器来降低传入邮件流的速率。 如果资源压力条件继续,Exchange 会逐渐增加延迟延迟。 资源利用率恢复正常后,Exchange 会逐渐减少确认延迟,并恢复正常运行。 默认情况下,在资源压力下,Exchange 会将消息确认延迟 10 秒。 如果压力继续,则延迟以 5 秒为增量增加到 55 秒。
当版本存储桶处于高压下时,Exchange 服务器也会停止处理传出消息。
Exchange 会保留版本存储桶资源利用率的历史记录。 如果特定轮询间隔(称为 历史记录深度)的资源利用率未降至低级别,Exchange 将停止延迟并拒绝传入消息,直到资源利用率恢复到低级别。 默认情况下,版本存储桶的历史记录深度为 10 个轮询间隔。
下表汇总了受监视资源承受压力时背压所执行的操作。
具有压力的资源 |
使用率级别 |
执行的操作 |
DatabaseUsedSpace |
中 |
拒绝来自非 Exchange 服务器的传入邮件。 拒绝来自 Pickup 目录和 Replay 目录的邮件提交。 消息重新提交已暂停。 卷影冗余拒绝消息。 有关阴影冗余的详细信息,请参阅 Exchange Server 中的阴影冗余。 |
DatabaseUsedSpace |
高 |
在中等利用率级别执行的所有操作。 拒绝来自其他 Exchange 服务器的传入邮件。 在邮箱服务器上拒绝 Microsoft Exchange 邮箱传输提交服务从邮箱数据库提交的邮件。 |
PrivateBytes |
中 |
拒绝来自非 Exchange 服务器的传入邮件。 拒绝来自 Pickup 目录和 Replay 目录的邮件提交。 消息重新提交已暂停。 卷影冗余拒绝消息。 服务器或传输服务重启后处理消息 (也称为 启动扫描) 暂停。 启动消息解除冻结。 |
PrivateBytes |
高 |
在中等利用率级别执行的所有操作。 拒绝来自其他 Exchange 服务器的传入邮件。 在邮箱服务器上拒绝 Microsoft Exchange 邮箱传输提交服务从邮箱数据库提交的邮件。 |
QueueLength[SubmissionQueue] |
中 |
引入或增加对传入邮件的缓送延迟。 如果未达到整个提交队列历史记录深度的正常级别,请执行下列操作:- 拒绝来自非 Exchange 服务器的传入邮件。
- 拒绝来自 Pickup 目录和 Replay 目录的邮件提交。
- 消息重新提交已暂停。
- 卷影冗余拒绝消息。
- 启动扫描已暂停。
|
QueueLength[SubmissionQueue] |
高 |
在中等利用率级别执行的所有操作。 拒绝来自其他 Exchange 服务器的传入邮件。 在邮箱服务器上拒绝 Microsoft Exchange 邮箱传输提交服务从邮箱数据库提交的邮件。 从内存中刷新增强型 DNS 缓存。 启动消息解除冻结。 |
SystemMemory |
中 |
启动消息解除冻结。 刷新缓存。 |
SystemMemory |
高 |
在中等利用率级别执行的所有操作。 |
UsedDiskSpace (消息队列数据库事务日志) |
中 |
拒绝来自非 Exchange 服务器的传入邮件。 拒绝来自 Pickup 目录和 Replay 目录的邮件提交。 消息重新提交已暂停。 卷影冗余拒绝消息。 |
UsedDiskSpace (消息队列数据库事务日志) |
高 |
在中等利用率级别执行的所有操作。 拒绝来自其他 Exchange 服务器的传入邮件。 在邮箱服务器上拒绝 Microsoft Exchange 邮箱传输提交服务从邮箱数据库提交的邮件。 |
UsedDiskSpace (内容转换) |
中 |
拒绝来自非 Exchange 服务器的传入邮件。 拒绝来自 Pickup 目录和 Replay 目录的邮件提交。 |
UsedDiskSpace (内容转换) |
高 |
在中等利用率级别执行的所有操作。 拒绝来自其他 Exchange 服务器的传入邮件。 在邮箱服务器上拒绝 Microsoft Exchange 邮箱传输提交服务从邮箱数据库提交的邮件。 |
UsedVersionBuckets |
中 |
引入或增加对传入邮件的缓送延迟。 如果未达到整个版本存储桶历史记录深度的正常级别,请执行下列操作:- 拒绝来自非 Exchange 服务器的传入邮件。
- 拒绝来自 Pickup 目录和 Replay 目录的邮件提交。
|
UsedVersionBuckets |
高 |
在中等利用率级别执行的所有操作。 拒绝来自其他 Exchange 服务器的传入邮件。 在邮箱服务器上拒绝 Microsoft Exchange 邮箱传输提交服务从邮箱数据库提交的邮件。 停止处理传出消息。 远程传递已暂停。 |
可以使用 Exchange 命令行管理程序中的 Get-ExchangeDiagnosticInfo cmdlet 查看正在监视的资源以及当前的利用率级别。 若要了解如何在本地 Exchange 组织中打开 Exchange 命令行管理程序,请参阅 Open the Exchange Management Shell。
若要查看 Exchange 服务器上的背压设置,请运行以下命令:
[xml]$bp=Get-ExchangeDiagnosticInfo [-Server <ServerIdentity> ] -Process EdgeTransport -Component ResourceThrottling; $bp.Diagnostics.Components.ResourceThrottling.ResourceTracker.ResourceMeter
若要查看本地服务器上的值,可以省略 Server 参数。
EdgeTransport.exe.config 文件中的反向压力配置设置
用于反压的所有配置选项都在 XML 应用程序配置文件中 %ExchangeInstallPath%Bin\EdgeTransport.exe.config
完成。 但是,默认情况下,文件中几乎没有设置存在。
注意
这些设置仅作为默认值的引用列出。 我们非常不鼓励对 EdgeTransport.exe.config 文件中的反压力功能设置进行修改。 修改这些设置可能会导致性能不佳或数据丢失。 我们建议您调查并纠正可能遇到的任何反压力事件的根本原因。
项名称 |
默认值 |
ResourceMeteringInterval |
00:00:02 (2 秒) |
DehydrateMessagesUnderMemoryPressure |
true |
项名称 |
默认值 (%) |
DatabaseUsedSpace.LowToMedium |
96 |
DatabaseUsedSpace.MediumToHigh |
99 |
DatabaseUsedSpace.HighToMedium |
97 |
DatabaseUsedSpace.MediumToLow |
94 |
项名称 |
默认值 (%) |
PrivateBytes.LowToMedium |
72 |
PrivateBytes.MediumToHigh |
75 |
PrivateBytes.HighToMedium |
73 |
PrivateBytes.MediumToLow |
71 |
PrivateBytesHistoryDepth |
30 |
QueueLength[SubmissionQueue] 设置
项名称 |
默认值 |
QueueLength[SubmissionQueue]。LowToMedium |
9999 |
QueueLength[SubmissionQueue]。MediumToHigh |
15000 |
QueueLength[SubmissionQueue]。HighToMedium |
10000 |
QueueLength[SubmissionQueue]。MediumToLow |
2000 |
SubmissionQueueHistoryDepth |
10 分钟后 300 () |
项名称 |
默认值 (%) |
SystemMemory.LowToMedium |
88 |
SystemMemory.MediumToHigh |
94 |
SystemMemory.HighToMedium |
89 |
SystemMemory.MediumToLow |
84 |
UsedDiskSpace 设置 (消息队列数据库事务日志)
项名称 |
默认值 (%) |
UsedDiskSpace[%ExchangeInstallPath%TransportRoles\data\Queue]。LowToMedium |
89 |
UsedDiskSpace[%ExchangeInstallPath%TransportRoles\data\Queue]。MediumToHigh |
99 |
UsedDiskSpace[%ExchangeInstallPath%TransportRoles\data\Queue]。HighToMedium |
90 |
UsedDiskSpace[%ExchangeInstallPath%TransportRoles\data\Queue]。MediumToLow |
80 |
备注
例如, UsedDiskSpace.MediumToHigh
仅UsedDiskSpace
包含 (的值) 应用于消息队列数据库事务日志和内容转换。
项名称 |
默认值 (%) |
UsedDiskSpace[%ExchangeInstallPath%TransportRoles\data]。LowToMedium |
89 |
UsedDiskSpace[%ExchangeInstallPath%TransportRoles\data]。MediumToHigh |
99 |
UsedDiskSpace[%ExchangeInstallPath%TransportRoles\data]。HighToMedium |
90 |
UsedDiskSpace[%ExchangeInstallPath%TransportRoles\data]。MediumToLow |
80 |
TemporaryStoragePath |
%ExchangeInstallPath%TransportRoles\data\Temp |
项名称 |
默认值 |
UsedVersionBuckets.LowToMedium |
999 |
UsedVersionBuckets.MediumToHigh |
1500 |
UsedVersionBuckets.HighToMedium |
1000 |
UsedVersionBuckets.MediumToLow |
800 |
VersionBucketsHistoryDepth |
10 |
以下列表介绍了 Exchange 中特定反压力事件生成的事件日志条目:
因任何资源使用率级别的增加而生成的事件日志条目
事件类型:错误
事件源:MSExchangeTransport
事件类别:资源管理器
事件 ID:15004
说明:资源压力从 <以前的利用率级别> 增加到 <当前利用率级别>。
因任何资源使用率级别降低而生成的事件日志条目
事件类型:信息
事件源:MSExchangeTransport
事件类别:资源管理器
事件 ID:15005
说明:资源压力从 <以前的利用率级别> 降低到 <当前利用率级别>。
非常低的可用磁盘空间的事件日志条目
事件类型:错误
事件源:MSExchangeTransport
事件类别:资源管理器
事件 ID:15006
说明:Microsoft Exchange 传输服务拒绝邮件,因为可用磁盘空间低于所配置的阀值。 可能需要执行管理操作以释放磁盘空间,以便服务可以继续进行操作。
非常低的可用内存事件日志条目
事件类型:错误
事件源:MSExchangeTransport
事件类别:资源管理器
事件 ID:15007
说明:Microsoft Exchange 传输服务拒绝邮件提交,因为该服务会继续占用多于配置阈值的内存。 可能需要重新启动该服务,才能继续正常操作。