文档章节

压力测试工具tsung用法简介

今幕明
 今幕明
发布于 2014/06/23 17:19
字数 1213
阅读 238
收藏 13

本文为原创,转载请注明出处

tsung是用erlang开发的一款简单易用的压力测试工具,可以生成成千上万的用户模拟对服务器进行访问。目前对tsung的理解也仅限于会简单的应用,其内部结构没有深入研究过。

1、安装

tsung 是用erlang编写的,所以首先安装erlang的运行环境。然后就是按照tsung的官网下载编译tsung。需要注意的是,生成测试报告需要 gnuplot和perl的支持,其中perl需要安装Template扩展。具体安装过程请看相关手册或者google之。

2、配置文件

默认情况下,tsung会加载配置文件

~/.tsung/tsung.xml

将tsung自带的http的配置示例

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

复制到该位置,修改一下即可运行。一个最简单的配置文件:

<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd">
<tsung loglevel="notice" version="1.0">
  <clients>
    <client host="localhost" use_controller_vm="true" maxusers="100000"/>
  </clients>
<servers>
  <server host="172.16.33.203" port="10013" type="tcp"></server>
</servers>

  <monitoring>
    <monitor host="myserver" type="snmp"></monitor>
  </monitoring>

  <load>
  <arrivalphase phase="1" duration="1" unit="minute">
     <users interarrival="0.01" unit="second"></users>
  </arrivalphase>
  </load>

 <sessions>
  <session name="http-example" probability="100" type="ts_http">
    <request>
        <http url="/a.php" method="GET" version="1.1"></http>
    </request>
    <!--<thinktime value="1" random="true"></thinktime>-->
    <request>
        <http url="/b.php" method="GET" version="1.1"></http>
    </request>
  </session>
 </sessions>
</tsung>

clients:用户产生的方式

servers:被测试的服务器

monitoring:通过一些协议如snmp监控服务器的状态(本人没有使用过)

load:压力配置

sessions:用户所产生的会话

运行命令

tsung start

压力测试开始,tsung输出一段提示,告知测试记录的位置,可以使用命令

tsung status

查看tsung当前的状态

3、压力的生成原理

(本人不是太透彻,大家凑合看吧)

tsung 在运行时,可以由多个虚拟机组成,每个虚拟机可以模拟多个ip地址(测试负载均衡时),每个虚拟机下有很多用户,每个用户可以产生很多session,一 个session由很多request组成,这是一个很典型的树状结构。tsung使用这个树状结构来生成压力。

看client的配置,maxusers指明这个client机器上最多生成多少用户,如果use_controller_vm为true的话,当用户数达到maxusers,tsung会自动生成新的VM(好像需要登录系统的ssh帐号)。

生成用户之后,当然是让这些用户访问被测试的服务器,访问的负载由load段配置。访问可以配置多个阶段,在此建设只有一个阶段。配置

 <users interarrival="0.01" unit="second"></users>
表示每0.01秒产生一个用户,产生的用户按照session的配置顺序执行session中的request,如何计算RPS,有一个公式:

RPS = 每个session的请求数 / interarrival 

以上面的配置为例,RPS = 2 / 0.01 == 200

负载的另外一种配置方式是用户到达率,具体看官方的手册。

4、生成测试报告

默认安装时,perl文件/usr/lib/tsung/tsung_status.pl用来生成状态报告。

进 入测试日志的路径,如/home/iamlaobie/.tsung/log/20110528-21:07,运行上面的脚本,运行完成之后,在该路径下 生成report.html,如果在linux上不方便查看,可将该路径打包下载本地用浏览器打开report.html查看。

报告中的几个相似概念:

request:类似用php函数file_get_contents请求一个url地址的相应时间

page:一组没有间隔的request请求的时间总和,相当于打开一个页面,除了加载页面的html外,还要加载img、css、js等

session:一个用户从第一个请求开始到最后一个请求结束的时间总和

5、其他

5.1、 tsung-recorder,通过它可以录制用户的访问过程,然后用tsung回放,让压力测试更逼真。实际上recorder是一个http代理,启 动recorder后,将浏览器的代理指向它,默认端口是8090,用户只需要用浏览器浏览被测试的服务器,tsung-recorder会将这个过程写 入到配置文件中。

5.2、添加请求的变量,在压力测试的过程中,可能需要手机号,用户ID、股票代码之类的变量,tsung支持文件随机读取,可以将这些参数按照一定的规则写入文件,在配置文件中定义读取的规则,就能在请求时拿到文件的内容。定义一个文件服务:

 <options>
       <option name="file_server" id="file1" value="/tmp/x.txt"/>
    </options>
读取,在session段中加入

 <setdynvars sourcetype="file" fileid="file1" delimiter=";" order="random">
               <var name="username" />

  </setdynvars>

<request>
<http url="/b.php?username=%%_username%%" method="GET" version="1.1"></http>
</request>

除了从文件读取,也可以随机产生

      <setdynvars sourcetype="random_string" length="13">
        <var name="rndstring1" />
      </setdynvars>

      <setdynvars sourcetype="random_number" start="3" end="32">
        <var name="rndint" />
      </setdynvars>


本文转载自:http://tiandiou.blog.163.com/blog/static/2355668220115392725727/

共有 人打赏支持
今幕明
粉丝 46
博文 224
码字总数 39350
作品 0
朝阳
程序员
私信 提问
压力测试工具tsung用法简介

tsung是用erlang开发的一款简单易用的压力测试工具,可以生成成千上万的用户模拟对服务器进行访问。目前对tsung的理解也仅限于会简单的应用,其内部结构没有深入研究过。 1、安装 tsung是用e...

今幕明
2014/07/26
0
0
Tsung 1.4.1 发布,压力测试工具

Tsung 是一个压力测试工具,可以测试包括HTTP, WebDAV, PostgreSQL, MySQL, LDAP, and XMPP/Jabber等服务器。针对 HTTP 测试,Tsung 支持 HTTP 1.0/1.1 ,包含一个代理模式的会话记录、支持 ...

小卒过河
2011/09/14
886
0
Tsung 1.5.0 发布,压力测试工具

Tsung 1.5.0 增加对 WebSocket 和 BOSH 的支持,包含一个体验的 AMQP 插件和很多其他 bug 修复和改进。 Tsung 是一个压力测试工具,可以测试包括HTTP, WebDAV, PostgreSQL, MySQL, LDAP, an...

oschina
2013/05/28
2.6K
5
压力测试工具--Tsung

Tsung 是一个压力测试工具,可以测试包括HTTP, WebDAV, PostgreSQL, MySQL, LDAP, and XMPP/Jabber等服务器。针对 HTTP 测试,Tsung 支持 HTTP 1.0/1.1 ,包含一个代理模式的会话记录、支持 ...

匿名
2008/09/20
19.9K
0
Tsung压力测试工具的搭建和使用,配置。

具体Tsung工具的应用是,模拟用户对某平台的访问,其中可以产生自定义数量的虚拟用户,当Tsung start启动后,虚拟用户产生,模拟访问测试的平台,得到压力数据,在平台生产和设计过程中查漏补...

射手Mr吴
2016/02/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
25
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
31
0
MYSQL索引

索引的作用 索引类似书籍目录,查找数据,先查找目录,定位页码 性能影响 索引能大大减少查询数据时需要扫描的数据量,提高查询速度, 避免排序和使用临时表 将随机I/O变顺序I/O 降低写速度,占用磁...

关元
昨天
13
0
撬动世界的支点——《引爆点》读书笔记2900字优秀范文

撬动世界的支点——《引爆点》读书笔记2900字优秀范文: 作者:挽弓如月。因为加入火种协会的读书活动,最近我连续阅读了两本论述流行的大作,格拉德威尔的《引爆点》和乔纳伯杰的《疯传》。...

原创小博客
昨天
35
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部