Ubuntu 服务器每天都会出现故障

Ubuntu 服务器每天都会出现故障

症状:

  • 服务器无响应 - 负载增加,所有服务停止
  • 连接丢失 - Ping/SSH
  • 重启后刷新 MySQL 主机 - 因为 MySQL 拒绝新连接
  • Apache 间歇性崩溃
  • 通常发生在清晨 - 但一周中有 2 天除外

所做的更改:

  • 更新操作系统 - 至 Ubuntu 10.04.4 LTS
  • 不确定 MySQL 服务器是否也在此过程中进行了更新
  • 当前 MySQL 版本 - mysql Ver 14.14 Distrib 5.1.63,适用于 debian-linux-gnu (x86_64),使用 readline 6.1
  • 将 Plesk 从 10.4.4 更新 #47 更新至 11.0.9 更新 #23
  • 几乎每天都重启
  • 所有 cron 在服务器崩溃时停止
  • 创建 MySQL 日志来监控查询的锁定时间

可能的原因:

  • 硬件故障
  • 软件配置不正确(MySQL、Apache 等)

职责:

  • 小型网络服务器
  • 运行我们的计费系统 - WHMCS
  • 负责 CRON
  • 批量电子邮件解决方案 - 没有送达时间与服务器崩溃相吻合

建议的解决方案:

  • 将机器移至 VM
  • 格式化并恢复 Plesk 服务器备份并从那里获取?

附注:

  • 似乎是我们所有 Linux 服务器的 Apache 普遍故障 - 间歇性问题
  • 我们是否在 Apache 配置中做了一些根本性的错误?(我知道这是一个次要问题,只是想确保它不可能具有任何相关性)

答案1

我从来不用 prtg,但如果我没看错,你的内存已经用完了。你的服务器问题持续了大约凌晨 1 点到凌晨 2-3 点,即使没有完全崩溃。虽然问题似乎是从 12 点开始的。你的服务器负载就在那一刻猛增。

在那段时间里:

  • 图表内存(交换)可用 2,交换使用量增加到 6G-7G,与 1G 的物理内存相比,这很多
  • 图表内存(真实)可用 2/SNMP Linux Meminfo 2,所有内存都已使用

虽然内存似乎是主要原因。但也可能(或部分问题)是由 CPU 功率不足引起的。由于上一个请求仍在处理,新的请求进来,越来越多的请求堆积在服务器上。

我建议增加内存,并找出凌晨 12 点正在运行的内容。

答案2

听起来你需要对根本原因做一些真正的分析。

  • 配置和监控 apache服务器状态了解网络服务器负载。
  • 设置系统监控基本指标(CPU、内存、磁盘活动),以查看瓶颈究竟在哪里
  • 在重新启动时和正常运行期间密切监控dmesg,以验证没有明显的硬件问题。

一旦您获得了几天的可靠数据,您就可以采取下一步行动(您现在认为正在采取的行动 - 寻求建议。)

答案3

99.9% 的时间,在像您这样的设置中,mysql 的配置错误,因为机器太小,无法处理分配的连接数量。一个非常平均的mysql 的设置将连接限制设置为 200,每个传入的连接通常占用 10 到 100mb,具体取决于查询/缓存等。

我见过许多公司将连接限制设置为超出实际机器的最大内存(根据其配置方式)。当 MySQL 尝试寻址内存并被分配到交换区时,会导致系统崩溃。您通常可以在 dmesg 中看到跟踪。

发布您的 MySQL 配置 + CPU/VCPU 数量和内存,很可能是 MySQL 配置不正确。mysql 的文档很难理解,但有一些帮助脚本可以为您提供一些思路。我会尝试找到我过去使用过的最准确的脚本之一,不幸的是我记不起脚本名称了。

还要记住,查看 mysql 日志不会向您展示真实情况。

相关内容