[转]tsung的jabber脚本分析与报表

xmpp的Tsung.xml配置

编译Tsung后/usr/share/doc/tsung下包含测试的配置实例xml和tsung的用户手册user_manual.html

本次测试使用以下配置

<?xml version="1.0"?>

<!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd">

<tsung loglevel="notice" version="1.0">

<!--如果use_controller_vm="false",那么每maxusers个连接后会创建一个新的erlangVM,maxuser默认是800 否则达到上限就不再创建连接 能打开了limits,就不要使用多个erlangVM,容易crash 需要执行ulimit -n 20480-->

<clients>

<!--可以配置多台客户端-->

<client host="localhost" use_controller_vm="true"  maxusers="10000"></client>

</clients>

<!-- Server side setup配置服务器IP或域名-->

<servers>

<server host="192.168.3.242" port="5222" type="tcp"></server>

</servers>

<load>

<!--可以配置多个阶段相位,这边使用20分钟 也可以设置unit="minute"-->

<arrivalphase phase="1" duration="1200" unit="second">

<!--这边不是生成用户的时间间隔而,是总共尝试去连接的session数目,为了使所有用户都去连接,这边要计算出连接间隔 -->

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

</arrivalphase>

</load>

<!-- JABBER parameters -->

<!-- to synchronise users,  use a global acknoledgement -->

<options>

<option type="ts_jabber" name="global_number" value="10001"></option>

<!--总共账号数目,每个账号同时只登录一次-->

<option type="ts_jabber" name="userid_max" value="10000"></option>

<option type="ts_jabber" name="domain" value="test.rzico.net"></option>

<!--账号和密码后面加上 1 到 userid_max 个后缀 去xmpp服务器上授权-->

<option type="ts_jabber" name="username" value="chenshaoxian"></option>

<option type="ts_jabber" name="passwd" value="chenshaoxian"></option>

</options>

<sessions>

<!—probability值加起来要达到100 -->

<session probability="50" name="jabber-example" type="ts_jabber">

<request> <jabber type="connect" ack="no_ack"></jabber> </request>

<thinktime value="2"></thinktime>

<transaction name="authenticate">

<request> <jabber type="auth_get" ack="local"></jabber> </request>

<request> <jabber type="auth_set_plain" ack="local"></jabber> </request>

</transaction>

<!-- "presence:initial" : connected -> online -->

<!-- "presence:final" : online -> connected-->

<request> <jabber type="presence:initial" ack="no_ack"/> </request>

<thinktime value="2"></thinktime>

<transaction name="roster">

<request> <jabber type="iq:roster:get" ack="local"></jabber></request>

</transaction>

<thinktime value="30"></thinktime>

<transaction name="online">

<request> <jabber type="chat" ack="no_ack" size="16" destination="online"></jabber> </request>

</transaction>

<thinktime value="30"></thinktime>

<transaction name="offline">

<request> <jabber type="chat" ack="no_ack" size="56" destination="offline"></jabber> </request>

</transaction>

<thinktime value="30"></thinktime>

<transaction name="close">

<request> <jabber type="close" ack="no_ack"></jabber> </request>

</transaction>

</session>

<session probability="20" name="jabber-plain" type="ts_jabber">

<request> <jabber type="connect" ack="no_ack"></jabber> </request>

<thinktime value="2"></thinktime>

<transaction name="auth_plain">

<request> <jabber type="auth_get" ack="local"></jabber> </request>

<request> <jabber type="auth_set_plain" ack="local"></jabber> </request>

</transaction>

<thinktime value="30"></thinktime>

<transaction name="close">

<request> <jabber type="close" ack="no_ack"></jabber> </request>

</transaction>

</session>

<session probability="20" name="jabber-digest" type="ts_jabber">

<!-- regexp captures stream ID returned by server -->

<request>

<dyn_variable name="sid" re="<stream:stream id="(.*)" xmlns:stream"/>

<jabber type="connect" ack="local"></jabber>

</request>

<thinktime value="2"></thinktime>

<transaction name="auth_digest">

<request> <jabber type="auth_get" ack="local"></jabber> </request>

<request subst=‘true‘> <jabber type="auth_set_digest" ack="local"></jabber> </request>

</transaction>

<thinktime value="30"></thinktime>

<transaction name="close">

<request> <jabber type="close" ack="no_ack"></jabber> </request>

</transaction>

</session>

<session probability="10" name="jabber-sipdigest" type="ts_jabber">

<request> <jabber type="connect" ack="no_ack"></jabber> </request>

<thinktime value="2"></thinktime>

<transaction name="auth_sipdigest">

<!-- regexp captures nonce value returned by server -->

<request>

<dyn_variable name="nonce" re="<Nonce encoding="hex">(.*)<\/Nonce>"/>

<jabber type="auth_get" ack="local"></jabber>

</request>

<request subst=‘true‘> <jabber type="auth_set_sip" ack="local"></jabber> </request>

</transaction>

<thinktime value="30"></thinktime>

<transaction name="close">

<request> <jabber type="close" ack="no_ack"></jabber> </request>

</transaction>

</session>

</sessions>

</tsung>

3.Tsung报表分析

对报表参数不太了解可以试着参看服务器上的tsung的用户手册user_manual.html

或参看:http://tsung.erlang-projects.org/user_manual.html

一些常用的名词解析:

request:每个请求的反应时间

page:每一系列请求的反应时间(a page是一组不包含think-time的一组请求)

connect:连接建立用的时间

reconnect:重新连接的次数

size_rcv:反应的大小(单位是byte)

size_sent:请求的大小(单位是byte)

session:用户会话时间

users:同步用户数

connected:同步连接用户数

Tsung收集到监控数据后,会发送到数据统计进程。其实在会话进程运行时,也会产生大量的统计数据,比如发送了多个请求,执行了多个个事务(Tsung事务),通过网络发送了多少数据,收到多少数据等等。

根据手册中描述,Tsung的统计数据分为四类:sample,sample_counter,counter,sum。其中sample与sample_counter会每10秒计算一次统计项的平均值及其标准差,并写入文件;而counter是一个单纯的计数器,用在比如一共发送了多个请求这样的统计项上;sum统计项有一个累积的过程,例如HTTP响应的总大小。sample类型的数据写入的数据格式如下:

# stats:’name’ 10sec_count, 10sec_mean, 10sec_stdvar, max, min, mean, count

而counter类型的数据格式如下:

# stats:’name’ count(during the last 10sec), totalcount(since the beginning)

跟数据统计相关的模块主要有三个:ts_mon:提到数据统计的接口,监控数据的添加主要通过该模块中的接口来完成;ts_mon_cache:缓存,统计数据的内存写入由此模块完成;ts_stats_mon:将统计数据写入到文件。

添加一个统计项,一般的都通过调用ts_mon:add这个接口来完成,然后ts_mon:add会调用ts_mon_cache将统计项先写入内存。ts_mon_cache初始化是会定义一个定时器,每10秒会触发调用ts_stats_mon:add将10秒内的统计数据写入文件。

原地址:http://linyu19872008.iteye.com/blog/1605707

[转]tsung的jabber脚本分析与报表

时间: 2024-11-25 01:58:44

[转]tsung的jabber脚本分析与报表的相关文章

uboot移植(二)——uboot mkconfig脚本分析

uboot移植(二)--uboot  mkconfig 脚本分析 一:mkconfig脚本的作用 mkconfig是通过传入的参数来脚本用于某个开发板配置uboot,主要是通过判断其输入的参数来创建符号链接文件,使它们指向该开发板对应的配置文件来进行配置. (1)配置CPU架构相关的文件:在include目录下创建asm文件,指向include/asm-arm (2)配置SOC类型相关的文件:include目录下创建regs.h文件,指向include/s5pc110.h include/asm

Hadoop的shell脚本分析

你会发现hadoop-daemon.sh用于启动单独的本机节点 而hadoop-daemons.sh 会批量的ssh到别的机器启动 前记: 这些天一直学习hadoop,学习中也遇到了许多的问题,主要是对hadoop的shell脚本和hadoop的源码概念不够清楚,所以我就对hadoop的bin目录下的shell脚本进行了研究,有一些成果想记录下来,也希望大家前来批评指正. 分析原因: 很多hadoop的初学者对hadoop的脚本不是很清楚,不知道为什么可以在命令行中启动hadoop,也不知道为什

教你如何做出一份报表:流程分析之报表模板

上周我们谈了流程分析之报表数据源,现在说说报表模板. 进入后台管理----H3管理中心----流程分析----报表模板. 把鼠标悬浮在报表模板上,会显现出五个icon,分别是新增目录.明细汇总表.交叉分析表.删除.刷新,这里主要讲明细汇总表,因为交叉分析表与此大同小异.选择第2个明细汇总表,即可新增. 在数据源下方的下拉框中选择已经建好的报表数据源,这里以上次新建的报表数据源为例,然后来到以下的界面. 从左边中挑选需要的数据项,拖到中间的蓝色矩形条中,如若系统中已有相关的流程数据,那么数据会自动

shell脚本分析apache日志状态码

一.首先将apache日志按天切割 vi /etc/httpd/conf/httpd.confErrorLog "|rotatelogs /var/log/httpd/%Y%m%derror_log 86400 480″CustomLog "|rotatelogs /var/log/httpd/%Y%m%daccess_log 86400 480″ combined 二.重启apache服 service httpd restart ##################apahce日志

Hadoop公开课:完全分布式脚本分析

脚本分析start-all.sh 1)首先进入/soft/Hadoop/sbin目录 2)nano start-all.sh sbin/start-all.sh主要做的事情: 1) libexec/hadoop-config.sh 2) start-dfs.sh 3) start-yarn.sh 3)cat libexec/hadoop-config.sh hadoop_conf_dir =etc/hadoop 4)cat sbin/start-dfs.sh sbin/start-dfs.sh的

内核移植(四)——Makefile和链接脚本分析

1:Makefile分析 (1) kernel的Makefile写法和规则等和uboot的Makefile是一样的,甚至Makefile中的很多内容都是一样的. (2) kernel的Makefile比uboot的Makefile要复杂,这里我们并不会一行一行的详细分析. (3) Makefile中只有一些值得关注的我会强调一下,其他不强调的地方暂时可以不管. (4) Makefile中刚开始定义了kernel的内核版本号.这个版本号挺重要(在模块化驱动安装时会需要用到),要注意会查,会改. (

linux 内核移植(四)——Makefile和链接脚本分析

1:Makefile分析 (1) kernel的Makefile写法和规则等和uboot的Makefile是一样的,甚至Makefile中的很多内容都是一样的. (2) kernel的Makefile比uboot的Makefile要复杂,这里我们并不会一行一行的详细分析. (3) Makefile中只有一些值得关注的我会强调一下,其他不强调的地方暂时可以不管. (4) Makefile中刚开始定义了kernel的内核版本号.这个版本号挺重要(在模块化驱动安装时会需要用到),要注意会查,会改. (

shell 脚本分析Nginx 日志

本脚本分析Nginx 负载均衡器的日志: #!/bin/bash if [ $# -eq 0 ]; then     echo "Error:please specify logfile."     exit 0 else     LOG=$1 fi if [ ! -f $1 ]; then     echo "Sorry,sir. I cat't find this apache log file, pls try again!"     exit 0 fi ##

iredmail安装脚本分析(三)---conf/global DISTRO值的来源及操作系统的判断

作者在引入conf/global 文件时,就已经对操作系统的类型进行判断,同时也对DISTRO进行了赋值. 部分代码,如图: 显然文件里的KERNEL_NAME的值就是判断完成的操作系统,具体分析该值是如何得到的. 就是通过命令"uname –s  | tr '[a-z]' '[A-Z]'得到的,不过作者在此处把小写换成了大写. 接下来分析根据不同操作系统,怎么获得不同的DISTRO值,代码如下: if [ X"${KERNEL_NAME}" == X'LINUX' ]; t