Ubuntu服务器每天失败

症状:

  • 服务器无响应 – 负载增加,所有服务停止
  • 连接丢失 – Ping / SSH
  • 重新引导后刷新MySQL主机 – 由于MySQL拒绝新的连接
  • 间歇性的Apache崩溃
  • 通常在凌晨发生 – 但一周的2天不包括在内

所做的更改:

  • 更新了操作系统 – 到Ubuntu 10.04.4 LTS
  • 不知道MySQL服务器是否也在这个过程中更新
  • 当前的MySQL版本 – MySQL Ver 14.14 Distrib 5.1.63,用于使用readline 6.1的debian-linux-gnu(x86_64)
  • 从10.4.4更新#47更新Plesk到11.0.9更新#23
  • 几乎每天都重新启动
  • 所有的crons停止对应于服务器崩溃的时间
  • 创build一个MySQL日志来监视查询的locking时间

可能的原因:

  • 失败的硬件
  • 不正确的软件configuration(MySQL,Apache等)

工作职责:

  • 小型networking服务器
  • 运行我们的计费系统 – WHMCS
  • 负责CRONs
  • 大容量电子邮件解决scheme – 没有交付时间与服务器崩溃重合

build议的解决scheme:

  • 将机器移到VM
  • 格式化和恢复Plesk服务器备份,并从那里拿走?

边注:

  • 似乎是我们所有的Linux服务器上的一个普通的Apache故障 – 间歇性的问题
  • 我们在Apacheconfiguration中做了一些根本性的错误吗? (我明白,这是一个次要问题,只是确保它可能不具有任何相关性)

我从不使用prtg,但是如果我正确读取图表,则表明内存不足。 而你的服务器问题最后,如果不是完全崩溃,从凌晨1点到凌晨2点。 虽然问题似乎从上午12点开始。 您的服务器负载刚刚跳到这个时候的屋顶。

在那段时间:

  • 图表内存(Swap)Free 2 ,交换使用量增至6G-7G,与物理内存1G相比有很大的提高
  • 图表内存(真实)免费2 / SNMP Linux Meminfo 2 ,所有内存使用

虽然记忆似乎是主要原因。 这是可能的(或部分问题)由于缺乏CPU的能力。 由于以前的请求还在处理中,新的请求进来,越来越多的请求堆积在服务器中。

我会build议增加记忆力,并且还要了解上午12点正在运行什么。

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

  • configuration和监视Apache的服务器状态,以获得Web服务器负载的感觉。
  • 设置基本度量(CPU,内存,磁盘活动)的系统监视,以查看瓶颈的确切位置
  • 严格监控dmesg ,无论是在重新启动时还是在正常运行期间,都要确认没有明显的硬件问题。

一旦你有了几天的固定数据,你可以采取下一步(你以为你现在正在采取的一个 – 征求意见)。

99.9%的时间在一个像这样的一个设置,你有它的configuration错误的一个框太小,不能处理分配的连接数量的MySQL的configuration。 一个非常平均的mysql设置将连接限制设置为200,每个连接通常需要10到100mb,具体取决于查询/caching等。

我见过许多公司设置他们的连接限制的方式超过了实际机器根据他们如何configuration它的最大内存。 当MySQL试图解决内存分配而不是交换它会导致系统崩溃。 你通常可以在dmesg中看到痕迹。

发布你的MySQLconfiguration+数量的CPU / VCPUS和内存,很可能是MySQLconfiguration不正确。 MySQL的文档很难遵循,但有一些帮助脚本给你一个想法。 我会尽量find我以前用过的最准确的一个,不幸的是我不记得我头顶的脚本名字。

另外请记住,看着mysql日志不会告诉你真实的故事。