編集
VirtualBox で OS を実行することが問題でした。OS をディスク上でネイティブにするとすぐに、パフォーマンスの向上が見られました。
オリジナル
多くの人が HAProxy+nginx+PHP-FPM のために Apache+mod_php を捨てることを勧めていると読んだことがあります。より効率的なセットアップであることを確認しようとしていますが、人々が説明する結果が表示されていません. siege と ab (Apache Benchmark) の両方が、同時接続数に関係なく Apache が 1 秒あたりの応答を向上させ、より多くの接続をサポートできることを示しています。
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 は常により多くの要求をより効率的に処理できます。
スケーリングに最も適したセットアップが、より効率的でないセットアップよりも優れたパフォーマンスを発揮するように、実行できる他の最適化はありますか?