Apache (MPM Worker)、FastCGI PHP 4/5.2/5.3 和 MySQL 5 的可行性

Apache (MPM Worker)、FastCGI PHP 4/5.2/5.3 和 MySQL 5 的可行性

我的服务器将托管众多 PHP Web 应用程序,包括 Joomla、Drupal 和一些旧版(如:PHP4)以及从客户端继承的其他定制代码。这将是一台由十几个 Web 开发人员使用的开发机器,负载波动或特别高的负载预期等问题并不重要。

现在,我的问题是:在使用 Apache w/ MPM Worker、PHP 4/PHP 5.2/PHP 5.3(全部通过 FastCGI)和 MySQL 5(带有 64MB 的查询缓存)时我应该了解什么问题?

我还没有广泛地测试过各种应用程序,而且我最近才学会了如何安装 PHP 并通过 FastCGI 使用它(而不是 mod_php,在这种情况下似乎是不可能的(考虑到 PHP 的多个版本以及希望使用 MPM Worker 而不是 MPM Prefork))。

我了解到,人们可能对 XCache 和 APC 存在担忧,即非线程安全问题,即数据损坏,使用 MPM Worker 的能力变得无效。这种担忧合理吗?

我一直在使用我的个人测试服务器(在 VirtualBox 中运行 Ubuntu Server Edition 10.04),它有 2GB 可用 RAM。

以下是所使用的配置(实际的服务器可能会使用更适合其用途的配置):

阿帕奇:

Server version: Apache/2.2.14 (Ubuntu)
Server built:   Apr 13 2010 20:22:19
Server's Module Magic Number: 20051115:23
Server loaded:  APR 1.3.8, APR-Util 1.3.9
Compiled using: APR 1.3.8, APR-Util 1.3.9
Architecture:   64-bit
Server MPM:     Worker
    threaded:     yes (fixed thread count)
        forked:     yes (variable process count)

工人:

<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          400
    MaxRequestsPerChild 2000
</IfModule>

PHP./配置(PHP 4.4.9,PHP 5.2.13,PHP 5.3.2):

--enable-bcmath \
--enable-calendar \
--enable-exif \
--enable-ftp \
--enable-mbstring \
--enable-pcntl \
--enable-soap \
--enable-sockets \
--enable-sqlite-utf8 \
--enable-wddx \
--enable-zip \
--enable-fastcgi \
--with-zlib \
--with-gettext \

Apache php-fastcgi-setup.conf

FastCgiServer /var/www/cgi-bin/php-cgi-5.3.2
FastCgiServer /var/www/cgi-bin/php-cgi-5.2.13
FastCgiServer /var/www/cgi-bin/php-cgi-4.4.9

ScriptAlias /cgi-bin-php/ /var/www/cgi-bin/

答案1

您唯一应该问自己的问题是:您是否真的预计您的网站会有如此大的流量,以至于需要如此复杂和冒险的设置(而不是“常规”的 prefork + php 作为模块)。

我一直在运行几个 php 重度网站,每天的点击量峰值超过 1000 万次,无需切换到线程模型。PHP 本身就是一团糟,让它经历各种考验是自找的。

答案2

我不同意上面的答案。这和你预期的流量大小无关,而是和某人能制造多少流量有关。除非你喜欢拥有一个任何坏人都可以随心所欲关闭的服务,否则你必须设计它来承受比一般坏人能制造的更多的负载。

相关内容