Help us understand the problem. What is going on with this article?

Tsung で負荷試験

More than 5 years have passed since last update.

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

参考

Hexa
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした