使用 Tsung 进行测试时 Tigase xmpp 服务器崩溃

Posted

技术标签:

【中文标题】使用 Tsung 进行测试时 Tigase xmpp 服务器崩溃【英文标题】:Tigase xmpp server crash while testing with Tsung 【发布时间】:2013-06-13 08:28:10 【问题描述】:

我正在尝试测试 Tigase XMPP 服务器 5.2.0 的功能。

我正在使用 tsung 1.4.2 运行测试以达到 20K 连接的用户(一旦 20K 工作,我将尝试使用 150K 进行检查)。 tigase 在大约 6000 个连接后崩溃。 有人可以帮我找出问题吗?

详情: tsung 的参数是:(每秒 12 个连接,连接 1666 秒 = 20K 个用户)

<?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="true" maxusers="50000"></client>
  </clients>

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

  <load>
   <arrivalphase phase="1" duration="2000" unit="minute">
   <users interarrival="0.08" unit="second"></users>
   </arrivalphase>
  </load>

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

  <sessions>
   <session probability="100" 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>

    <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="2"></thinktime>

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

    <thinktime value="1666"></thinktime>

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

  </session>


 </sessions>
</tsung>

在 tigase 中的参数是:(init.properties)

config-type=--gen-config-def
--admins=admin@my_domain
--virt-hosts = my_domain

--user-db=mysql
--user-db-uri=jdbc:mysql://mysql_ip:3306/tigasedb?user=user&password=password&useUnicode=true&characterEncoding=UTF-8&autoCreateUser=true

tigase.conf:

ENC="-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"
DRV="-Djdbc.drivers=com.mysql.jdbc.Driver:org.postgresql.Driver:org.apache.derby.jdbc.EmbeddedDriver"
#GC="-XX:+UseBiasedLocking -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:ParallelCMSThreads=2 -XX:-ReduceInitialCardMarks"
#EX="-XX:+OptimizeStringConcat -XX:+DoEscapeAnalysis -XX:+UseNUMA"
JAVA_HOME="/usr/lib64/jvm/java-1.6.0-openjdk"
CLASSPATH=""
JAVA_OPTIONS="$GC $EX $ENC $DRV -server -Xms100M -Xmx200M -XX:PermSize=32m -XX:MaxPermSize=256m -XX:MaxDirectMemorySize=128m "
TIGASE_CONFIG="etc/tigase.xml"
TIGASE_OPTIONS=" --property-file etc/init.properties "

【问题讨论】:

【参考方案1】:

JVM 的内存设置过低。您的安装可能会因为 OOM 而崩溃。

【讨论】:

以上是关于使用 Tsung 进行测试时 Tigase xmpp 服务器崩溃的主要内容,如果未能解决你的问题,请参考以下文章

Tigase 拒绝 Tsung

性能测试之tsung

在 xmpp ejabberd 服务器上使用 Tsung 进行负载测试是不是会创建原始数据?

HTTP负载测试——Tsung

MongooseIM (websockets) 的 Tsung 负载测试

Smack API 在本地登录 Tigase 服务器设置时出错