2014年6月10日火曜日

squidに負荷をかけてみる(abコマンドでプロキシサーバの負荷テストをしたい)

squidでリバースプロキシ(httpアクセラレータ)+透過プロキシを立てている。
最近キャッシュの量とかメモリ関係をいじったので、果たして使い物になるのだろうか、ということを確かめたかった。

プロキシの負荷テストに、apache同梱のabコマンドが使えると言うことを目にしたので、早速試す。
virtualboxのcentosにapacheをyumでインストール
yum install httpd

その後、squidの入ったサーバに対し、無線LAN経由で早速試したが書式に困る。
-Xでプロキシ指定と書かれている
http://www.omnioo.com/record/ubuntudebian/web_apache_ab_command/
が、何故か通らない。
と思ったらそりゃそうだ。透過プロキシなんだもん。
普通にアクセスしてやればいいのではないか。
で、普通にアクセスすると、やっぱり通らない。
首を捻りながら他の書式を参考に、接頭として「http://」、接尾に「/」を入れると通る。
ううむ・・・。

ということで、通った書式は
ab -c 100 -n 10000 http://192.168.168.168/

192.168.168.168は、squidプロキシサーバのIPアドレス
-cは同時接続数、-nは総リクエスト数

-cの値を400でやってみた時のログが下。500にするとfaildがかなり出たのでそこまでは使えないんだろうけど、
400台からリクエスト受けることなんて無いので、十分満足な結果。また、総リクエスト数は10,000だろうが100,000だろうがエラーは出なかった。

# ab -c 400 -n 10000 http://192.168.168.168/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.168.168 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests


Server Software:        squid/3.1.10
Server Hostname:        192.168.168.168
Server Port:            80

Document Path:          /
Document Length:        3149 bytes

Concurrency Level:      400
Time taken for tests:   21.348 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Non-2xx responses:      10065
Total transferred:      35295756 bytes
HTML transferred:       31642161 bytes
Requests per second:    468.43 [#/sec] (mean)
Time per request:       853.912 [ms] (mean)
Time per request:       2.135 [ms] (mean, across all concurrent requests)
Transfer rate:          1614.62 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        2  248 621.4     60    4298
Processing:   106  533 1064.4    215   11993
Waiting:      104  357 591.2    197    9319
Total:        113  781 1367.8    294   12831

Percentage of the requests served within a certain time (ms)
  50%    294
  66%    592
  75%    806
  80%    975
  90%   1493
  95%   3182
  98%   4819
  99%   6595
 100%  12831 (longest request)

topで観察していると、cpuは40%から50%ぐらい使っている。
システム的にはceleron1037uでメモリ8GB。
squidのキャッシュ設定は
cache_dir ufs /var/spool/squid/cache_l 8192 16 256
maximum_object_size 131072 KB
cache_mem 1024 MB

追記
http://okwave.jp/qa/q9003206.html
で貼られていたので・・・

ベンダーさんの100台まで発言は見過ごせませんね・・・。
僕の稼働実績としては200台近くまでありますよ。
スループットも特に問題になったことはありません。
忌々しいchache.google.comにどれだけ接続されようとも・・・!
因みにその時は、core2quadで8GB環境、NICは4ポートintelでした。
瞬間同時接続数(よーいどんで一気に接続する)は見てませんが、上記のテストを信じるのであれば、400台近くまではいけるはずです。
しかもセレロン(ニアリーcore2duo)8GBRAM環境でこれなので、
ベンダーさんがきちんと組めば、普通に組めるはずです。
是非このベンダーさんには、論拠をご教示頂きたいですね。

あと質問者さんが言っているファイルディスクリプタのことは
http://takeda-h.hatenablog.com/entry/2014/12/09/005533

http://d.hatena.ne.jp/rougeref/20130424

みたいな所に書いてあります。
因みに1037Uのこのsquidは、ファイルディスクリプタ弄ってません。で、常時90台程度接続のhttpアクセラレータです。

参考になれば。

0 件のコメント:

コメントを投稿