关于平均负载过高时 SendMail 守护进程的操作的问题

关于平均负载过高时 SendMail 守护进程的操作的问题

我的 sendmail 服务器开始拒绝连接,因为平均负载太高(由于垃圾邮件问题,该问题现已解决)。

Error was: sendmail[13400]: rejecting connections on daemon MTA: load average: 50

但我希望更好地理解这种行为。

  • 这个门槛设在哪里呢?
  • “平均负载”是什么意思?
  • 平均负载多久计算一次?
  • 有没有办法主动监控这一点?或者当平均负载接近高值时发出警报?显然,sendmail 会为连接的 MTA 提供一个 4.0.0 类 dsn,但我正在寻找某种警报机制。

谢谢,


嗨,大家好,

我觉得我应该再提一下这个问题,因为我看到它又出现了。我现在看到的问题是,由于超过平均负载而排队的消息稍后不会重新发送(即使性能恢复到可接受的水平)。知道这是为什么吗?

谢谢,

答案1

系统平均负载是一种性能指标,用于表示系统正在执行多少工作。当您登录邮件服务器(假设是 UNIX 类型的系统)时,您可以键入 uptime 命令来查看过去 1 分钟、5 分钟和 15 分钟的平均负载。以下是来自生产服务器的一个示例:

sh$ uptime
10:53am  up 248 day(s), 36 min(s),  12 users,  load average: 0.28, 0.29, 0.30

因此 5 分钟的平均负载为 0.28,过去 5 分钟的平均负载为 0.29,等等。在这种情况下,您可以看到系统的负载随着时间的推移略有降低。

根据经验,您需要将服务器负载保持在 1 以下。但这不一定适用于所有情况。如果您观察服务器一段时间,您将开始了解合理的负载是多少。这可能是理解它的最简单方法,只需在现实世界中观察它即可。话虽如此,平均负载的计算方式实际上相当复杂,但如果您感兴趣,我建议您查看以下有关 Linux 如何计算它的文章:

http://www.linuxjournal.com/article/9001

现在回到 sendmail。当平均负载 (LA) 过高时,Sendmail 可以配置为仅排队消息或直接拒绝消息。这样做的目的是防止 sendmail 使整个系统崩溃。如果它过早拒绝连接,您可以在 sendmail.cf 中查看两个设置:

O QueueLA=8 - load average at which Sendmail queues new messages

O RefuseLA=12 - load average at which Sendmail rejects connections

对上述内容进行谷歌搜索会返回一个页面,其中有一些关于如何更改这些参数(使用 M4 宏时)的说明,这可能会有所帮助:

http://www.revsys.com/writings/quicktips/sendmail-mc.html

相关内容