修改
在VirtualBox上运行我的操作系统是个问题。一旦我将我的操作系统作为磁盘上的本机操作系统,我就能看到性能提升。
原始
我读过很多人建议为HAProxy + nginx + PHP-FPM抛弃Apache + mod_php。我正在尝试验证它是一个更有效的设置,但我没有看到人们描述的结果。 siege和ab(Apache Benchmark)都表明Apache在任何数量的并发连接中每秒都能提供更好的响应,并且可以支持更多的连接。
我在VirtualBox上运行Ubuntu 11.04服务器。它有10演出空间和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总是能够更有效地处理更多请求。
是否还可以进行其他一些优化,以便最适合扩展的设置优于不应该更高效的设置?
答案 0 :(得分:2)
使用haproxy作为连接集中器:使用“mode http”而不是“mode tcp”,使用“option http-server-close”并将服务器maxconn值设置为远低于worker连接值。您应该跨越这样一个点,即较低的并发性带来更多的性能,同时整个链中的RAM使用率更低,缓存效率更高。
顺便说一句,我们谈论的数字是多少?他们每秒测量数百或数千个请求吗?因为很明显,应用服务器只会在较高负载下产生真正的差异。显然,如果应用程序运行速度非常慢,则在更换服务器时没有理由看到差异。