在具有 1 个 CPU 内核和 2GB RAM 的 VPS 上,我为低流量网站运行 mysql+apache2。有时机器会变慢或停止通过 apache 或 mysql 传送。
这就是我设置 nagios 的原因,它会在运行 5-10 天后向我发送类似“服务警报:本地主机/当前负载警告”的警报。然后我可以通过 SSH 登录并使用“免费”检查 RAM,这仍然足够,500MB+ 可用并且只有 60MB 的交换空间在使用中。
由于系统再次变慢,我检查了系统日志并发现了很多这样的条目:
Jun 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(暂时交付suspended: Host or domain name not found.Name=zombine.com type=MX: Host not found, try again) Jun 30 23:46:31 cl22 postfix/error[2193]: 49CB374123: to=, 中继=none, delay=154189, delays=154185/3.1/0/0, dsn=4.4.3, status=deferred(传送暂停:找不到主机或域名。name=zombine.com type=MX 的名称服务错误: 找不到主机,再试一次) Jun 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 (delivery temporary suspended: Host or domain name not found.Name=zombine.com type=MX: Host not found, 名称服务错误再试一次) Jun 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 的优先级等,以确保 apache2 和 mysql 保持健康。这两个过程对我很重要。外发电子邮件也是如此,因为它正在向客户发送消息。
根据您显示的日志,后缀正在使用的域名 - zombine.com - 在您的 DNS 上不存在,或者它没有 MX 记录,这就是后缀出错的原因。也许您应该尝试做的是每 5 分钟左右运行一次 cronjob,检查是否有新错误已添加到 syslog,然后运行 top 并将结果通过电子邮件发回给您。从那里您可以找出哪个进程消耗的内存最多。
您看到的错误不是与电子邮件地址相关的错误;这是一个DNS问题。如果它发送电子邮件,请确保您可以从该服务器看到您的域 zombine.com 的 MX 记录:
Postfix 将继续尝试在几天内一遍又一遍地发送这些电子邮件,以防出现像这样的“可恢复”故障。
另一件要检查的事情是您是否有磁盘负载问题(检查硬件中断 CPU 使用率,“hi”,在
top
)。如果这是问题所在,您可以安装并运行iotop
以查看是什么占用了所有负载。您可以配置这些参数(以天为单位)来调整 postfix 尝试投递无法投递的邮件的时长:
此外,请确保以下设置正确,以确保您没有运行开放中继(这可能是不需要的 SMTP 流量的来源,因为人们使用您的服务器发送垃圾邮件):
然后,清空您的邮件队列:
出于安全原因,这是区分大小写的。然后您应该会发现它
postqueue -p
显示了一个空队列。