编辑
在 VirtualBox 上运行我的操作系统是个问题。一旦我将我的操作系统设置为磁盘上的本机操作系统,我就能够看到性能提升。
原来的
我读过很多人建议放弃 Apache+mod_php 而使用 HAProxy+nginx+PHP-FPM。我正在尝试验证它是否是更有效的设置,但没有看到人们描述的结果。siege 和 ab (Apache Benchmark) 都表明 Apache 在任何数量的并发连接下每秒都能提供更好的响应,并且可以支持更多的连接。
我在 VirtualBox 上运行 Ubuntu 11.04 服务器。它有 10 GB 的空间和 1,344 兆的内存。我使用 apt-get 安装上述程序。以下是相关的配置文件,其中仅包含重要部分。
haproxy.cfg
global
maxconn 4096
user haproxy
group haproxy
daemon
stats socket /var/run/haproxy.sock mode 0600 level admin
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen tcpcluster *:80
mode tcp
option tcplog
balance roundrobin
server tcp01 192.168.1.199:8080 check
nginx.conf
worker_processes 2;
events {
worker_connections 768;
}
www.conf
pm = dynamic
pm.max_children = 10
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 500
apache.conf
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 10
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 10
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_event_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 10
MaxRequestsPerChild 0
</IfModule>
鉴于 PHP-FPM 和 Apache 都最多有 10 个孩子,我希望任何速度优势都是可见的。在我运行的每个测试中(在我运行测试之前总是等到负载为 0.01),Apache 总是能够更有效地处理更多请求。
是否可以进行一些其他优化,以便最适合扩展的设置将优于不应该更有效的设置?