我在使用 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 扩展。请告诉我。