`
wwwzhouhui
  • 浏览: 358704 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

tsung压力测试多服务器(跨域)之间发送消息和状态变更

阅读更多

  最近在做多服务器之间通信压力测试,找官方TSUNG的手册中也没有发现教程来测试,后来自己胡乱整了一下。实现了2台服务器之间消息通信和状态变更(压力测试,当然如果你只是实现功能测试,手工登录客户端测试2台服务器之间是否通信,就不需要这么麻烦了,需要更多压力就需要修改TSUNG脚本了)
  一:测试2台服务器消息互发(即A服务器发聊天消息发送给B中指定的用户)
      1.准备2服务器 如:132.159.206.22  和 132.159.206.23  分别部署openfire 服务端
2个服务器对对应的域名分别为
      domain    address
      test6     132.159.206.23
      test7     132.159.206.22
      2.准备不同的用户登录(主要是不同的用户登录不同的服务器),如我测试的
用户 test1.......test1000,指定登录22 服务器
用户 user1.......user1000,指定登录23 服务器
      3.测试数据和程序部署好后启动服务22,23
      4.编写TSUNG.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="false"></client>
-->

<!--
    <client host="s207" weight="1"  >   
      <ip value="132.159.205.207"></ip>   
  	</client>
  	-->


  	<client host="s209" weight="1"    >   
      <ip value="132.159.205.209"></ip>   
  	</client>
<!--
  	<client host="s209" weight="1"    >   
      <ip value="132.159.205.209"></ip>   
  	</client>
  	-->
  </clients>

  <!-- Server side setup -->
 <servers>
 <!--
  <server host="132.159.156.143" port="5222" type="tcp"></server>
  
  <server host="132.159.206.24" port="5222" type="tcp"></server>
  -->
  <!--
  <server host="132.159.206.32" port="5222" type="tcp" ></server>
  <server host="132.159.206.31" port="5222" type="tcp" ></server>
  -->
  <server host="132.159.206.23" port="5222" type="tcp" ></server>
 </servers>

  <load>
   <arrivalphase phase="1" duration="5" unit="second">
    <users  maxnumber="2" interarrival="1" unit="second"></users>
   </arrivalphase>
  </load>
  <!--
  <monitoring>
    <monitor host="s207" type="snmp"/>
    <monitor host="s207" type="erlang"/>
	  <monitor host="s208" type="erlang"/>
    <monitor host="s208" type="snmp"/>
    <monitor host="s209" type="erlang"/>
    <monitor host="s209" type="snmp"/>
  </monitoring>
  -->

  <!-- JABBER parameters -->
  <!-- to synchronise users,  use a global acknoledgement -->
 <options>
  <option type="ts_jabber" name="global_number" value="2"></option>
  <option type="ts_jabber" name="userid_max" value="2"></option>
  <option type="ts_jabber" name="domain" value="test6"></option>
  <option type="ts_jabber" name="username" value="user"></option>
  <option type="ts_jabber" name="passwd" value="user"></option>
 </options>

  <sessions>
   <session probability="100" name="ba_online" type="ts_jabber">

    <request> <jabber type="connect" ack="no_ack"></jabber> </request>
    <thinktime value="1"></thinktime>
    <transaction name="authenticate">
      <request> <jabber type="auth_get" ack="local"></jabber> </request>
      <request> <jabber type="auth_set_plain" ack="local"></jabber> </request>
    </transaction>
    
    <transaction name="roster">
      <request> <jabber type="iq:roster:get" ack="local"></jabber></request>
    </transaction>
     
    <request> <jabber type="presence:initial" ack="global"/> </request>
    <thinktime value="1"></thinktime>

    <transaction name="online1">
    <request> 
   <jabber type="raw" ack="no_ack" data="&lt;message to='test3@test7'&gt;&lt;body&gt;zhouhui&lt;/body&gt; &lt;/message&gt;"></jabber>     </request>
    </transaction>
     <thinktime value="30"></thinktime>

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

  </session>
 </sessions>
</tsung>


  脚本说明 tsung 登录23 服务器 域名为test6 用户是user,设定2个用户登录(即user1,user2) 用户user1,user2登录后会发送给JID test3@test7的用户,其中test7是22服务器域名,test3 是22服务器登陆的用户,即user1,user2会向22服务器上test3用户发送消息,从而达到一台服务跨域发送消息给另一台服务器

脚本关键点:xml 86行<jabber type="raw" ack="no_ack" data="&lt;message to='test3@test7'&gt;&lt;body&gt;zhouhui&lt;/body&gt; &lt;/message&gt;"></jabber>

通过TSUNG RAX xml 加工需要的消息格式
5.验证,用客户端登录22服务器 用户名test3
   如图:

 

   6.启动TSUNG 模拟登录23的客户端软件,登录后脚本执行编写好的脚本给test3客户发送2条消息如

 

这样就可以收到TSUNG跨域发送给另一个服务器客户端的消息了

7. 编写TSUNG.XML 脚本测试更多的用户发送跨域消息了。

 

二:测试2台服务器用户状态变更(即A服务器状态变更后B服务器收到A服务器用户状态变换)

 1.准备2服务器(同上)

 2.造测试用户数据

 以上1,2同上

 3.在openfire中ofrouser表(用户好友表)造跨域的好友数据

    如  22 服务器 用户test1   好友user1@test6

         23 服务器 用户user1   好友test1@test7

    这样每一个用户有一个跨域的好友

  4.编写TSUNG.XML

 

<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd">
<tsung loglevel="notice"  version="1.0">

  <clients>


  	<client host="s209" weight="1"    >   
      <ip value="132.159.205.209"></ip>   
  	</client>
  	
  </clients>

  <!-- Server side setup -->
 <servers>
  <server host="132.159.206.23" port="5222" type="tcp" ></server>
 </servers>

  <load>
   <arrivalphase phase="1" duration="5" unit="second">
    <users  maxnumber="1" interarrival="1" unit="second"></users>
   </arrivalphase>
  </load>

  <!-- JABBER parameters -->
  <!-- to synchronise users,  use a global acknoledgement -->
 <options>
  <option type="ts_jabber" name="global_number" value="1"></option>
  <option type="ts_jabber" name="userid_max" value="1"></option>
  <option type="ts_jabber" name="domain" value="test6"></option>
  <option type="ts_jabber" name="username" value="user"></option>
  <option type="ts_jabber" name="passwd" value="user"></option>
 </options>

  <sessions>
   <session probability="100" name="ba_online" type="ts_jabber">

    <request> <jabber type="connect" ack="no_ack"></jabber> </request>
    <thinktime value="1"></thinktime>
    <transaction name="authenticate">
      <request> <jabber type="auth_get" ack="local"></jabber> </request>
      <request> <jabber type="auth_set_plain" ack="local"></jabber> </request>
    </transaction>
    
    <transaction name="roster">
      <request> <jabber type="iq:roster:get" ack="local"></jabber></request>
    </transaction>
     
    <request> <jabber type="presence:initial" ack="global"/> </request>
    <thinktime value="5"></thinktime>

    <request> <jabber type="presence:broadcast" show="away" status="Be right back..." ack="no_ack"/> </request>
    <thinktime value="180"></thinktime>


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

  </session>
 </sessions>
</tsung>
 

     tsung文档中有一个

  <jabber type="presence:broadcast" show="dnd" status="Don't bother me!" ack="no_ack"/>

   这段对状态进行广播,受到这个的提示,在ofrouser表中事先造好好友数据。这样通过该脚本广播,当1台机器上用户状态变更,另1台机器对应该用户的好友状态也随之变更,达到测试的目的

 5.验证,用客户端登录22服务器 用户名test3

 6.启动TSUNG 模拟登录23的客户端软件,登录后脚本执行编写好的脚本给test3客户发送状态变更,截图同上面类似。

 7.几个用户验证脚本正确,这样修改脚本最大用户数,测试大量用户状态变更。

 

  • 大小: 32.2 KB
  • 大小: 17.1 KB
分享到:
评论
1 楼 gxdr 2013-12-18  
你好,看了您的博客很有收获,但是在操作中遇到了一些问题,我想把消息随机发送给一些用户,用到了随机函数
<!-- 发送消息 -->
        <setdynvars sourcetype="random_number" start="1000" end="1002">
        <var name="rand" />
        </setdynvars>
        <request>
        <jabber type="raw" ack="no_ack" data="&lt;message type='chat' to='tsung%%_rand%%@im.123.com'&gt;&lt;body&gt;test_1234567890&lt;/body&gt; &lt;/message&gt
;"></jabber>     
        </request>


在服务器端监控到的数据消息是原样发送的
C2S - RECV (1964184153): <message type='chat' to='tsung%%rand%%@im.123.com'><body>zhouhui</body> </message>


在raw中 如何让这个随机参数生效,从而达到随机发送消息,希望得到您的解答

相关推荐

    Tsung负载测试tigase

    针对消息通知服务xmpp服务器,可以用tsung来测试消息通知服务能承受多大的压力。 在Ubuntu上装好tsung之后,首先要用ulimit修改系统支持的最大fd数量(ulimit-n 20480),否则tsung最多只能创建不到1024个连接,测试...

    MQTT压力测试之Tsung的使用

    MQTT压力测试之Tsung的使用 MQTT压力测试之Tsung的使用

    Tsung_测试XMPP_安装使用说明

    tsung是用erlang开发的一款简单易用的压力测试工具,目前仅支持linux各版本系统安装,有tar.gz和deb两种安装文件, 目前我们测试用的是CentOS或RedHat两种操作系统,因此选择tar.gz安装文件,总的来说tsung工具有...

    tsung里面测试websocket的插件

    tsung里面测试websocket的插件含 websocket.xml 等

    tsung测试总结

    tsung 测试 java erlang

    tsung用户手册 linux

    压力测试 压力测试 tsung linux

    tsung脚本及说明

    tsung的测试脚本,包含发送单人消息,群组消息,获取花名册等

    Openfire 3.9.3 Load Test Tsung配置xml

    Openfire 3.9.3 Load Test Tsung配置xml,10万用户下集群测试的Tsung压力测试工具的jabber_cluster.xml,session 5分钟

    tsung高并发测试工具搭建(自己亲测,详细的一逼)

    tsung高并发测试工具搭建(自己亲测,详细的一逼),改文档是自己一步一步摸索出来的,主要是安装tsung整个过程很详细,搭过的人,知道tsung的搭建依赖很恶心,不是一时半会能搞出来的

    Tsung用于压测MySQL服务器的脚本

    这个MySQL服务器压测的需求是:Tsung用于压测MySQL服务器的脚本环境:LinuxRHEL5U4X86-64,24G内存,16核.MySQL服务器在10.232.36.100上。  这个MySQL服务器压测的需求是:  环境:LinuxRHEL5U4X86-64,24G内存,16核....

    Tsung安装使用详细解说

    Tsung安装使用的详细解说,主要针对xmpp的服务端(比如openfire的测试),编写测试场景的脚本配置详细说明。本人使用的是ubuntu操作系统、Tsung1.4.1

    tsung安装使用说明

    tsung安装使用,参数说明,模拟openfire注册用户,模拟用户openfire登录、状态更改、发送消息,对openfire长时间压力测试

    tsung+erlang包

    tsung+erlang测试工具,初学者应用必备,内部放置tsung源程序文件和erlang文件

    tsung最新用户手册

    tsung最新用户手册,包含HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP, and Jabber/XMPP servers压力测试模版,错误说明等。

    tsung1.6.0

    tsung为一个开源的多协议分布式负载测试工具,使用erlang语言开发的。具体安装使用可以参考URL:http://www.51ste.com/share/det-222.html

    tsung-1.3.3

    tsung安装包,linux下进行压力测试的工具

    tsung安装使用

    关于tsung工具的安装步骤以及使用过程中会遇到的常见问题解答

    euc-2014:Tsung for Erlang用户大会2014负载测试简介

    介绍Tsung的负载测试 我是谁? Radek Szymczyszyn XMPP / MongooseIM工程师 / / 什么是负载测试? 性能测试的类型: 在特定负载下进行测试-在一个4核,64GiB RAM盒上,如果有10万用户登录并彼此交换消息,则...

    tsung:性能测试工具

    tsung:性能测试工具

    tsung_user_guide

    支持各种协议的压力测试工具,如HTTP/XMPP等

Global site tag (gtag.js) - Google Analytics