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

Mik*_*e B 4 linux smtp sendmail dsn load-average

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

Error was: sendmail[13400]: rejecting connections on daemon MTA: load average: 50
Run Code Online (Sandbox Code Playgroud)

不过,我想更好地理解这种行为。

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

谢谢,


嗨,大家好,

当我看到它再次出现时,我想我会再撞一次。我现在看到的问题是,由于超过平均负载而排队的消息稍后不会重新发送(即使在性能恢复到可接受的水平之后。知道为什么会这样吗?

谢谢,

Deu*_*sch 9

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

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

所以 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
Run Code Online (Sandbox Code Playgroud)

在上面的谷歌搜索返回了一个页面,其中包含有关如何更改这些参数(使用 M4 宏时)的一些说明,这可能会有所帮助:

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

  • 好问题!我不确定我的头顶,但我自己的谷歌搜索引导我到 Sendmail m4 README.txt,它指出默认的 QueueLA 是服务器上的处理器数量乘以 8,而 RefuseLA 默认是处理器数量乘以 12。(当您手动设置它们时,它只是将其设置为您指定的值,不会进行额外的乘法。)HTH。http://www.sendmail.org/m4/README.txt (2认同)