私は今非常に混乱しています...
私は常にNginxを使用して静的ファイルを提供し、phpをApacheに渡しました。新しいボックス4GBRAMを構築し、mpm_preforkモジュールとNginX1.4.6を使用してApache2.4.7をインストールしました。必要なものをセットアップし、いくつかのabテストを実行することにしました。私は自分が見たものにショックを受けました。すべてのabテストで、ApacheはNginXとほぼ同じように実行しました。
これはApache2.4に適していますか? 2.4でのパフォーマンスのアップグレードについて読みましたが、過去にはNginXがApacheを破壊していました。私は何かが足りないのですか?
Apache:
Concurrency Level: 100
Time taken for tests: 1.157 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 279000 bytes
HTML transferred: 21000 bytes
Requests per second: 864.65 [#/sec] (mean)
Time per request: 115.654 [ms] (mean)
Time per request: 1.157 [ms] (mean, across all concurrent requests)
Transfer rate: 235.58 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 24 32 11.3 27 236
Processing: 27 78 15.6 77 380
Waiting: 26 78 15.6 77 379
Total: 55 109 21.1 104 404
Percentage of the requests served within a certain time (ms)
50% 104
66% 116
75% 121
80% 123
90% 129
95% 135
98% 162
99% 173
100% 404 (longest request)
NginX:
Concurrency Level: 100
Time taken for tests: 1.026 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 362000 bytes
HTML transferred: 21000 bytes
Requests per second: 975.00 [#/sec] (mean)
Time per request: 102.564 [ms] (mean)
Time per request: 1.026 [ms] (mean, across all concurrent requests)
Transfer rate: 344.68 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 24 33 14.4 29 223
Processing: 24 34 39.2 28 664
Waiting: 24 34 39.2 28 664
Total: 50 67 42.2 57 691
Percentage of the requests served within a certain time (ms)
50% 57
66% 72
75% 76
80% 77
90% 80
95% 86
98% 97
99% 240
100% 691 (longest request)
これは私のすべてのテストで一貫しています。このテストには、私のすべてのテストの中で最大のパフォーマンスギャップがあります。通常、ApacheはNginXの生のリクエスト/秒で約5%-10%少なくなっています。
Apache 2.4が実際にNginXに近い場合、リバースプロキシとそれに伴う他のすべての複雑さを設定することに意味がありません。
考え?
このようなテストでは、Apacheは、テストの開始後、テスト期間中100の子プロセスを存続させていると予想されます。その結果、のイベント駆動型単一プロセスモデルと同等のパフォーマンスを達成できます。 Nginx。 ApacheのStartServersとMinSpareServersを100に設定すると、ベンチマークのギャップをさらに埋めることができるかもしれません。同じ同時実行性を実現するために、すべてのhttpdプロセス全体のメモリ使用量が高くなると予想します。これは、使用可能なRAMと予想される最大同時実行性によって、大きな欠点になる場合とそうでない場合があります。