文档章节

压力测试工具tsung用法简介

今幕明
 今幕明
发布于 2014/06/23 17:19
字数 1213
阅读 234
收藏 13
点赞 0
评论 0

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

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/

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

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

今幕明 ⋅ 2014/07/26 ⋅ 0

Tsung 1.4.1 发布,压力测试工具

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

小卒过河 ⋅ 2011/09/14 ⋅ 0

Tsung 1.5.0 发布,压力测试工具

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

oschina ⋅ 2013/05/28 ⋅ 5

Tsung 1.5.1 发布,压力测试工具

Tsung 1.5.1 发布,此版本添加了新的 MQTT 插件;the possibility of varying popularities of sessions in phases;添加了 SSL 身份验证的客户端证书;系统改进和 bug 修复。 Tsung 是一个压...

oschina ⋅ 2014/04/12 ⋅ 2

压力测试工具--Tsung

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

匿名 ⋅ 2008/09/20 ⋅ 0

Tsung压力测试工具的搭建和使用,配置。

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

射手Mr吴 ⋅ 2016/02/16 ⋅ 0

Tsung 1.4.0 发布,压力测试工具

Tsung 1.4.0 发布了,该版本增加了一个用来模拟慢网络连接的选项,增强了 PostgreSQL 插件以支持扩展协议,为开发者增加了 ts_plugin 行为,同时包含一些bug修复。 Tsung 是一个压力测试工具...

红薯 ⋅ 2011/09/06 ⋅ 0

Tsung学习笔记

介绍 HTTP,WebDAV,SOAP,PostgreSQL,MySQL,LDAP和Tsung可以模拟上百万用户OS IP别名技术在单个机器上使用多(CPU,内存), 支持XML方式的配置文件 模拟真实的流量HTML或者图表的方式报告测试结果...

今幕明 ⋅ 2014/06/23 ⋅ 0

TSung测试XMPP协议 集群配置

有的时候一台tsung机器压力太小,需要用到多台tsung机器来一起压力测试。这个时候就需要在多台服务器上面安装tsung和启动tsung已经tsung.xml文件。如果机器少还可以,没什么问题。那如果机器...

古月楼 ⋅ 2013/10/11 ⋅ 0

测试工具_已迁移

高负载测试工具 tsung 一个开源的多协议分布式负载测试工具,使用erlang语言开发的 服务器压力测试 LoadRunner 是一种预测系统行为的负载测试工具。通过模拟上千万用户实施负载及实时性能监测...

鬼谷子灬 ⋅ 2015/08/24 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

如何优雅的编程——C语言界面的一点小建议

我们鼓励在编程时应有清晰的哲学思维,而不是给予硬性规则。我并不希望你们能认可所有的东西,因为它们只是观点,观点会随着时间的变化而变化。可是,如果不是直到现在把它们写在纸上,长久以...

柳猫 ⋅ 29分钟前 ⋅ 0

从零手写 IOC容器

概述 IOC (Inversion of Control) 控制反转。熟悉Spring的应该都知道。那么具体是怎么实现的呢?下面我们通过一个例子说明。 1. Component注解定义 package cn.com.qunar.annotation;impo...

轨迹_ ⋅ 29分钟前 ⋅ 0

系统健康检查利器-Spring Boot-Actuator

前言 实例由于出现故障、部署或自动缩放的情况,会进行持续启动、重新启动或停止操作。它可能导致它们暂时或永久不可用。为避免问题,您的负载均衡器应该从路由中跳过不健康的实例,因为它们...

harries ⋅ 31分钟前 ⋅ 0

手把手教你搭建vue-cli脚手架-详细步骤图文解析[vue入门]

写在前面: 使用 vue-cli 可以快速创建 vue 项目,vue-cli很好用,但是在最初搭建环境安装vue-cli及相关内容的时候,对一些人来说是很头疼的一件事情,本人在搭建vue-cli的项目环境的时候也是...

韦姣敏 ⋅ 41分钟前 ⋅ 0

12c rman中输入sql命令

12c之前版本,要在rman中执行sql语句,必须使用sql "alter system switch logfile"; 而在12c版本中,可以支持大量的sql语句了: 比如: C:\Users\zhengquan>rman target / 恢复管理器: Release 1...

tututu_jiang ⋅ 55分钟前 ⋅ 0

Nginx的https配置记录以及http强制跳转到https的方法梳理

Nginx的https配置记录以及http强制跳转到https的方法梳理 一、Nginx安装(略) 安装的时候需要注意加上 --with-httpsslmodule,因为httpsslmodule不属于Nginx的基本模块。 Nginx安装方法: ...

Yomut ⋅ 今天 ⋅ 0

SpringCloud Feign 传递复杂参数对象需要注意的地方

1.传递复杂参数对象需要用Post,另外需要注意,Feign不支持使用GetMapping 和PostMapping @RequestMapping(value="user/save",method=RequestMethod.POST) 2.在传递的过程中,复杂对象使用...

@林文龙 ⋅ 今天 ⋅ 0

如何显示 word 左侧目录大纲

打开word说明文档,如下图,我们发现左侧根本就没有目录,给我们带来很大的阅读障碍 2 在word文档的头部菜单栏中,切换到”视图“选项卡 3 然后勾选“导航窗格”选项 4 我们会惊奇的发现左侧...

二营长意大利炮 ⋅ 今天 ⋅ 0

智能合约编程语言Solidity之线上开发工具

工具地址:https://ethereum.github.io/browser-solidity/ 实例实验: 1.创建hello.sol文件 2.调试输出结果

硅谷课堂 ⋅ 今天 ⋅ 0

ffmpeg 视频格式转换

转 Mp4 格式 #> ffmpeg -i input.avi -c:v libx264 output.mp4#> ffmpeg -i input.avi -c:v libx264 -strict -2 output.mp4#> ffmpeg -i input.avi -c:v libx264 -strict -2 -s 1......

Contac ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部