文章目录
  1. 1. 前言
  2. 2. 安装配置
  3. 3. 配置
  4. 4. 压测及结果

前言

当前web测试工具非常的多,CoolShell在2010年就总结过一篇10个免费的Web压力测试工具。其中我们最常见的有:

  1. http_load,单一进程运行,以并行复用的方式运行,用以测试web服务器的吞吐量与负载。一般简单的压力测试可以使用它
  2. Web Polygraph,很多公司的标配测试工具,个人使用与配置起来比较繁琐
  3. Apache JMeter,纯JAVA桌面的测试,习惯命令行了,因为不太喜欢
  4. LoadRunner,HP推出的一种预测系统行为和性能的负载测试工具,貌似使用的人很少
  5. WebBench,这个使用就最为简单的,比Apache自带的ab压力测试要好使一点
  6. ab,ApacheBench安装apache后就可以使用,不过测试效果一般

正好海哥推荐了Tsung,看起来很强大,推荐的链接是:http-load-generate文章写得很赞,Tsung的官网。因此决定试一下。

安装配置

安装比较简单,因为是基于erlang,图表是使用perl+gnuplot来生成。

1
yum -y install erlang perl perl-RRD-Simple.noarch perl-Log-Log4perl-RRDs.noarch gnuplot perl-Template-Toolkit

下载软件包并编译

1
2
3
4
wget http://tsung.erlang-projects.org/dist/tsung-1.5.1.tar.gz
tar zxvf tsung-1.5.1.tar.gz
cd tsung-1.5.1
./configure && make && make install

配置

/usr/share/doc/tsung/examples/目录有多个例子供参考,我们这里主要是使用http_simple.xml进行修改。

如果你是使用一对一进行测试,配置clients字段时配置一台主机即可。

Tsung默认配置文件路径为:~/.tsung/

创建它:mkdir ~/.tsung/

cp /usr/share/doc/tsung/examples/http_simple.xml ~/.tsung/tsung.xml

配置文件参考:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd">
<tsung loglevel="debug" version="1.0">

  <!-- Client side setup -->
  <clients>
    <client host="localhost" use_controller_vm="true"/>
  </clients>

  <!-- Server side setup -->
<servers>
  <server host="10.20.7.1" port="88" type="tcp"></server>
</servers>

  <load>
  <!-- several arrival phases can be set: for each phase, you can set
  the mean inter-arrival time between new clients and the phase
  duration -->
   <arrivalphase phase="1" duration="10" unit="minute">
     <users interarrival="2" unit="second"></users>
   </arrivalphase>
  </load>

 <sessions>
  <session name="http-example" probability="100" type="ts_http">

    <for from="1" to="20000" var="i">
<!--    <request> <http url="/" method="GET" version="1.1"></http> </request>
    <thinktime value="20" random="true"></thinktime>
-->

      <request> <http url="/" method="POST" version="1.1" contents_from_file="/tmp/myfile"></http> </request>
    </for>
  </session>
 </sessions>
</tsung>

配置文件说明:

  1. clients:客户端,如果是多台客户端同时压测的话,可以配置多个client的IP地址,然后同时记动tsung
  2. servers:被压测服务器配置,主要是填写IP和端口
  3. load:配置压测信息,如:10分钟之内,不限制并发用户以每2秒的速度并发请求。
  4. sessions:被压测服务器的具体配置信息,这个可以指定配置的URL,由于我这里有token等相关的变量,因此需要采用文件的形式,否则会提示配置文件错误。

更多配置文件参考可以看:官方用户手册。总体而言XML配置还是很简单的。

压测及结果

在命令行下使用如下命令开始压测:

1
2
3
# tsung start
Starting Tsung
"Log directory is: /root/.tsung/log/20140901-1040"

如果你没有在配置文件中写for循环,例如:

1
2
3
4
5
<session probability="100" name="ab" type="ts_http">
       <for from="1" to="10000000" var="i">
            <request> <http url="/test.txt" method="GET" version="1.1"/> </request>
        </for>
</session>

就需要使用ctrl+c 来中止压测。这个时候TSUNG不会生成图表,需要在/root/.tsung/log/20140901-1040目录运行/usr/lib/tsung/bin/tsung_stats.pl

这样就可以看到相关图表信息了。

1
2
3
4
5
6
7
8
9
10
11
Total 6980
drwxr-xr-x 2 root root    4096 Sep  1 11:10 data
-rw-r--r-- 1 root root    4512 Sep  1 11:10 gnuplot.log
drwxr-xr-x 2 root root    4096 Sep  1 11:10 gnuplot_scripts
-rw-r--r-- 1 root root    7333 Sep  1 11:10 graph.html
drwxr-xr-x 2 root root    4096 Sep  1 11:10 images
-rw-r--r-- 1 root root      62 Sep  1 10:58 match.log
-rw-r--r-- 1 root root    8204 Sep  1 11:10 report.html
-rw-r--r-- 1 root root 7065913 Sep  1 10:59 tsung_controller@localhost.log
-rw-r--r-- 1 root root   25001 Sep  1 11:04 tsung.log
-rw-r--r-- 1 root root     619 Sep  1 10:57 tsung.xml

在浏览器打到graph.html就可以看到如下图表:
tsung_graphs_report

查看report.html的图表如下:
tsung_stats_report

总体上来说,Tsung功能真的很强大,配置又简单,非常值得推荐。

文章目录
  1. 1. 前言
  2. 2. 安装配置
  3. 3. 配置
  4. 4. 压测及结果