漫游测试之性能测试(3.4、Tsung的介绍 一)

tsung是erlang开发的一个开源的多协议分布式负载测试工具,它能用来压力测试HTTP、WebDAV、SOAP、PostgreSQL、MySQL、LDAP和Jabber/XMPP的服务器的性能。其区别于其它性能测试工具最大特点在于高性能。利用其多节点集群能力,相同的机器配置相对于其它性能测试工具可以制造更高的并发,分布式集群能够提供很好的容错能力、和数据一致性,能够支撑大概100万的性能测试。

其缺点是,基于XML的脚本编辑模式,在调试上面较困难一些,另外基于erlang语言的扩展在不熟悉erlang语言的情况下还是比较困难的。个人觉得,该工具非常适合海量并发,具有一定业务逻辑的接口方面的性能测试,适合海量并发情况下求一些接口的TPS的处理。

3.4.1.Tsung的安装方法

安装erlang语言依赖

下载源码进行安装

wget http://www.erlang.org/download/otp_src_20.2.tar.gz

./configure

make && make install

安装成功

漫游测试之性能测试(3.4、Tsung的介绍 一)

Tsung安装

wget http://tsung.erlang-projects.org/dist/tsung-1.7.0.tar.gz

./configure

安装成功

漫游测试之性能测试(3.4、Tsung的介绍 一)

3.4.2.Tsung的全局配置

client用来配置压力机的地址(同样需要安装tsung,启动slave)。

<clients>

  <client host="localhost" use_controller_vm="true"/></clients>

<servers>

  <server host="192.168.1.1" port="80" type="tcp"></server></servers>

server用来配置测试的地址,可以根据权重,同时对多个服务器地址进行压力测试。这一点,也是该工具的特色,其它工具是没有的。

<servers>

  <server host="server1" port="80" type="tcp" weight="4"></server>

  <server host="server2" port="80" type="tcp" weight="1"></server></servers>

 

配置SSL是否启用,并且指定SSL版本。

<option name="ssl_reuse_sessions" value="false"/>

<option name="ssl_versions" value="'tlsv1.2'"/>

 

配置缓冲区大小,默认是32K。

<option name="tcp_snd_buffer" value="16384"></option>

<option name="tcp_rcv_buffer" value="16384"></option>

<option name="udp_snd_buffer" value="16384"></option>

<option name="udp_rcv_buffer" value="16384"></option>

 

设置连接超时时间。

<option name="connect_timeout" value="5000" />

 

设置HTTP请求访问时所使用的浏览器的分配。

<option type="ts_http" name="user_agent">

  <user_agent probability="80">

     Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Galeon/1.3.21

  </user_agent>

  <user_agent probability="20">

    Mozilla/5.0 (Windows; U; Windows NT 5.2; fr-FR; rv:1.7.8) Gecko/20050511 Firefox/1.0.4

  </user_agent></option>

 

3.4.3.Tsung的虚拟IP配置

Host下同绑定了多个IP供本地压力机使用(关于配置本机多IP的方法,请利用搜索引擎)。

<clients>

  <client host="louxor" weight="1" maxusers="800">

    <ip value="10.9.195.12"></ip>

    <ip value="10.9.195.13"></ip>

  </client>

  <client host="memphis" weight="3" maxusers="600" cpu="2"/></clients>

<servers>

  <server host="10.9.195.1" port="8080" type="tcp"></server></servers>

 

可以直接使用一段IP地址来做为压力机或者服务器地址

<iprange version="v4" value="172.28.1-20.0-254"/>

3.4.4.Tsung的场景配置

第1个阶段,每2秒加载1个用户,持续运行10分钟后加载第2阶段,第2阶段每秒加载1个用户持续10分钟后加载第3阶段,第3阶段每隔0.1秒加载1个用户持续10分钟。

<load>

  <arrivalphase phase="1" duration="10" unit="minute">

    <users interarrival="2" unit="second"></users>

  </arrivalphase>

  <arrivalphase phase="2" duration="10" unit="minute">

    <users interarrival="1" unit="second"></users>

  </arrivalphase>

  <arrivalphase phase="3" duration="10" unit="minute">

    <users interarrival="0.1" unit="second"></users>

  </arrivalphase>

</load>

 

注意,单节点默认使用800个Vuser,最大内核可以支持3万个Vuser。

漫游测试之性能测试(3.4、Tsung的介绍 一)

增加maxnumber的描述,可以设置每个阶段的最大并发数。

<arrivalphase phase="1" duration="10" unit="minute">

  <users maxnumber="100" arrivalrate="10" unit="second"></users>

</arrivalphase>

<arrivalphase phase="2" duration="10" unit="minute">

  <users maxnumber="200" arrivalrate="10" unit="second"></users>

</arrivalphase>

 

增加session_setup的probability的描述,可以按场景的比例进行设置。

<arrivalphase phase="3" duration="1" unit="minute">

  <session_setup name="http_test_1" probability="80"/>

  <session_setup name="fake"        probability="20"/>

  <users  interarrival="1" unit="second"/>

</arrivalphase>

 

在上一个阶段并发用户完成后才能启动下一个阶段的并发数

<arrivalphase phase="1" duration="10" unit="minute" wait_all_sessions_end="true">

  <users  interarrival="1" unit="second"/>

</arrivalphase>

<arrivalphase phase="2" duration="10" unit="minute">

  <users  interarrival="5" unit="second"/>

</arrivalphase>