SNSのOpenSocialアプリ開発のためにちょいと負荷テストをしなくてはならなくなった。
で、以前もちょっと書いたsiegeを使うことにした。Jmeterについてはほとんど使ったことは無いけど、シンプルでsiegeを気に入っている。で今負荷中でやることが無いので、
使い方を書いていなかったので、ここに書いておきます。多分あってますってくらいに思ってください。
-c 同時アクセスユーザー数
-i アクセスをランダムに行う(urlのリストからランダムに抽出される)
-b 休憩無し
-r 何回テストを繰り返すか
-f urlが1行づつリストされたファイルを指定
例えばこんな風に呼び出します。
siege -c10000 -r100 -b -i -f urls2.txt
ちなみにこのようにしたところ同時接続1万ということなので、メモリが足りないとのことで却下されてしましました。それで
siege -c1000 -r100 -b -i -f urls2.txt
でやってみると動きますがサーバーが応答失敗するケースが多発。
実は今やっているのは、DBの数値の位置情報を地図としてレンダリングする機能をテストしているので重いのは当たり前なんですが。
んで
siege -c100 -r100 -b -i -f urls2.txt
でやってみています。SNS事業者のテストもこれで良いみたい。しかしサーバーがおそすぎて話にならん。1ファイル30秒もかかってる。お話にならないレベル。
ちなみにアクセスしているのはこんなURLです。
http://m.2cho3.jp/map.cgi?scale=13000&lon=139.04620695113172&lat=36.553983681510815&w=480&h=480
このlon latのパラメータだけが異なるURLが10000くらいurls2.txtには書かれています。その中からsiegeさんがランダムにピックアップしてそれをグルグルまわしているわけです。しかし遅い。モーレツに遅い。
あと参考までにこんな風に呼び出したりして以前負荷テストしていました。
nohup siege -c10 -r200000 -b -i -f /home/admin/test/assemble.txt > /dev/null 2> err_assemble.log < /dev/null &
nohup siege -c10 -r200000 -d1 -i -f /home/admin/test/try.ab > /dev/null 2> err_try.log < /dev/null &
この時テストしていたのはFlashの生成サーバーで、
siege -c100 -r100 -b -i
なら(もちろん条件によりますが)大抵10秒以下で処理できると思います。すんません20秒くらいはかかります。多分。
と書いているうちにマップサーバーのレンダリング負荷テストが終わってレポートが出ました。
done.
Transactions: 9383 hits
Availability: 93.83 %
Elapsed time: 2305.08 secs
Data transferred: 22.09 MB
Response time: 22.30 secs
Transaction rate: 4.07 trans/sec
Throughput: 0.01 MB/sec
Concurrency: 90.79
Successful transactions: 9383
Failed transactions: 617
Longest transaction: 50.90
Shortest transaction: 0.17
とのこと
Availability: 93.83 %
Response time: 22.30 secs
これは酷い。
siege -c10 -r100 -b -i -f urls2.txt
では
Transactions: 1000 hits
Availability: 100.00 %
Elapsed time: 234.57 secs
Data transferred: 2.39 MB
Response time: 2.32 secs
Transaction rate: 4.26 trans/sec
Throughput: 0.01 MB/sec
Concurrency: 9.91
Successful transactions: 1000
Failed transactions: 0
Longest transaction: 4.68
Shortest transaction: 0.78
EC2の方で同じテストした結果
done.
Transactions: 1000 hits
Availability: 100.00 %
Elapsed time: 532.44 secs
Data transferred: 2.25 MB
Response time: 5.24 secs
Transaction rate: 1.88 trans/sec
Throughput: 0.00 MB/sec
Concurrency: 9.83
Successful transactions: 1000
Failed transactions: 0
Longest transaction: 17.04
Shortest transaction: 0.92
遅ー。でもtopで見るとCPUが30%くらいしか使われていない。なので、テスト方法変えないとダメか。
で、もっと負荷をあげてみたけどやっぱり30%あたり。
http://d.hatena.ne.jp/rx7/searchdiary?word=stress&.submit=%B8%A1%BA%F7&type=detail
を見てstressかけてみても50%を超える事が無い。VMだからなのかなあと思ってちょっと検索したら、
http://www.axibase.com/cloud/2010/07/22/ec2-monitoring-the-case-of-stolen-cpu/
ということでstorenされているcpuもtopで確認できるのだと知りました。
皆様本当にありがとうございます。
コメント