tsung文档说明

一、默认编码:utf-8,你可以根据需要进行修改,如
<?xml version=”1.0″ encoding=”ISO-8859-1″?>
二、xml文件的结构
先整体了解xml文件的结构,它是由下面这些标签构成
2.1顶级标签<tsung>
2.2客户端标签<clients>
2.3服务端标签<servers>
2.4监控标签<monitor>
2.5负载标签<load>
2.6选项标签<options>
2.7过程标签<sessions>
三、顶级标签:
1.1顶级标签是tsung,如
<?xml version=”1.0″?>
<!DOCTYPE tsung SYSTEM “/usr/share/tsung/tsung-1.0.dtd” [] >
<tsung loglevel=”info”>

</tsung>
1.2参数:
1.2.1:dumptraffic
true:所有的通信都会被记录,注:这会大大降低tsung速度,一般是用于调试
light:只转储前44字节
1.2.2:loglevel:
emergency
critical
error
warning(推荐)
notice (默认)
info
debug(需要察看详细信息时,注:使用这个属性时要用make debug重新编译tsung)
三、客户端标签与服务端标签(这两个有关联,需对照理解)
3.1简单设置:
<clients>
<client host=”localhost” use_controller_vm=”true”/>
</clients>
<servers>
<server host=”127.0.0.1″ port=”80″ type=”tcp”></server>
</servers>
注:最基本的设置,在同一机器上。
3.2高级设置:
<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来模拟出更多的机器,在负载均衡器使用客户端IP把流量分配到服务端集群中时,这点十分有用。
在这个例子中,第二个机器在tsung集群中,它被设定更高的比重、两个cpu。它用两个erlang虚拟机来充分利用cpu数量。
注意:即使现在erlang vm能处理多个cpu(erlang SMP),测试显示,对一个tsung客户端来说,一个cpu用一个vm更高效。因此你的cpu数最好和你的结点数相等。如果你还坚持用erlang SMP,在启动tsung加上-s选项,并且不要在配置文件中设定cpu个数。
默认情况下,负载被统一的分配到所有的cpu上(默认一个客户端一个cpu)。参数的比重可以用来衡量客户端机器的处理速度。例如,有两台真实机器,一台比重为1,另一台为2,那么第二台机器会比第一台机器多启动一倍的用户(比重是1/3,2/3).在上面的例子中,第二台机器有2个cpu比重是3,这就相当于每个cpu的比重是1.5。
参数maxusers被用来忽略单个进程对套接字打开数的限制(默认是1024)。当用户数高于这个限制后,就会启动一个新的vm来处理新的用户。参数maxusers的默认值是800。现在的机器开启kernel poll功能后,你就可以对maxusers设定一个最高的值(如30000)而没有性能损失(但注意不要忘记用ulimit -n提高os的限制[这点不大明白]),
3.3运行一个带有作业调度器的tsung[不理解]
原文在文档6.2.3
四、监控标签
tsung监控多个远程服务器, 每个远程服务器都是由多个用远程代理进行交互的后台。这个可以在<monitor>标签中配置。可统计的数据有:cpu使用情况,平均的工作量情况,内存利用情况。
这儿注意:你可以从作业调试器得到监控结点,如:
<monitor batch=”true” host=”torque” type=”erlang”></monitor>
这儿支持多种类型的远程代理(默认是erlang)。
4.1
五、负载标签
5.1随机生成用户
负载标签定义了几个用户到达阶段
<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>
上面这段配置文件表示:用户的生成分三个阶段,第一阶段,每2秒生成一个新用户;第二阶段,每秒生成一个新用户,第三阶段,每秒生成10个新用户。这些测试将在所有用户执行完它们的过程(后面的session标签代表的过程)之后,整个测试就结束了。
上面的第三阶段是每秒生成10个用户,但它字面上理解是每0.1秒生成一个用户,你还可以通过另一种方法实现同样的功能,用arrivalrate来代替arrivalphase,例:
<arrivalphase phase=”1″ duration=”10″ unit=”minute”>
<users arrivalrate=”10″ unit=”second”></users>
</arrivalphase>
还可以用load标签中用loop属性来让整个过程执行多次,如:loop=’2′的意思是这序列被循环两次,所以整天负载被执行三次。(这个要在版本1.2.2之后可用)
负载由每秒http的请求数和每个session的request的个数来决定,例如:每个session有100个request, 每秒生成10个新用户,那么理论的平均吞吐量是每秒1000个request。
5.2静态生成用户
你想在测试的过程中在指定的时间上启动给定的session,你的愿望在1.3.1版本之后可以实现。
<load>
<arrivalphase phase=”1″ duration=”10″ unit=”minute”>
<users interarrival=”2″ unit=”second”></users>
</arrivalphase>
<user session=”http-example” start_time=”185″ unit=”second”></user>
<user session=”http-example” start_time=”10″ unit=”minute”></user>
<user session=”foo” start_time=”11″ unit=”minute”></user>
</load>
<sessions>
<session name=”http-example” probability=”0″ type=”ts_http”>
<request> <http url=”/” method=”GET”></http> </request>
</session>
<session name=”foo” probability=”100″ type=”ts_http”>
<request> <http url=”/” method=”GET”></http> </request>
</session>
<sessions>
在这个例子中,有两个session,一个的probability为“0”(因此在第一阶段不会被执行,就是随机生成用户部分), 而另一个是100。在测试开始之后,我们设置3个用户分别启动,第一个在3分5秒(执行http-example session)启动,第二个在10分钟后启动(http-example session),最后一个在11分钟后启动(foo session)。
5.3负载测试的过程
默认情况下,tsung在所有用户都完成他们的session之后结束,因此这会比用户生成的过程要长的多。如果你想要停止tsung而不管阶段是否完成,也不管是否有session正处于激活状态。那么你可以在load标签中增加duration属性(版本1.3.2后有效)。
<load duration=”1″ unit=”hour”>
<arrivalphase phase=”1″ duration=”10″ unit=”minute”>
<users interarrival=”2″ unit=”second”></users>
</arrivalphase>
</load>
当前最大值是50天,unit可以是”second”, “minute”, “hour”。
六、option标签:
全局变量的默认值可以在这儿进行设定,比如:场景中两次请求间的思考时间,ssl加密算法,tcp/udp缓存大小(默认是32K)。如果override设置为true,这些值会把session配置文件中的对应值覆盖。
<option name=”thinktime” value=”3″ random=”false” override=”true”/>
<option name=”ssl_ciphers” value=”EXP1024-RC4-SHA,EDH-RSA-DES-CBC3-SHA”/>
<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>
注:在1.3.1版本之后,增加一个属性——hibernate,这个被用来减少模拟用户在思考时间的内存消耗。默认情况下,当思考时间超过10s之后hibernate就会被激活,这个可以进行修改,如:
<option name=”hibernate” value=”5″></option>
想要禁止hibernate时,把值设为”infinity”
6.1XMPP/Jabber 选项
暂略…
6.2http 选项
对应http,你可以设定UserAgent的值[版本1.1.0后],对每个user_agent都有一个probability属性(所有的probability值的和是100),如:
<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>

七、session标签
session定义了场景本身,它描述了要运行的请求。
每个session都有一个指定的probality属性,这个被用来决定一个新用户要运行哪个session,所有session的probability属性和为100。
一个事务是一种手工统计数据的一种方式。比如说你想知道你网站登录页面的反应时间,你就需要把这个页面的所有请求(html和内嵌的图片等)放到这个事务里面。在下面的例子中你就会看到,名为index_request的事务统计数据和报告。这儿要注意的是,如果思考时间也是请求的一部分的话,你也要在事务中加入思考时间。
7.1、思考时间
你可以对每一个单独的请求分配一个固定的或随机的思考时间,默认情况下,随机思考时间是以value为基准的指数分布
<thinktime value=”20″ random=”true”></thinktime>
这儿思考时间就是以20为基准的指数分布。
1.3.0版本之后,还增加了一个范围的控制,可以设定一个最大最小值,随机时间就在最大最小值之间波动
<thinktime min=”2″ max=”10″ random=”true”></thinktime>
7.2、http协议
下面这个例子展示了http协议的多种上特性:get, post请求、基本的认证、事务、数据统计定义、状态请求(if modified since)
<sessions>
<session name=”http-example” probability=”70″ type=”ts_http”>
<request>
<http url=”/” method=”GET” version=”1.1″></http>
</request>
<request>
<http url=”/images/logo.gif” method=”GET” version=”1.1″ if_modified_since=”Fri, 14 Nov 2003 02:43:31 GMT”> </http>
</request>
<thinktime value=”20″ random=”true”></thinktime>
<transaction name=”index_request”>
<request>
<http url=”/index.en.html” method=”GET” version=”1.1″ ></http>
</request>
<request>
<http url=”/images/header.gif” method=”GET” version=”1.1″> </http>
</request>
</transaction>
<thinktime value=”60″ random=”true”></thinktime>
<request>
<http url=”/” method=”POST” version=”1.1″ contents=”bla=blu”> </http>
</request>
<request>
<http url=”/bla” method=”POST” version=”1.1″ contents=”bla=blu&amp;name=glop”>
<www_authenticate userid=”Aladdin” passwd=”open sesame”/>
</http>
</request>
</session>
<session name=”backoffice” probability=”30″ …>
… </session>
</sessions>
在1.2.2版本之后,你还可以像下面这样增加任何的http头:
<request>
<http url=”/bla” method=”POST” contents=”bla=blu&amp;name=glop”>
<www_authenticate userid=”Aladdin” passwd=”open sesame”/>
<http_header name=”Cache-Control” value=”no-cache”/>
<http_header name=”Referer” value=”http://www.w3.org/”/>
</http>
</request>
在版本1.3.0你可以从外部文件中读取post和put的内容。
<http url=’mypage’ method=’POST’ contents_from_file=’/tmp/myfile’ />
在版本1.3.1之后,你还可以手工的设定一个cookie,由于cookie不是可持久的,所以你要在每个的请求中增加它个代码
<http url=”/”>
<add_cookie key=”foo” value=”bar”/>
<add_cookie key=”id” value=”123″/>
</http>
7.3~7.7暂略

八、高级配置
8.1、动态替换
8.2、读外部文件
8.3、动态变量
8.4、检查服务器反应
8.5、循环、选择(loop,if)
在1.3.0版本后,可以增加条件/非条件循环:
8.5.1、<for>:
from:初使值
to:最终值
incr:增量
var:保存当数值的变量名
<for from=”1″ to=”10″ incr=”1″ var=”counter”>
[...]
<request> <http url=”/page?id=%%_counter%%”></http> </request>
[...]
</for>
8.5.2、<repeat>
name:循环名
max_repeat:循环次数
注意:循环的最后一个标签是<while>或<until>
<repeat name=”myloop” max_repeat=”40″>
[...]
<request>
<dyn_variable name=”result” regexp=”Result: (.*)”/>
<http url=”/random” method=”GET” version=”1.1″></http>
</request>
[...]
<until var=”result” eq=”5″/>
</repeat>
8.5.3、<if>
1.3.1版本后,支持基于动态变量的if表达式
<if var=”tsung_userid” eq=”3″>
<request> <http url=”/foo”/> </request>
<request> <http url=”/bar”/> </request>
</if>
你可以用eq或neq来检查变量

九、数据统计与报告
9.1、可用属性
request:每次请求的请求时间
page:一系列请求的请求时间(一个页面是不包含“思考时间“的一系列请求)
connect:连接建立的过程
reconnect:重新连接的数量
size_rcv:反应的大小(单位是byte)
size_sent:请求的大小(单位是byte)
session:一个用户会话的持续时间
users:同步用户的数量
connected:同步连接用户的数量
custom transaction:
9.2、设计
9.3生成报告
首先进行你测试的log日志目录(“~/.tsung/log/yyyyMMdd-hhmm/”),然后进行控制台,执行:”tsung_stats.pl”(完整命令/usr/lib/tsung/bin/tsung_stats.pl)
你甚至可以在测试运行的时候,生成统计数据。
使用-help可以察看所有的可变选项:
9.4tsung摘要
Available options:
[--help] (this help text)
[--verbose]
[--debug]
[--noplot] (don’t make graphics)
[--gnuplot <command>] (path to the gnuplot binary)
[--nohtml] (don’t create HTML reports)
[--logy] (logarithmic scale for Y axis)
[--tdir <template_dir>] (Path to the HTML tsung templates)
[--noextra (don’t generate graphics from extra data (os monitor, etc)
[--stats <file>] (stats file to analyse, default=tsung.log)

9.5图形概述
可查看附件20110531-10:33.tar.gz(这是我自己运行后的文件的压缩包)
9.6tsung绘图
9.7RRD

转自:http://blog.programfan.info/tsung/178.jsp

时间: 2024-11-02 22:19:53

tsung文档说明的相关文章

通过beego快速创建一个Restful风格API项目及API文档自动化(转)

通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界面. 一.创建数据库及数据表(MySQL) #db--jeedev -- ---------------------------- -- Table structure for `app` -- ---------------------------- DROP TABLE IF EXISTS `a

[转贴]xcode帮助文档

突然间得到了一台MAC ,这时候不学OC 更待何时学呀?马上找了IOS开发的书和网上的帖子看,最近在开源力量那里看了TINYFOOL的入门讲座,讲的都很虚,可能时间不够吧,也没看到什么例子呀,什么的,很蜻蜓点水,点到即止,BUT ANYWAY,在开源IOS 入门讲座完了就突然得到了一台MAC,不知道是不是上天的安排,还是学一下OC吧,毕竟水果的支持时间是有限的,一般我估计3年后水果不再支持这款MAC,到时想学也不够条件了,我们这种吊丝真的经常被生活所迫.在网上找到一个文章教人看XOCDE的帮助文

标准文档流

标准流指的是在不使用其他的与排列和定位相关的特殊CSS规则时,各种元素的排列规则.HTML文档中的元素可以分为两大类:行内元素和块级元素.       1.行内元素不占据单独的空间,依附于块级元素,行内元素没有自己的区域.它同样是DOM树中的一个节点,在这一点上行内元素和块级元素是没有区别的.       2.块级元素总是以块的形式表现出来,并且跟同级的兄弟块依次竖直排列,左右自动伸展,直到包含它的元素的边界,在水平方向不能并排.盒子在标准流中的定位原则margin控制的是盒子与盒子之间的距离,

使用Apache POI导出Excel小结--导出XLS格式文档

使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI导出Excel小结--导出XLSX格式文档 使用Apache POI导出Excel--大数量导出 导出XLS格式文档 做企业应用项目难免会有数据导出到Excel的需求,最近在使用其,并对导出Excel封装成工具类开放出来供大家参考.关于Apache POI Excel基本的概念与操作我在这里就不啰嗦

Atitit 项目文档规范化与必备文档与推荐文档列表

===========比较重要的必备文档========== 项目组名单通讯录( 包括项目组,客户沟通人等 需求文档 原型ui文档 开发计划表 项目源码与架构文档以及新结构文档 设计文档 (一般概要即可,重点模块单独详细设计) 数据库文档 注意事项 =========对开发比较重要的文档 Svn源码服务器账号密码 测试数据库账号密码信息 数据库sql脚本文件. 开发环境搭建文档 项目技术规范文档.(项目模式和产品模式有很多不同,需要单独分离) ======其他 测试说明文档 测试服务器部署账号信

Xcode文档安装

1.Xcode文档在线安装 打开Xcode,首选项 点击DownLoads下载文档 2.Xcode文档离线安装 找到备份的文档 com.apple.adc.documentation.AppleiOS8.0.iOSLibrary.docset 找到DocSets目录 /Applications/Xcode.app/Contents/Developer/Documentation/DocSets 拷贝文件到该目录 退出重新打开Xcode 如果还不行,/Users/你的用户名/Library/Dev

NetScaler/MAS/XAXD自动文档生成工具

当工程实施后,为用户提交文档一直是工程师比较繁重的工作.这组NetScaler和MAS脚本可以帮助我们自动生成文档减轻部分工作. 脚本基于powershell,利用NetScaler的Nitro RESTful API把所有的信息取出,直接生成word或者pdf版本的文档. 原脚本支持除中文外的多种欧美语言,经过我和作者CarlWebster多次的测试,NetScaler脚本终于支持了中文版的office,可以在中文的系统上直接导出文档了.可在本文下方下载附件. 同时我把NetScaler的脚本

如何用代码读取Office Online Server2016的文档的备注信息

前言 在一个项目上客户要求读取office online server 2016的对文档的备注信息,如下图: 以前思路老纠结在OOS这个在线上,总有以为这个信息存储在某个列表中,其实错了,这个备注信息其实就是word文档的备注信息,微软采用openxml开发的OOS,因此我也采用openxml读取备注信息的思路进行尝试,结果发现原来是可以的,成功效果图如下: 注意: OpenXml格式只有office2007以及以上版本才支持的格式,如果office97-2003格式的文档是二进制格式的文档,o

自写聊天室_LinuxC实现(4)——项目文档

西邮Linux兴趣小组  暑期项目 项目名称:    happychat        项目作者:      楚东方     1. 引言 1.1 项目综述 对项目进行简要介绍,并说明编写此项目的目的. 该项目为聊天室,主要为了实现聊天,文件传输,方便linux环境下的,交流与聊天. 实现功能: 1.好友管理: (1)添加好友 (2)删除好友 2.群管理 (1)创建群 (2)加群 (3)退群 (4)解散群 3.文件传送 实现了上传和下载的断点续传 4.聊天界面分屏 利用光标的移动对输入和屏幕聊天记