Apache httpd 进程压倒了服务器

Apache httpd 进程压倒了服务器

Apache 似乎会随机崩溃,占用大量 CPU 并使服务器不堪重负。每日页面浏览量仅为 8000 左右,因此它肯定可以处理这种流量。这种情况似乎也是随机发生的。有人听说过这种情况吗?可能的解决方案是什么?

一些基本的服务器统计数据:运行 WHM/Cpanel 最新稳定版,4G 内存 Xeon(R) CPU X3430 @ 2.40GHz。

Apache:2.2.17 PHP:5.2.17 带 eAccelerator

顶部:

top - 16:41:12 up 7:15, 1 user, load average: 2.77, 2.23, 1.91
Tasks: 79 total, 4 running, 75 sleeping, 0 stopped, 0 zombie
Cpu(s): 88.4% us, 2.5% sy, 0.0% ni, 9.1% id, 0.1% wa, 0.0% hi, 0.0% si
Mem: 4024216k total, 960384k used, 3063832k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 0k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
31902 nobody 17 0 43072 16m 6804 S 65.9 0.4 0:07.93 httpd 
29802 nobody 16 0 45700 24m 13m R 32.3 0.6 0:19.77 httpd 
32159 nobody 15 0 41984 11m 3440 S 30.3 0.3 0:01.34 httpd 
28227 nobody 15 0 43492 17m 7456 S 29.6 0.4 0:27.59 httpd 
31848 nobody 16 0 46184 17m 6608 R 29.6 0.5 0:07.40 httpd 
31785 nobody 16 0 44872 16m 5964 S 26.0 0.4 0:01.05 httpd 
30310 nobody 15 0 43284 16m 7228 S 24.6 0.4 0:08.90 httpd 
32130 nobody 15 0 42064 12m 3776 S 21.6 0.3 0:02.18 httpd 
28597 nobody 16 0 43396 17m 7368 S 21.0 0.4 0:12.76 httpd 
32158 nobody 15 0 43180 14m 5216 S 21.0 0.4 0:01.00 httpd 
17861 nobody 16 0 43484 24m 14m S 17.3 0.6 1:15.55 httpd 
31764 mysql 15 0 631m 318m 5056 S 14.3 8.1 76:50.21 mysqld 
32157 nobody 15 0 42668 15m 6312 S 10.7 0.4 0:01.07 httpd 
29841 nobody 15 0 44512 18m 8128 S 7.7 0.5 0:15.14 httpd 
26296 nobody 15 0 44624 18m 7800 S 1.0 0.5 0:31.26 httpd 
31825 nobody 15 0 43268 16m 6468 S 0.7 0.4 0:07.50 httpd 
1 root 15 0 1716 608 520 S 0.0 0.0 0:00.49 init

Apache 信息

答案1

您可以检查以下几件事:

  • 此服务器是 VPS 吗(交换/缓冲区为 0k,这通常发生在 VPS 服务器上)?如果是这种情况,则速度减慢可能部分或全部归因于服务器上的其他网站。如果是这种情况,您可以更换 VPS 提供商或转移到专用服务器。
  • 由于您已启用 mod_status,因此请检查 /server-status 的输出。这将告诉您所有 httpd 客户端正在做什么,并可能让您了解问题的原因(例如,页面加载缓慢)。
  • 尝试使用 ab (ApacheBench) 对您的网站进行基准测试,以获得最大容量。每天 8000 次点击只是每 11 秒一次点击,但如果流量分布不均匀或某些页面需要 10 秒才能呈现,那么您很容易陷入麻烦。您可能在一天中的某些时候达到了网站的最大服务器容量。
  • 尝试更准确地计算您的传入流量,不要假设您每天只获得 8k 次点击。Google Analytics(或类似服务)或 Apache 日志解析就足够了,它们会让您知道是否有一个或多个客户端出于某种原因对您的网站进行攻击,或者您是否突然收到流量增加(例如,Reddit 上推荐了一篇博客文章)。
  • 中断是否发生在一天中的特定时间(整点或每天同一时间)?如果是,则可能是 cron 脚本导致了问题。

相关内容