ab
とかwrk
とか試したけども、簡易的なものじゃなくてもっとちゃんとやりたい。
でもJMeter
はGUIメインだから使いにくい。
と思って探したらTsung
というのがあるらしいので使ってみた。
# apt-cache policy tsung
tsung:
インストールされているバージョン: (なし)
候補: 1.5.1-1
バージョンテーブル:
1.5.1-1 0
500 http://ftp.jp.debian.org/debian/ jessie/main amd64 Packages
# apt-get install tsung
依存パッケージがめっちゃインストールされる。元々erlang
入れてたよなーと思ったら、今使ってるのは公式パッケージじゃなくてerlang-solutionsのやつだった。なんか混ざるっぽいけどまあいい。
インストールしたら、おもむろに
tsung-recorder start
としてレコーダーを起動。
そして、Firefoxを立ち上げてプロキシにlocalhost:8090を設定する。
Chromeはシステム共通のプロキシ設定を使うようだったので普段使わないFirefoxで。
https://example.com/
への接続は http://-example.com/
とURLを入力するらしい。
一通り巡回したら
tsung-recorder stop
してブラウザを終了。
設定ファイルをコピーして編集する。
Facebookのプラグインとかアフィリエイトへのリクエストも混じっているので削除する。
これターゲットのサーバーを指定するから削除しなくても大丈夫?まだ詳しく見てない。
あとCONNECT
メソッドなんかも削除する。
それから
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd">
<tsung loglevel="notice" version="1.0">
<clients>
<client host="localhost" use_controller_vm="true"/>
</clients>
<servers>
<server host="example.com" port="443" type="tcp"></server>
</servers>
<load>
<arrivalphase phase="1" duration="1" unit="minute">
<users arrivalrate="5" maxnumber="50" unit="second"></users>
</arrivalphase>
</load>
<options>
<option type="ts_http" name="user_agent">
<user_agent probability="50">Tsung1 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.33 Safari/537.36</user_agent>
<user_agent probability="50">Tsung2 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.33 Safari/537.36</user_agent>
</option>
</options>
<sessions>
...ここに <session>
</sessions>
</tsung>
のような感じで記録した<session>
を挟む。
そして
tsung -f example.com_phase1.xml start
のようにベンチマーク開始。念の為ターゲットのサーバーで負荷やログをチェックしつつ、終わったら
mkdir 20161117-1402
cd 20161117-1402
/usr/lib/tsung/bin/tsung_stats.pl --stats ~/.tsung/log/20161117-1402/tsung.log
レポートを出力。
で、use_controller_vm="true"
を外して複数クライアントにした肝心の分散テストができない…。
http://tsung.erlang-projects.org/user_manual/faq.html
ここの最初の説明にあるerlang
でslave
が無理ぽい。
erl
コマンド使ったことないからどうやって抜けるかも分からなかったし。erlang
むず。
まあクライアント1台ならテストできるようになったので今日はここまで。