ApacheとSquidのキャッシュ性能差
6月29日のエントリですこし触れましたが、6月の末にウェブの構成を少々変更しました。いままではApache+Zopeの二段階構成で、Apacheのmod_disk_cacheをつかってキャッシュを効かせていました。
+--------+ +-----+ | Apache |--| Zope | +--------+ +-----+
これを変更して、ApacheとZopeの間にSquidを入れてみました。直接外部からのHTTPリクエストをSquidでうけてもいいのですが、いままでの運用でいろいろとリバースプロクシとしての設定をApacheへいれているので、そこの設定はそのままにして、キャッシュ部分だけをSquidで代替。
+--------+ +------+ +------+ | Apache |---| Squid |--| Zope | +--------+ +------+ +------+
実際の構成はApache,Squidが二台のサーバでそれぞれ動作していて、ApacheからSquidへはmod_proxyのMemberで、またSquidからZopeへは間にApacheをいれてこれもまたmod_proxyで冗長化しています。一番後ろのZopeバックエンドインスタンスは10個。
上記の二つの構成でabでベンチマークをとった結果がこちら。ab -n 50 -c 50 http://www.expamble.com/index.htmlの結果です。いずれもちゃんとキャッシュがたまってから参照するように、3〜4回実行して最後のものをデータとして採用しています。
まず構成変更前。つまりApacheのキャッシュで運用しているとき。
Document Path: /index.html Document Length: 16599 bytes Concurrency Level: 50 Time taken for tests: 5.064 seconds Complete requests: 50 Failed requests: 0 Write errors: 0 Total transferred: 843300 bytes HTML transferred: 829950 bytes Requests per second: 9.87 [#/sec] (mean) っとTime per request: 5063.702 [ms] (mean) Time per request: 101.274 [ms] (mean, across all concurrent requests) Transfer rate: 162.63 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 5 13 2.8 14 14 Processing: 1424 4124 1080.1 4817 5049 Waiting: 1411 4110 1078.9 4804 5036 Total: 1428 4137 1081.3 4831 5063
次に構成変更後。つまりSquidのキャッシュで運用したとき。
Document Path: /index.html Document Length: 16599 bytes Concurrency Level: 50 Time taken for tests: 0.613 seconds Complete requests: 50 Failed requests: 0 Write errors: 0 Total transferred: 847550 bytes HTML transferred: 829950 bytes Requests per second: 81.56 [#/sec] (mean) Time per request: 613.024 [ms] (mean) Time per request: 12.260 [ms] (mean, across all concurrent requests) Transfer rate: 1350.17 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 482 484 3.8 484 499 Processing: 68 95 15.8 92 126 Waiting: 26 48 26.6 32 95 Total: 551 580 17.8 576 612
まず、体感的に全然ちがう。構成変更後の方がめちゃくちゃ早い。だって、ベンチマークにかかった時間が5秒と0.6秒ですから。
Time per requestの時間をみても、10倍以上の性能差。少々出来すぎなかんじがしますが。やっぱりキャッシュに関してはSquidの方が一日の長があるってところでしょうか。
ともあれ、ウェブがとっても早くなってとってもうれしい。