`
wwwzhouhui
  • 浏览: 361061 次
  • 性别: 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中 如何让这个随机参数生效,从而达到随机发送消息,希望得到您的解答

相关推荐

    MQTT压力测试之Tsung的使用

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

    tsung里面测试websocket的插件

    Tsung是一款开源的多协议负载测试工具,它能够模拟大量用户并发访问服务器,用于测试系统的性能和稳定性。Tsung支持多种协议,包括HTTP、HTTPS、FTP、SOAP、XML-RPC、 Jabber/XMPP、MySQL、PostgreSQL等,以及我们...

    Tsung_测试XMPP_安装使用说明

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

    Tsung安装使用详细解说

    对于并发访问测试,你可以从`tsung/examples`中复制`jabber_roster.xml`并进行类似上述的配置修改,重点关注用户之间的会话建立和消息发送。 ## 7. 调整系统参数 在进行大规模并发测试时,可能需要增加操作系统的...

    tsung测试总结

    3. **集群支持**:TSUNG支持分布式部署,可以通过多台服务器协同工作,进一步提升测试规模和复杂度。 4. **图形化测试报告**:通过集成Gnuplot等工具,TSUNG能够生成直观易懂的测试结果图形报告。 #### 三、TSUNG...

    Tsung负载测试tigase

    2. **分布式架构**:能够跨多台服务器进行部署,实现大规模的压力测试。 3. **高效性**:通过Erlang语言的并发特性,可以在较低硬件配置的机器上模拟大量并发连接。 4. **可扩展性**:支持自定义测试脚本,可以根据...

    tsung最新用户手册

    对于XMPP即时通讯服务器,Tsung可以模拟消息传递和连接状态的测试。 用户手册还解释了如何使用代理记录器功能,该功能允许用户记录特定协议的交互过程,并在之后的测试中重放,这在测试具有复杂交互的应用时特别...

    Socket服务器压力测试工具

    Socket服务器压力测试是针对网络通信服务进行性能评估的重要方法,主要目的是检验系统在高负载条件下的稳定性和处理能力。在IT行业中,Socket编程是构建网络应用程序的基础,它提供了低级别的网络连接接口,允许应用...

    tsung+erlang包

    Tsung 是一个开源的多协议负载和性能测试工具,它可以模拟大量用户并发访问服务器,从而评估系统的负载能力和稳定性。Tsung 的设计目标是提供一个灵活、可扩展的解决方案,能够测试各种网络服务,如 HTTP、FTP、TCP...

    tsung脚本及说明

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

    tsung-1.5.1.tar.gz

    Tsung可以模拟成千上万的虚拟用户与Openfire服务器进行交互,例如登录、发送消息、加入群组等操作,从而评估Openfire在高并发环境下的性能瓶颈和稳定性。 使用Tsung进行压力测试时,用户可以自定义测试场景,配置...

    tsung1.6.0

    1. **分布式测试**:Tsung可以在多个服务器上运行,生成分布式的负载,能够模拟来自全球不同地点的用户访问,提供更真实的测试环境。 2. **多协议支持**:覆盖了Web服务的各种协议,包括HTTP、HTTPS,以及数据库、...

    Openfire 3.9.3 Load Test Tsung配置xml

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

    基于Kubernetes的分布式压力测试方案

    利用Kubernetes的动态资源调度功能和集群的动态伸缩特性,可以在需要进行压力测试时启动测试节点,在测试结束后释放资源给其他业务,甚至通过集群扩容和缩容临时为压力测试提供更多计算资源。这种方案不仅提高了硬件...

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

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

    tsung-1.3.3

    Tsung是一个高度可扩展、分布式的多协议负载和性能测试工具,专为模拟大量用户并发访问系统而设计。它支持多种网络协议,包括HTTP、HTTPS、FTP、TCP、UDP、jabber/xmpp、ldap、ldap/s、SOAP、XML-RPC等,使其成为...

    tsung安装使用说明

    Tsung 是一款基于 Erlang 开发的高性能压力测试工具,主要用于评估系统的并发处理能力。它支持多种协议,包括 HTTP、WebDAV、Jabber/XMPP、PostgreSQL、LDAP 和 MySQL,并且具备强大的分布式负载生成能力。Tsung 的...

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

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

    新建文件夹-压力测试工具.zip

    在IT行业中,压力测试是一种非常重要的质量保证环节,它用于评估和验证软件系统在高负载或大量并发用户访问情况下的性能、稳定性和可扩展性。"新建文件夹-压力测试工具.zip"很可能是包含了一些常用的压力测试工具...

Global site tag (gtag.js) - Google Analytics