【问题标题】:Apache httpd high CPU usageApache httpd 高 CPU 使用率
【发布时间】:2017-03-27 18:08:30
【问题描述】:

最近我的服务器遇到了一个大问题,我使用 tomcat 作为控制器,使用 apache 作为 web 服务器,但是突然 apache 消耗了 98% 的 CPU,因此我的网站挂掉了,我杀死了这个进程很多次但是这个过程再次启动并再次消耗CUP,有人可以为此提供一些解决方案吗?

日志:

根 21937 2264 5.8 9181548 246700 ? SLl 08:44 3168:44 apache -c httpd.conf 根 24842 0.0 0.0 27400 3220 ? S 04:16 0:00 cpdavd - 接受 2077、2078、2079 和 2080 上的连接(休眠) 根 28715 0.0 0.0 128548 3984 ? S 09:15 0:02 /usr/sbin/httpd 根 28726 0.0 0.0 128548 3984 ? S 09:15 0:02 /usr/sbin/httpd 根 29283 0.0 0.0 128548 3988 ? S 09:18 0:02 /usr/sbin/httpd 根 29391 0.0 0.0 128548 3980 ? S 09:18 0:02 /usr/sbin/httpd 根 29786 0.0 0.0 128548 3988 ? S 09:20 0:02 /usr/sbin/httpd 根 29825 0.0 0.0 128548 3988 ? R 09:20 0:02 /usr/sbin/httpd 根 29857 0.0 0.0 128548 3980 ? S 09:20 0:02 /usr/sbin/httpd 根 30022 0.0 0.0 128548 3980 ? S 09:21 0:01 /usr/sbin/httpd 根 32218 0.0 0.0 128548 3844 ? S 04:50 0:03 /usr/sbin/httpd 根 32223 0.0 0.0 128548 3984 ? S 04:50 0:07 /usr/sbin/httpd 根 32284 0.0 0.0 128548 3984 ? S 04:51 0:08 /usr/sbin/httpd 根 32311 0.0 0.0 128548 3984 ? S 04:51 0:08 /usr/sbin/httpd 根 32342 0.0 0.0 128548 3988 ? S 04:51 0:08 /usr/sbin/httpd 根 32345 0.0 0.0 128548 3984 ? S 04:51 0:08 /usr/sbin/httpd 根 32349 0.0 0.0 128548 3980 ? S 04:51 0:08 /usr/sbin/httpd 根 32354 0.0 0.0 128548 3980 ? S 04:51 0:08 /usr/sbin/httpd 根 32373 0.0 0.0 128548 3988 ? S 04:51 0:08 /usr/sbin/httpd 根 32409 0.0 0.0 128548 3980 ? S 04:51 0:08 /usr/sbin/httpd 根 32493 0.0 0.0 128548 3980 ? S 04:51 0:08 /usr/sbin/httpd 根 32551 0.0 0.0 128548 3984 ? S 04:52 0:08 /usr/sbin/httpd 根 32567 0.0 0.0 128548 3988 ? S 04:52 0:07 /usr/sbin/httpd 根 32657 0.0 0.0 128548 3980 ? S 04:52 0:08 /usr/sbin/httpd 根 32751 0.0 0.0 128548 3980 ? S 04:52 0:08 /usr/sbin/httpd

【问题讨论】:

  • httpd 的日志中有什么内容?

标签: java linux apache jakarta-ee


【解决方案1】:

需要调整 httpd.conf(或 apache2.conf 取决于版本)中的设置。

运行这两个之一将告诉您 Apache 正在使用的内存量: ps -ylC httpd | awk '{x += $8;y += 1} END {print "Apache 内存使用量 (MB):"x/1024; print "平均进程大小 (MB): "x/((y-1)*1024)}'

ps -ylC apache2 | awk '{x += $8;y += 1} END {print "Apache 内存使用量 (MB):"x/1024; print "平均进程大小 (MB): "x/((y-1)*1024)}'

我首先要调整的是 prefork 设置以及 httpd.conf 中的其他 IfModule 部分

以下是一些包含大量 Apache 调优建议的指南:

https://www.digitalocean.com/community/tutorials/how-to-optimize-apache-web-server-performance http://www.monitis.com/blog/25-apache-performance-tuning-tips/

【讨论】:

  • Apache 不消耗内存,但消耗 CPU(即 99%)
  • 是什么让你这么想?
猜你喜欢
  • 2019-12-27
  • 2018-08-15
  • 2013-02-27
  • 2021-12-09
  • 2014-07-16
  • 2014-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多