LoginSignup
2
2

More than 5 years have passed since last update.

TsungでWebの負荷テストのメモ

Posted at

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
ここの最初の説明にあるerlangslaveが無理ぽい。
erlコマンド使ったことないからどうやって抜けるかも分からなかったし。erlangむず。

まあクライアント1台ならテストできるようになったので今日はここまで。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2