Chinaunix首页 | 论坛 | 博客
  • 博客访问: 86036
  • 博文数量: 10
  • 博客积分: 283
  • 博客等级: 二等列兵
  • 技术积分: 149
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-24 15:07
文章分类

全部博文(10)

文章存档

2011年(10)

我的朋友

分类: 系统运维

2011-12-27 12:34:59

tsung是一个非常好用的压力测试软件,基于erlang语言,支持多种协议如xmpp,http,mysql,支持集群,高效率(可以用一台普通的机器压垮几台性能强大的服务器)。
在公司建立内部xmpp服务器时,就可以用tsung来看看这个服务器能够承受多大的压力。
在Ubuntu上装好tsung之后,首先要用ulimit修改系统支持的最大fd数量,否则tsung最多只能创建不到1024个连接。
测试脚本是一个xml文件,就像下面这样:
  1. <?xml version="1.0"?>
  2. <!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd">
  3. <tsung loglevel="notice" version="1.0">

  4. <!-- 下载 : http://tsung.erlang-projects.org/ -->

  5.   <clients>
  6.     <client host="localhost" use_controller_vm="false" maxusers="50000"></client>
  7.     <!--要求能够用私钥ssh到本机,并且连通一次,留下记录在known_hosts-->
  8.     <!--如果use_controller_vm="false",那么每maxusers个连接后会创建一个新的erlangVM,maxuser默认是800-->
  9.     <!--否则达到上限就不再创建连接-->
  10.     <!--能打开了limits,就不要使用多个erlangVM,容易crash-->
  11.   </clients>

  12.   <!-- Server side setup -->
  13.  <servers>
  14.   <server host="svr1.myserver.com" port="5222" type="tcp"></server>
  15.  </servers>

  16.   <load>
  17.    <arrivalphase phase="1" duration="3600" unit="second">
  18.     <users maxnumber="30000" interarrival="0.01" unit="second"></users>
  19.   <!--总共启动的session数目,不过如果连接间隔是0.01的话,不是所有的session都能连接成功-->
  20.    </arrivalphase>
  21.   </load>

  22.   <!-- JABBER parameters -->
  23.   <!-- to synchronise users, use a global acknoledgement -->
  24.  <options>
  25.   <option type="ts_jabber" name="global_number" value="99999"></option>
  26.   <option type="ts_jabber" name="userid_max" value="50000"></option>
  27.   <!--总共账号数目,每个账号同时只登录一次-->
  28.   <option type="ts_jabber" name="domain" value="myserver.com"></option>
  29.   <option type="ts_jabber" name="username" value="myaccount"></option>
  30.   <option type="ts_jabber" name="passwd" value="mypassword"></option>
  31.   <!--账号和密码后面加上 1 到 userid_max 个后缀,后缀不用零填充,长度可变-->
  32.  </options>

  33.   <sessions>

  34.    <session probability="100" name="jabber-example" type="ts_jabber">

  35.     <request> <jabber type="connect" ack="local"></jabber> </request>
  36.     <transaction name="authenticate">
  37.       <request> <jabber type="auth_get" ack="local"></jabber> </request>
  38.       <request> <jabber type="auth_set_plain" ack="local"></jabber> </request>
  39.     </transaction>

  40.     <request> <jabber type="presence:initial" ack="no_ack"/> </request>
  41.     <!-- "presence:initial" : connected -> online -->
  42.     <!-- "presence:final" : online -> connected-->


  43.     <thinktime value="2"></thinktime>
  44.     <transaction name="roster">
  45.       <request> <jabber type="iq:roster:get" ack="local"></jabber></request>
  46.     </transaction>

  47.     <thinktime value="3"></thinktime>
  48.     <transaction name="online">
  49.     <request> <jabber type="chat" ack="no_ack" size="16" destination="online"></jabber> </request>
  50.     </transaction>


  51.     <for from="1" to="180" incr="1" var="counter">
  52.      <thinktime value="120"></thinktime>
  53.      <request> <jabber type="presence:initial" ack="no_ack"/> </request>
  54.      <!--"%%_counter%%"-->
  55.     </for>


  56.     <transaction name="offline">
  57.       <request> <jabber type="chat" ack="no_ack" size="56" destination="offline"></jabber> </request>
  58.     </transaction>

  59.     <request> <jabber type="presence:final" ack="no_ack"/> </request>

  60.     <transaction name="close">
  61.       <request> <jabber type="close" ack="no_ack"></jabber> </request>
  62.     </transaction>

  63.     <!-- 一个session结束后,tsung会立刻启动新的session(即使在这里休眠3600秒),(如果服务器承受得了)保证一直有 userid_max 个连接。如果不想这样,那么用maxnumber来限制最多启用的session数目即可 -->
  64.   </session>
  65.     


  66.  </sessions>
  67. </tsung>
阅读(12769) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

测试小韩2014-10-29 14:13:34

求指导

测试小韩2014-10-29 14:13:03

现在公司对openfire进行的二次开发,需要用Tsung 测试下,5000人在线互发消息的压力情况:

前提:

openfire部署在无桌面的centos下

问题:

1、如何判断所有用户已登录成功

2、在发送消息前,如何进行互加好友的操作

QQ:2937743774