1

我在使用 Apache Web 服务器加载 CPU 时遇到了一些问题。

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

  • 8GB 内存;
  • 4 个 vCPU(12ghz);

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

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

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

  • 核心模块(静态)
  • log_config_module(静态)
  • logio_module(静态)
  • mpm_prefork_module(静态)
  • http_module(静态)
  • so_module(静态)
  • 动作模块(共享)
  • 别名模块(共享)
  • authz_host_module(共享)
  • deflate_module(共享)
  • dir_module(共享)
  • env_module(共享)
  • 包含模块(共享)
  • mime_module(共享)
  • php5_module(共享)
  • proxy_module(共享)
  • proxy_http_module(共享)
  • reqtimeout_module(共享)
  • rewrite_module(共享)
  • setenvif_module(共享)
  • ssl_module(共享)
  • status_module(共享)

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 模块:

  • ACL 7.x-1.0
  • APC - 替代 PHP 缓存 7.x-1.0-beta4
  • 提升 7.x-1.0-beta2
  • 缓存过期 7.x-2.0-beta2
  • 验证码 7.x-1.0
  • 混沌工具套件 (ctools) 7.x-1.3
  • 日期 7.x-2.6
  • 域访问 7.x-3.10
  • 域块 7.x-2.0
  • 域 CTools 7.x-1.3
  • 域区域设置 7.x-1.0-beta3
  • 域分类 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
  • 媒体 7.x-1.3
  • 元标记快速 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)
  • 选择或其他 7.x-2.19
  • sheetnode 7.x-1.0-beta4+3-dev (2013-mai-25)
  • SMTP 身份验证支持 7.x-1.0
  • 代币 7.x-1.5
  • 音译 7.x-3.1
  • 变量 7.x-2.3
  • 视图 7.x-3.7
  • 每个角色的词汇权限 7.x-1.0
  • 网络表格 7.x-3.19
  • 网络表单验证 7.x-1.2
  • 工作台 7.x-1.2
  • 工作台_访问 7.x-1.2
  • 工作台媒体 7.x-1.1
  • 工作台配置文件 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。我使用 APC 和安装 Boost 对 Drupal 做了一个解决方案。有一些效果,但CPU负载仍然很高。很高。

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

4

1 回答 1

1

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

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

由于这将被清除,我会指出您应该处理服务器设置。你肯定有任何问题。你是如何测量这些高负载的?Top 还是“collectD”之类的高峰?运行 $ top 命令,看看这个加载是否是永久的,加载一个页面,看看它是否射出。$ top 命令还显示了最多的资源消费者。

是专用机还是虚拟机?

于 2013-11-06T10:16:05.827 回答