专用根 - 负载过高,服务器不时崩溃

专用根 - 负载过高,服务器不时崩溃

我们正在以下系统上运行开放式 SUSE 10:AuthenticAMD,双核 AMD Opteron(tm) 处理器 1212 HE,配备 2 GB 的 RAM。

作为 Apache Vhots 托管的是:

  • 每日页面点击量达 30,000 次的公告板系统
  • 每日页面点击量达 25,000 的一些 Wordpress 博客(5)
  • Plesk 9.3.x
  • MySQL
  • OsCommerce 网上商店每天的页面点击量达 4000 次

有时 CPU 负载会上升到 15。我们不知道为什么?虽然当负载上升时服务器会崩溃。

对于这样的机器来说是不是太过分了?

答案1

系统负载数据不仅仅受 CPU 功率的影响,因为除了计算平均进程数之外,在计量期间主动处理的将会如果他们没有等待 I/O 操作完成。

许多重负载峰值都是由于 I/O 争用造成的。这可能由多种因素造成:内存不足(因此可以缓存的信息较少和/或交换活动增加),在这种情况下,增加更多 RAM 会大有帮助;数据库设计不良或对数据库的查询不良(通常导致全表扫描,而本来可以进行索引扫描;或者子查询运行了数百次,而可以使用更高效的连接 - 增加 RAM 也可以有所帮助,但与改进设计相比,这充其量只是暂时的解决方案);I/O 子系统速度慢(例如磁盘速度慢,或者对进行许多小写入的系统使用 RAID5,等等);或者以上因素的某种组合。

您应该监控 CPU 统计数据(%IOWait 以及 %user、%system 和 %nice)、内存/交换使用情况和磁盘 I/O,以查看这些繁忙时段发生的情况,从而找到更多线索。您还应该考虑更详细地监控 Apache,以查看某个特定虚拟主机的突然过量命中是否是原因。我通常使用http://collectd.org/对于这种监控,还有很多其他的解决方案。大多数数据库支持记录运行时间超过固定时间的查询,因此启用此功能会有所帮助(尽管您需要使用其他线索来确定报告的查询是否需要很长时间,因为它们需要优化,或者只是因为系统总体负载很重)。

每秒平均命中次数约为 0.6 次,我怀疑您看到的是命中率高得多的时段,这会导致负载因上述原因之一而增加(I/O 争用和/或内存限制,而不是 CPU 使用)。每日命中次数意义不大,除非您的流量全天都非常稳定,这种情况很不寻常 - 一天中最繁忙时段的每小时费率会更有意义。

相关内容