邮件传递延迟(Mail Delivery Latency)公式如何计算
Published by admin on 03月 2, 2011
产品:Lotus Domino
平台:AIX, Linux, Solaris, Windows
软件版本:8.5,8.0,7.0,6.5
问题:
Lotus Domino 服务器的健康监控器报告了邮件传递延迟警告或“严重状态”信息。你需要了解计算过程基于哪些因素考虑以便采取恰当的行动。
解决方案:
使用数据:
邮件传递延迟公式使用的数据源于以下因素:
Mail.TotalPending
Mail.Waiting
Mail.Dead
Mail.Hold
Mail.TotalPending 可能比 Mail.Waiting 更可靠,因为 Mail.Waiting 依赖于路由器(Router)任务,如果 Router 不运行了,Mail.Waiting 便不会更新,Mail.TotalPending 则是通过服务器任务去更新,以反映当前等待传递的邮件数。Mail.TotalPending 的不足之处在于服务器每隔五分钟才更新一次,因此它的值不是最新的。
注意:Mail.Dead 表示既不能被邮递出去,也不能被退回给邮寄者的邮件。Mail.Hold 表示正在等待外发的邮件。Mail.TotalPending 计数包括了邮递失败邮件和等待邮递的邮件,然而Mail.Waiting的数据没有包括这些项目。
pending/waiting 的邮件为0说明router工作正常。
运算法则的定义:
MailToDo = MAX(Mail.Waiting, Mail.TotalPending - Mail.Dead - Mail.Hold)
邮件传递延迟运算法则应该考虑到正常情况下也会有少量邮件等待邮递。因此,规定“To Do”信息数量的阈值为20,20以下将被视为正常。
此外,MailToDo值偶尔超过阈值不会引发严重状况。因此,运算法则是基于一系列MailToDo采样,并评估出采样数值的差异。MailToDo系列数值的”变化量”或”偏差”平均值将消除单个值偏离的效应。
“Average Delta”
假设: N = MailToDo 的最新值
M = 采样间隔 (以分钟为单位)
计算N-1 “Delta Mail.Waiting”值以及在MailToDo中定义平均变化量(按分钟统计)的方法如下:
AverageDeltaMailToDo = “Delta Mail ToDos” 之和 / ((M) * (N - 1))
(如果平均值 < 0, 则设其 = 0)
此公式可简化为:
AvgDeltaMailToDo = (MailToDo[最新] - Mail.ToDo[最老]) / (M * (N - 1))
邮件传递延迟公式可被定义为:
MailDeliveryLatency =
| 0 | 若 MailToDo < 20 或 AverageDeltaMailToDo <=0 |
| 40 * AvgDeltaMailToDo | 若 0< AverageDeltaMailToDo < 1 |
| max(97, 10 * AvgDeltaMailToDo + 30) | 若 AverageDeltaMailToDo > 1 |
| 98 | 若 Router 任务仍在运行,但报告致命错误 |
举例说明:
1. MailToDo数值从老到新依次为 25, 20, 30, 20, 25, 20, 采样间隔 = 1 分钟:
MailToDo[最新]=20
MailToDo[最老]=25
M = 采样间隔 = 1
N = 采样数量 = 6
AvgDeltaMailToDo = (20 - 25)/(1*5) = -1, 由于 <= 0
所以, MailDeliveryLatency = 0
2. MailToDo数值从老到新依次为 40, 50, 45, 38, 41, 44, 采样间隔 = 1 分钟:
MailToDo[最新]=44
MailToDo[最老]=40
M = 采样间隔 = 1
N = 采样数量 = 6
AvgDeltaMailToDo = (44 - 40) / (1*5) = 0.8
所以, MailDeliveryLatency = 40 * 0.8 = 32
3. MailToDo数值从老到新依次为 10, 12, 14, 17, 22, 30, 采样间隔 = 1 分钟:
MailToDo[最新]=30
MailToDo[最老]=10
M = 采样间隔 = 1
N = 采样数量 = 6
AvgDeltaMailToDo = (30 - 10) / (1*5) = 4
所以, MailDeliveryLatency = 10 * 4 + 30 = 70
4. MailToDo数值从老到新依次为 20, 35, 35, 55, 50, 75, 采样间隔 = 1 分钟:
MailToDo[最新]=75
MailToDo[最老]=20
M = 采样间隔 = 1
N = 采样数量 = 6
AvgDeltaMailToDo = (75 - 20) / (1*5) = 11
所以, MailDeliveryLatency = 97
如果Mail.TotalPending统计数值为空,使用Mail.Waiting。 如果Mail.Waiting不存在,则认为没有邮件处于等待传递状态。
问题:
采样间隔对计算方法有何影响?
“AverageDeltaMailWaiting”值会受到Mail.Waiting与Mail.Waiting采样的时间间隔的影响。如果Mail.Waiting在减少,一个狭小的时间间隔(一分钟)和一个大的时间间隔(15分钟)相比,可能会产生一个更小的DeltaMailWaiting值,得到的邮件传递延迟数值更小。
可以通过比例系数来计算数据采集的间隔。如果每隔15分钟采集一次数据,就除以比例系数15。如果每隔5分钟采集一次数据,就除以比例系数5。以此类推。
当邮件传递延迟数值变为严重状态,你需要采取的行动如下:
如果Mail.Waiting 随时间而不断增长,建议采取如下行动:
- 通过修改 Domino 目录中的服务器配置文档 –> 路由器/SMTP –> 基本 –> “邮箱数” 来增加mail.box 文件的数量。
- 另一个变通是增加邮递以及/或者传递线程。
在Domino控制台输入“Tell Router Status”命令,可以检查路由器是否已经使用了所有的邮递以及/或者传递线程,输出:
Transfer Threads
Max = 分配的传输线程最大值
Total = 当前正在使用的传输线程
Delivery Threads
Max = 分配的邮递线程最大值
Total = 当前正在使用的邮递线程
Pages: 1 2

Add A Comment