CPU 突然过高,导致服务器无响应

CPU 突然过高,导致服务器无响应

我运营着一个相当繁忙(每天 700,000 次页面浏览,php/mysql)的网站,流量稳定(通常没有峰值)。过去两天,大约在使用高峰时间,大约一个小时后,我的网站突然从非常快变为无响应,大约一个小时后,又恢复到超级快。

CPU 负载在凌晨 2:10 急剧上升:

12:00:01 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
12:10:01 AM         1       270      2.54      3.56      4.00
12:20:01 AM        10       270      5.58      5.09      4.61
12:30:01 AM         9       297     10.06      9.63      7.22
12:40:01 AM         7       296      3.42      5.17      6.15
12:50:02 AM         8       291      4.36      4.57      5.43
01:00:02 AM        20       297      9.38      7.57      6.49
01:10:01 AM         6       279      5.83      6.86      6.90
01:20:01 AM        11       263      5.77      5.43      5.98
01:30:01 AM         2       291      6.70      5.56      5.66
01:40:01 AM         2       285      3.73      5.09      5.37
01:50:01 AM         6       285      3.84      4.65      5.11
02:00:01 AM         8       283      2.56      3.72      4.45
02:10:01 AM         2       431     14.67     10.88      7.34
02:20:01 AM         1       425      7.10     11.48      9.73
02:30:01 AM         4       453     10.30     12.79     11.23
02:40:01 AM         2       440     14.12     16.13     13.41

以下是我的统计数据:

Hostgator VPS 7 级,2 x 2GHz CPU,3.2G RAM,CentOS 5.9,Apache 2.2.19,MySQL

  • 这段时间内Mysql没有出现任何异常负载
  • Apache 显示所有工作者处于“W”状态。
  • 重新启动、重新启动 mysql、重新启动 apache 均未解决问题
  • apache 错误日志中没有任何异常(除了这段时间出现大量 503 错误)

我真的不知道从哪里开始调查这个问题。我很感激任何指点:

1 - 现在如何全面诊断此问题 2 - 或者当再次发生时,要安装哪些工具/运行哪些命令来捕获额外数据。

提前致谢。

答案1

如何诊断: - 绘制图表。使用 munin、cacti 或其他外部监控系统来了解到底是哪种资源结束了。 - 使用 atop 或 sar 获取有关时间轴中进程活动的详细信息。当您的服务器出现故障时,请检查向前移动的转储。

答案2

问题原来是 cpanel 系统 cron 作业行为不当,占用了所有 CPU,进而导致 apache 无法处理请求。

相关内容