![当前负载处于警告状态-为什么?](https://linux22.com/image/588838/%E5%BD%93%E5%89%8D%E8%B4%9F%E8%BD%BD%E5%A4%84%E4%BA%8E%E8%AD%A6%E5%91%8A%E7%8A%B6%E6%80%81-%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我在一台拥有 1 个 CPU 核心和 2GB RAM 的 VPS 上为一个低流量网站运行 mysql+apache2。有时机器会变慢或停止通过 apache 或 mysql 进行传输。
这就是为什么我设置了 nagios,它会在运行 5-10 天后向我发送“服务警报:localhost/当前负载为警告”之类的警报。然后我可以通过 SSH 登录并使用“空闲”检查 RAM,它仍然足够,可用空间超过 500MB,使用的交换空间只有 60MB。
由于系统再次变慢,我检查了系统日志并发现了很多这样的条目:
6 月 30 日 23:46:31 cl22 postfix/error[2190]: 46D8974323: to=、relay=none、delay=294806、delays=294803/3/0/0、dsn=4.4.3、status=deferred(传送暂时中止:未找到主机或域名。name=zombine.com 的名称服务错误 type=MX:未找到主机,请重试) 6 月 30 日 23:46:31 cl22 postfix/error[2193]: 49CB374123:to=、relay=none、delay=154189、delays=154185/3.1/0/0、dsn=4.4.3、status=deferred(传送暂时中止:未找到主机或域名。name=zombine.com 的名称服务错误 type=MX:未找到主机,请重试) 6 月 30 日 23:46:31 cl22 postfix/error[2153]: 4E2C874250: to=、relay=none、delay=433708、delays=433704/3.1/0/0、dsn=4.4.3、status=deferred(传送暂时中止:未找到主机或域名。name=zombine.com 的名称服务错误 type=MX:未找到主机,请重试) 6 月 30 日 23:46:31 cl22 postfix/error[2176]: 480D874180:to=、relay=none、delay=174308、delays=174304/3.1/0/0、dsn=4.4.3、status=deferred(传送暂时中止:未找到主机或域名。 name=zombine.com 的名称服务错误 type=MX: 未找到主机,请重试)
我如何才能找出哪个进程正在消耗所有负载?对于 1 核 VPS 来说,这确实太过重了:警告 - 平均负载:3.06、5.79、3.42
mysql 没问题,apache2 似乎也没什么问题。postfix 可能不行?还有什么我还没发现的吗?
请告诉我如何找出坏进程并暂时重新设置或取消 Postfix 等的优先级,以确保 apache2 和 mysql 保持健康。这两个进程对我很重要。外发电子邮件也是如此,因为它会向客户端发送消息。
答案1
您看到的错误不是与电子邮件地址相关的错误;这是 DNS 问题。如果该服务器发送电子邮件,请确保您可以从该服务器看到您的域 zombine.com 的 MX 记录:
dig in mx zombine.com
如果发生类似这样的“可恢复”故障,Postfix 将会在几天内继续尝试反复发送这些电子邮件。
另外要检查的是您是否有磁盘负载问题(检查硬件中断 CPU 使用率,“hi”,在 中top
)。如果是这个问题,您可以安装并运行iotop
以查看是什么占用了所有负载。
您可以配置这些参数(以天为单位)来调整 Postfix 尝试传送无法送达的邮件的时间长度:
maximal_queue_lifetime (normal messages)
bounce_queue_lifetime (bounce messages)
此外,请确保以下设置正确,以确保您没有操作开放中继(这可能是不必要的 SMTP 流量的来源,因为人们使用您的服务器发送垃圾邮件):
mynetworks (in this case probably 127.0.0.1/32)
smtpd_client_restrictions (probably permit_mynetworks, reject_unauth_destination)
然后,清空您的邮件队列:
postsuper -d ALL
出于安全原因,此字段区分大小写。然后您会发现postqueue -p
显示的是空队列。
答案2
根据您显示的日志,域名 postfix 正在使用 -僵尸网- 不存在于您的 DNS 上,或者没有 MX 记录,这就是 postfix 出错的原因。也许您应该尝试每 5 分钟左右运行一次 cronjob,检查 syslog 中是否有新错误,然后运行 top 并通过电子邮件将结果发回给您。从那里您可以找出哪个进程消耗了最多的内存。