Tsung is an open-source multi-protocol distributed load testing tool. It can be used to stress HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP and Jabber/XMPP servers. Tsung is a free software released under the GPLv2 license. That we like sir!
Okay, http is very common and let's pick elasticsearch 1.6.0 for this test. You can download elasticsearch from elastic.co , extract the content and just launch from command line. See below.
user@localhost:~/Desktop/elasticsearch-1.6.0/bin$ ./elasticsearch
[2015-07-04 09:46:10,756][INFO ][node ] [Futurist] version[1.6.0], pid[16404], build[cdd3ac4/2015-06-09T13:36:34Z]
[2015-07-04 09:46:10,757][INFO ][node ] [Futurist] initializing ...
[2015-07-04 09:46:10,762][INFO ][plugins ] [Futurist] loaded [], sites []
[2015-07-04 09:46:10,863][INFO ][env ] [Futurist] using [1] data paths, mounts [[/ (/dev/sda5)]], net usable_space [15.4gb], net total_space [215.2gb], types [ext3]
[2015-07-04 09:46:13,833][INFO ][node ] [Futurist] initialized
[2015-07-04 09:46:13,834][INFO ][node ] [Futurist] starting ...
[2015-07-04 09:46:13,960][INFO ][transport ] [Futurist] bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/192.168.1.2:9300]}
[2015-07-04 09:46:13,978][INFO ][discovery ] [Futurist] elasticsearch/eSG-tzQuQdCz5QKIomYm5Q
[2015-07-04 09:46:17,774][INFO ][cluster.service ] [Futurist] new_master [Futurist][eSG-tzQuQdCz5QKIomYm5Q][VerticalHorizon][inet[/192.168.1.2:9300]], reason: zen-disco-join (elected_as_master)
[2015-07-04 09:46:17,809][INFO ][http ] [Futurist] bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/192.168.1.2:9200]}
[2015-07-04 09:46:17,810][INFO ][node ] [Futurist] started
[2015-07-04 09:46:17,934][INFO ][gateway ] [Futurist] recovered [0] indices into cluster_state
A single node elasticsearch with no index nor mapping. We just wanna quickly use elasticsearch as software under test.
Next, let's install tsung. If you are using debian, that's a good news! See below.
$ sudo apt-get install tsung
easy peasy. Okay, now let's create a directory tsung in user home directory. Then create two files. See below.
user@localhost:~$ mkdir tsung
user@localhost:~$ cd tsung
user@localhost:~/tsung$ cat query.json
{"size":10,"query":{"filtered":{"query":{"match_all":{}}}}}
$ cat tsung.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd" []>
<tsung loglevel="info">
<clients>
<client host="localhost" use_controller_vm="true" cpu="1" maxusers="30000000"/>
</clients>
<servers>
<server host="localhost" port="9200" type="tcp"/>
</servers>
<load>
<arrivalphase phase="1" duration="1" unit="minute">
<users arrivalrate="5" unit="second"/>
</arrivalphase>
</load>
<sessions>
<session name="es_load" weight="1" type="ts_http">
<request>
<http url="/myindex/_search"
method="GET"
contents_from_file="/home/user/tsung/query.json" />
</request>
</session>
</sessions>
</tsung>
Now we are ready to do the load test, you can start tsung with the configuration descriptor. See below.
user@localhost:~/tsung$ tsung -f /home/user/tsung/tsung.xml start
Starting Tsung
"Log directory is: /home/user/.tsung/log/20150704-1104"
user@localhost:~/tsung$
Give a few minute for it to run and you should be able to check the log output. Once it is done, then let's generate the graph.
user@localhost:~/tsung$ ls
total 8.0K
-rw-r--r-- 1 user user 60 Jul 4 09:33 query.json
-rw-r--r-- 1 user user 724 Jul 4 11:04 tsung.xml
user@localhost:~/tsung$ mkdir show_me_da_graph
user@localhost:~/tsung$ cd show_me_da_graph/
user@localhost:~/tsung/show_me_da_graph$ /usr/lib/tsung/bin/tsung_stats.pl --stats /home/user/.tsung/log/20150704-1104/tsung.log
creating subdirectory data
creating subdirectory gnuplot_scripts
creating subdirectory images
warn, last interval (5) not equal to the first, use the first one (10)
No data for Bosh
No data for Match
No data for Event
No data for Async
No data for Errors
user@localhost:~/tsung/show_me_da_graph$ ls
total 32K
drwxr-xr-x 2 user user 4.0K Jul 4 11:07 data
drwxr-xr-x 2 user user 4.0K Jul 4 11:07 gnuplot_scripts
drwxr-xr-x 2 user user 4.0K Jul 4 11:07 images
-rw-r--r-- 1 user user 3.7K Jul 4 11:07 gnuplot.log
-rw-r--r-- 1 user user 7.9K Jul 4 11:07 report.html
-rw-r--r-- 1 user user 7.1K Jul 4 11:07 graph.html
user@localhost:~/tsung/show_me_da_graph$ chromium graph.html
[18334:18334:0704/110724:ERROR:nss_util.cc(819)] After loading Root Certs, loaded==false: NSS error code: -8018
Created new window in existing browser session.
Now look at the beautiful output! If you don't have chromium browser, copy this link and paste into your browser url. file:///home/user/tsung/show_me_da_graph/graph.html . Change the link where appropriately in your workstation. See screenshow below.
If tsung is what you like, consider going into details of tsung. Tsung provide a comprehensive documentation! That's it for this article, I hope you learn something.
No comments:
Post a Comment