zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Asp.net mvc 2 in action 笔记1 概述、Model
    持续集成(CI) 基础
    WCF Service的一些参考资源
    Flash Builder4.5 + BladeDS + Java 集成实例
    .net GC知识点滴
    Silverlight的工具推荐
    php异常处理技术,顶级异常处理器
    【转】理解MySQL——索引与优化
    Zend_Controller的工作流程
    PHP set_error_handler() 函数
  • 原文地址:https://www.cnblogs.com/walter-chen/p/5498755.html
Copyright © 2011-2022 走看看