LoginSignup
59
60

More than 5 years have passed since last update.

Tsung で負荷試験

Posted at

Tsung を使用して 3 台のサーバから Web サーバに GET リクエストを送ってみました

Tsung の実行環境の準備

Erlang R16B03-1 をインストールしておきます

Tsung のインストール

3 台のサーバそれぞれに下記の手順で Tsung をインストールします

$ sudo aptitude -y install autoconf gnuplot libtemplate-perl
$ git clone https://github.com/processone/tsung.git
$ cd tsung
$ ./configure
$ make && sudo make install

/etc/environment に Erlang の PATH を追加する

slave の Erlang VM を実行するために、下記のファイルの PATH に Erlang の PATH を追加しておきます

/etc/environment

hosts の設定

次に、DNS サーバ、または、それぞれの /etc/hosts にホスト名と IP アドレスを書いおきます

今回は、手元の環境に Unbound がありましたので、下記を追記しました

    local-data: "ubuntu1 A 192.168.1.135"
    local-data: "ubuntu2 A 192.168.1.131"
    local-data: "ubuntu3 A 192.168.1.132"
    local-data: "ubuntu4 A 192.168.1.133"

ssh の準備

master の Tsung から slave の Tsung を実行する際には、ssh でアクセスします

そのため、master のサーバから slave のサーバへ、パスワード無しでログインできるようにしておきます

master で passphrase 無しの鍵を作成しておくか、または、ssh-agent を実行したうえで試験をおこないます

設定ファイルの準備

git clone したディレクトリの tsung/examples ディレクトリ内に設定ファイルの例が用意されていますので、
ドキュメントとこの設定例を参考にして負荷試験の内容を XML ファイルに書いていきます

下記の設定ファイルを準備しました

http.xml
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/opt/erlang/R16B03-1/share/tsung/tsung-1.0.dtd">
<tsung loglevel="notice" version="1.0">
  <clients>
    <client host="ubuntu1" use_controller_vm="true" />
    <client host="ubuntu2" />
    <client host="ubuntu3" />
  </clients>
  <servers>
    <server host="ubuntu4" port="80" type="tcp"></server>
  </servers>
  <load>
   <arrivalphase phase="1" duration="1" unit="minute">
     <users interarrival="0.1" unit="second"></users>
   </arrivalphase>
  </load>
  <options>
    <option type="ts_http" name="user_agent">
    <user_agent probability="100">Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36</user_agent>
   </option>
  </options>
  <sessions>
    <session name="http-example" probability="100" type="ts_http">
      <request> <http url="/index.html" method="GET" version="1.1" ></http> </request>
    </session>
  </sessions>
</tsung>

ホスト ubuntu1, ubuntu2, ubuntu3 から ubuntu4 に GET リクエストを送信します
ubuntu4 のサーバには Apache2 をインストールしてあります

実行

master のサーバ上で Tsung を実行します

$ mkdir log
$ tsung -l log -f http.xml start

access.log で確認

ログから、3 つの Tsung からの GET リクエストを処理していることが確認できました

192.168.1.131 - - [13/Apr/2014:12:09:35 +0000] "GET /index.html HTTP/1.1" 200 427 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36"
192.168.1.131 - - [13/Apr/2014:12:09:35 +0000] "GET /index.html HTTP/1.1" 200 427 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36"
192.168.1.135 - - [13/Apr/2014:12:09:35 +0000] "GET /index.html HTTP/1.1" 200 427 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36"
192.168.1.135 - - [13/Apr/2014:12:09:35 +0000] "GET /index.html HTTP/1.1" 200 427 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36"
192.168.1.135 - - [13/Apr/2014:12:09:35 +0000] "GET /index.html HTTP/1.1" 200 427 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36"
192.168.1.132 - - [13/Apr/2014:12:09:36 +0000] "GET /index.html HTTP/1.1" 200 427 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36"

レポートの作成

Tsung の tsung_stats.pl を使用してレポートを作成します

tsung_stats.pl は /lib/tsung/bin/ にあります

$ tsung_stats.pl --stats ./log/20140413-1208/tsung.log

report.html

スクリーンショット 2014-04-13 22.29.45.png

graph.html

スクリーンショット 2014-04-13 22.29.29.png

参考

59
60
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
59
60