Apache HTTP消耗太多CPU

时间:2013-09-18 14:37:24

标签: php drupal-7 ubuntu-12.04 cpu-usage apache2.2

我在使用Apache Web Server加载CPU时遇到了一些麻烦。

我们在虚拟机上运行 Ubuntu Server 12.04 LTS 。我们的服务器有以下规格:

  • 8GB RAM;
  • 4个vCPU( 12ghz );

我们将服务器配置为运行基于Drupal(7.23)的网站。所以,我们安装了Apache,PHP,MySQL ......版本如下:

  • Apache 2.2.22;
  • PHP 5.3.10( PHP作为Apache模块运行。);
  • APC 3.1.7;
  • MySQL 5.5.31(所有innodb表);

我也在运行一些 apache模块。看一下(apachectl -M):

  • core_module(静态)
  • log_config_module(静态)
  • logio_module(静态)
  • mpm_prefork_module(静态)
  • http_module(静态)
  • so_module(静态)
  • actions_module(共享)
  • alias_module(共享)
  • authz_host_module(共享)
  • deflate_module(共享)
  • dir_module(共享)
  • env_module(shared)
  • include_module(shared)
  • mime_module(共享)
  • php5_module(共享)
  • proxy_module(共享)
  • proxy_http_module(共享)
  • reqtimeout_module(共享)
  • rewrite_module(共享)
  • setenvif_module(共享)
  • ssl_module(共享)
  • status_module(shared)

apache2.conf 上,我们有这个配置:

    Timeout 90
    KeepAlive On
    MaxKeepAliveRequests 80
    KeepAliveTimeout 5
    HostnameLookups Off
    LogLevel warn

    <IfModule mpm_prefork_module>
        StartServers          10
        MinSpareServers       10
        MaxSpareServers       30
        MaxClients           120
        MaxRequestsPerChild 1000
    </IfModule>

我网站的虚拟主机

    <VirtualHost *:80>
        ServerName blabla.bla.bla
        ServerAdmin bla@bla.com
        DocumentRoot /l/disk0/site/public_html

        <Directory />
            AllowOverride None
        </Directory>

        <Directory /l/disk0/site/public_html>
            Options MultiViews Indexes Includes FollowSymLinks ExecCGI
            AllowOverride All
            Order allow,deny
            allow from all
        </Directory>

        LogLevel warn
        ErrorLog "/l/disk0/site/logs/apache/site/error.log"
        CustomLog "/l/disk0/site/logs/apache/sit/access.log" combined
        SSLProxyEngine on
        RewriteEngine   on
        RewriteLog     logs/rewrite_www_log
        RewriteLogLevel        0

        Include rewrites-www.conf
</VirtualHost>

Drupal Modules:

  • ACL 7.x-1.0
  • APC - 备用PHP缓存7.x-1.0-beta4
  • Boost 7.x-1.0-beta2
  • 缓存过期7.x-2.0-beta2
  • CAPTCHA 7.x-1.0
  • 混沌工具套件(ctools)7.x-1.3
  • 日期7.x-2.6
  • 域名访问7.x-3.10
  • Domain Blocks 7.x-2.0
  • Domain CTools 7.x-1.3
  • 域区域设置7.x-1.0-beta3
  • Domain Taxonomy 7.x-3.x-dev(2012-abr-29)
  • 域视图7.x-1.5
  • 嵌入视图显示7.x-1.2
  • 实体API 7.x-1.2
  • 实体参考7.x-1.0
  • IMCE 7.x-1.7
  • IMCE Mkdir 7.x-1.0
  • 国际化7.x-1.10
  • 链接7.x-1.1
  • 本地化更新7.x-1.0-beta3
  • Media 7.x-1.3
  • Meta标签快速7.x-2.7
  • 时事通讯7.x-1.0-beta9
  • 选项元素7.x-1.9
  • 页面样式7.x-1.0
  • 面板7.x-3.3
  • Pathauto 7.x-1.2
  • 病理7.x-2.11
  • profile2 7.x-1.3 + 0-dev(2013-mai-24)
  • select_or_other 7.x-2.19
  • sheetnode 7.x-1.0-beta4 + 3-dev(2013-mai-25)
  • SMTP身份验证支持7.x-1.0
  • 令牌7.x-1.5
  • Transliteration 7.x-3.1
  • 变量7.x-2.3
  • 意见7.x-3.7
  • 每个角色的词汇表权限7.x-1.0
  • Webform 7.x-3.19
  • Webform验证7.x-1.2
  • workbench 7.x-1.2
  • workbench_access 7.x-1.2
  • workbench_media 7.x-1.1
  • workbench_profile 7.x-1.1
  • xmlsitemap 7.x-2.0-rc2

我的网站很简单,没有很多访问者。我说的是每天500名访客。 Drupal会导致如此多的CPU负载?还是模块?

我的问题是CPU(所有核心)都有很高的负载。大多数时候,达到90%到100%的负载!违规流程是apache2 。记忆也消耗得没有怜悯。总共8GB,消耗的内存约为 6.5GB至7.5GB 。我不知道我的apache配置是否错误,或者我是否真的需要更多硬件(我猜不是)。 Drupal会导致高CPU负载吗?

当CPU负载达到100%时,站点出现故障,我们必须重新启动apache。我使用Drupal使用APC和安装Boost做了一个解决方案。有一些效果,但CPU负载仍然很高。非常高。

如果您需要更多信息,例如Drupal模块和PHP扩展。请告诉我。

1 个答案:

答案 0 :(得分:1)

我不是服务器专家所以我不能指出确切的原因。 Drupal每次通话消耗大约10MB内存。安装Devel模块,并且有一个复选框,在调用页面时,会在页面的每一端放置页面加载和内存使用行。

如我所见,您启用了增强模块。这个是在根目录中创建一个/ cache /文件夹,或者是保存静态文件的预设文件夹。这样,页面不会通过SQL和PHP处理。 Drupal不应该有这么高的负载。

由于这将被清除,我会指出你应该在服务器设置上工作。你肯定有任何问题。你是如何衡量这些高负荷的? Top或&#34; collectD&#34;像峰值?运行$ top命令,看看这个加载是否是永久性的,加载一个页面,看看它是否会被击出。 $ top命令也显示了最多的资源消费者。

是专用机器还是虚拟机?