`
langzhe
  • 浏览: 286106 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ejabberd/tsung 做压力测试万万不可忽视测试工具问题

 
阅读更多

这两天 用tsung测试ejabberd服务器。

2万用户在线,发送online chat message chat/20s。统计结果显示大量用户非常正常close。

还显示出很多error_unkown 错误,次错误出现的数量与非常正常close的基本相等。

很显然此测试结果不准确。反反复复测试 chat数量越多,此问题越严重。

跟踪代码发现get_online 中调用了gen_server:call 默认是5S。我索性直接去掉了,自己生成了的用户在线id.此问题算是解决了,接来要看看get_online里面的算法。

0
1
分享到:
评论
3 楼 langzhe 2015-11-17  
<server host='127.0.0.1' port='5222' type='tcp'/>
我是自己hosts 配置一个车 test.com 之类
dlliwei 写道
jabberd_register.xml 内容如下(我的server client在同一台PC上):
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/local/share/tsung/tsung-1.0.dtd">
<tsung loglevel="notice" dumptraffic="false" version="1.0">

  <clients>
    <client host="localhost" use_controller_vm="true">
    </client>
  </clients>

<servers>
   <server host='127.0.0.1' port='5222' type='tcp'/>
</servers>

<!-- register 200000 users in less than 15 minutes  -->
<load>
  <arrivalphase phase="1" duration="15" unit="minute">
    <users maxnumber="200000" interarrival="0.0025" unit="second"></users>
  </arrivalphase>
  </load>

<options>
  <option type="ts_jabber" name="global_number" value="5"></option>
  <option type="ts_jabber" name="userid_max" value="200000"></option>
  <option type="ts_jabber" name="domain" value="localhost"></option>
------->此处唯一修改点value。 server机器上/etc/hosts内配置了: "127.0.0.1  localhost", 并且ejabberd.yml 中也有“hosts:localhost”
  <option type="ts_jabber" name="username" value="tsung"></option>
  <option type="ts_jabber" name="passwd" value="tsung"></option>
</options>

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

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

    <request>
      <match do="abort" when="match">error</match>
      <jabber type="register" ack="local" id="new"></jabber>
    </request>

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

  </session>
2 楼 dlliwei 2015-11-12  
jabberd_register.xml 内容如下(我的server client在同一台PC上):
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/local/share/tsung/tsung-1.0.dtd">
<tsung loglevel="notice" dumptraffic="false" version="1.0">

  <clients>
    <client host="localhost" use_controller_vm="true">
    </client>
  </clients>

<servers>
   <server host='127.0.0.1' port='5222' type='tcp'/>
</servers>

<!-- register 200000 users in less than 15 minutes  -->
<load>
  <arrivalphase phase="1" duration="15" unit="minute">
    <users maxnumber="200000" interarrival="0.0025" unit="second"></users>
  </arrivalphase>
  </load>

<options>
  <option type="ts_jabber" name="global_number" value="5"></option>
  <option type="ts_jabber" name="userid_max" value="200000"></option>
  <option type="ts_jabber" name="domain" value="localhost"></option>
------->此处唯一修改点value。 server机器上/etc/hosts内配置了: "127.0.0.1  localhost", 并且ejabberd.yml 中也有“hosts:localhost”
  <option type="ts_jabber" name="username" value="tsung"></option>
  <option type="ts_jabber" name="passwd" value="tsung"></option>
</options>

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

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

    <request>
      <match do="abort" when="match">error</match>
      <jabber type="register" ack="local" id="new"></jabber>
    </request>

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

  </session>
1 楼 dlliwei 2015-11-12  
你好,我安装tsung后执行命令: tsung -f jabberd_register.xml start.
提示错误:
Starting Tsung
Log directory is: /home/liwei/.tsung/log/20151112-1533
[os_mon] memory supervisor port (memsup): Erlang has closed
[os_mon] cpu supervisor port (cpu_sup): Erlang has closed

看log文件,就 tsung_controller@ubuntu.log 有点有用的信息,含有ERROR REPORT的信息如下:

=ERROR REPORT==== 12-Nov-2015::15:33:34 ===
** Generic server ts_config_server terminating
** Last message in was {'$gen_cast',{newbeams,[localhost]}}
** When Server state == {state,
                         {config,undefined,0,5,none,text,undefined,
                          [{client,"localhost",1.0,800,[]}],
                          [{server,"192.168.5.107",5222,ts_tcp,1}],
                          undefined,[],
                          [{arrivalphase,1,900000,undefined,0.4,200000,0,[],
                            1}],
                          undefined,false,[],[],ts_jabber,
                          [{session,1,100,ts_jabber,"jabber-example",true,
                            false,10000,
                            {proto_opts,negociate,"/http-bind/",false,
                             "/chat","binary",10,3,600000,infinity,infinity,
                             32768,32768,undefined,undefined,[],true,true},
                            undefined,3,undefined,undefined,undefined,
                            undefined,undefined}],
                          [],61472,true,undefined,3,3,[],0,10000,
                          {proto_opts,negociate,"/http-bind/",false,"/chat",
                           "binary",10,3,600000,infinity,infinity,32768,32768,
                           undefined,undefined,[],true,true},
                          now,none,200000,[],undefined,"d",false,1,undefined,
                          20,[]},
                         "/home/liwei/.tsung/log/20151112-1533",0,0,[],
                         undefined,1,undefined,ubuntu,0,0,undefined,1.0}
** Reason for termination ==
** {function_clause,
       [{lists,min,[[]],[{file,"lists.erl"},{line,314}]},
        {ts_config_server,handle_cast,2,
            [{file,"src/tsung_controller/ts_config_server.erl"},{line,383}]},
        {gen_server,try_dispatch,4,[{file,"gen_server.erl"},{line,615}]},
        {gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,681}]},
        {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,240}]}]}

=ERROR REPORT==== 12-Nov-2015::15:33:34 ===
** State machine ts_launcher terminating
** Last event in was {launch,[],"localhost",now}
** When State == wait
**      Data  == {launcher,undefined,[],"ubuntu",undefined,false,0,undefined,
                           undefined,undefined,1,undefined,1,undefined}
** Reason for termination =
** {{function_clause,
        [{lists,min,[[]],[{file,"lists.erl"},{line,314}]},
         {ts_config_server,handle_cast,2,
             [{file,"src/tsung_controller/ts_config_server.erl"},{line,383}]},
         {gen_server,try_dispatch,4,[{file,"gen_server.erl"},{line,615}]},
         {gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,681}]},
         {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,240}]}]},
    {gen_server,call,
        [{global,ts_config_server},{get_client_config,"localhost"},60000]}}

=ERROR REPORT==== 12-Nov-2015::15:33:34 ===
** State machine ts_launcher_static terminating
** Last event in was {launch,[],"localhost"}
** When State == wait
**      Data  == {state,"ubuntu",undefined}
** Reason for termination =
** {{function_clause,
        [{lists,min,[[]],[{file,"lists.erl"},{line,314}]},
         {ts_config_server,handle_cast,2,
             [{file,"src/tsung_controller/ts_config_server.erl"},{line,383}]},
         {gen_server,try_dispatch,4,[{file,"gen_server.erl"},{line,615}]},
         {gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,681}]},
         {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,240}]}]},
    {gen_server,call,
        [{global,ts_config_server},
         {get_client_config,static,"localhost"},
         60000]}}



请问你直到是什么问题吗??

相关推荐

    ejabberd 服务器测试客户端spark

    在这个场景中,"ejabberd 服务器测试客户端spark"就是这样一个工具,用于验证ejabberd服务器的安装和运行情况。 Spark是一款流行的XMPP客户端,由Openfire团队开发,支持多种操作系统,包括Windows、Mac OS X和...

    ejabberd安装配置[归纳].pdf

    2. 命令行测试:用户可以通过命令行工具来测试Ejabberd的服务。 IM客户端 Ejabberd支持多种IM客户端,包括: 1. Spark IM:是一款流行的IM客户端,支持多种协议,包括XMPP、MSN、Yahoo等。 2. Pandion:是一款...

    ejabberd源码

    同时,ejabberd还提供了管理工具,如命令行工具和Web管理界面,用于监控和管理服务器状态。 总之,ejabberd是一个强大且灵活的即时通讯解决方案,适合那些需要构建可扩展、安全和高度定制的通信平台的开发者和企业...

    mod_http_offline:ejabberd 模块在用户离线时发送帖子

    Ejabberd 模块在用户... erlc -I /lib/ejabberd/include/ -pa ~/ejabberd/deps/lager/ebin/ mod_http_offline.erl 将 .beam 文件移动到 ejabberd ebin 文件夹: sudo mv mod_http_offline.beam /lib/ejabberd/ebin

    ejabberd服务器安装及客户端注册文档

    配置文件位于/etc/ejabberd/ejabberd.cfg,这是ejabberd的核心配置文件,所有的服务器参数都可以在这个文件中进行修改。如文档所述,需要设置管理员账号,这通常是通过编辑配置文件中的管理员设置部分来完成。在该...

    iOS xmpp ejabberd服务器

    安装ejabberd-2.1.11-osx-installer.app后,可以通过Web管理界面或命令行工具进行这些配置。 在iOS客户端应用中,首先需要初始化XMPPStream对象并连接到ejabberd服务器。这涉及设置服务器地址、端口、用户名和密码...

    Android使用smack连接ejabberd服务器注册、收发消息

    ejabberd是一个开源的XMPP服务器,它提供了稳定、安全且可扩展的服务,支持多种编程语言的客户端接口。Smack是Java和Android平台上常用的XMPP客户端库,它提供了丰富的API,使得开发者可以轻松地构建XMPP应用。 **...

    android+ejabberd

    IM(ejabberd)服务器的客户端android开发的代码详解,该代码例子包含单聊、群聊、发送文字、发送及接收文件等功能。

    ejabberd windows installer

    ejabberd是一款开源的XMPP服务器,它基于Erlang编程语言,提供高度可扩展性和高并发处理能力。在Windows环境下,ejabberd通常通过安装程序进行部署,这正是"ejabberd windows installer"所涉及的内容。Ejabberd不...

    ejabberd-stanza-ack:ejabberd 13.xx的ejabberd节确认模块

    ejabberd stan ack v0.6 当ejabberd服务器已收到您的消息时,此模块将向您的发件人发送确认/确认消息,而当邮件的收件人已收到您的消息时,此模块将发送另一条确认/确认消息。 在这方面,它提供与移动聊天应用程序...

    ejabberd的安装包

    ejabberd安装包,很好的工具!适合安装!一定会很好用的!

    Android IM开发 Ejabberd+asmck+spack

    Ejabberd支持多种编程语言的API,可以方便地与其他系统集成,且具有高度可扩展性和高可用性。在本项目中,Ejabberd负责处理用户注册、登录、消息传输、群组聊天、离线消息存储等功能,为Android和PC客户端提供稳定的...

    即时通讯服务端测试工具

    即时通讯服务端测试工具是开发过程中不可或缺的一部分,特别是在构建基于XMPP协议的系统时。XMPP(Extensible Messaging and Presence Protocol)是一种开放标准,用于实时通信和数据交换,广泛应用于聊天应用、协作...

    ejabberd中mod_privacy_odbc.erl实现没有完全遵循xmpp协议

    总之,ejabberd的`mod_privacy_odbc.erl`可能存在与XMPP协议不兼容的问题,这可能影响到隐私设置的正确性和客户端的兼容性。通过深入理解XMPP协议和ejabberd的源代码,可以定位并修复这些不兼容之处,以提高系统的...

    ejabberd-14.07聊天服务器

    ejabberd是一款高度可扩展且稳定可靠的XMPP聊天服务器,专为满足现代通信需求而设计。这款服务器在IT行业中广泛应用于构建实时通讯系统,尤其是针对手机端应用,如Android和iOS的聊天功能。ejabberd的强大在于其灵活...

    Ejabberd-Packet-Interceptor:拦截和更改消息的 Ejabberd 模块

    Ejabberd-Packet-Interceptor 拦截和更改消息的 Ejabberd 模块这个模块接受一个 Ejabberd 消息包,... 将intercept.py放在/etc/ejabberd/为什么使用 Python 作为正文解析器? 首先,我的 Erlang 很烂。 Erlang 本身也

    ejabberd安装配置.docx

    Ejabberd 安装配置 Ejabberd 是一个基于 XMPP 协议的 instant messaging 服务器,主要用于实时通信和即时消息传递。下面是 Ejabberd 安装配置的相关知识点: 一、Ejabberd 下载 Ejabberd 的安装需要从官方网站...

    ejabberd 群聊 strophe.js 实现

    ejabberd是一款开源的XMPP服务器,常用于构建实时通信系统,如即时消息(IM)、群聊等。XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放标准,用于实现即时通信和在线状态传输。在这个场景...

    Ejabberd-2.1.10-mac

    Ejabberd是一款高度可扩展、安全且可靠的即时通讯服务器软件,主要基于XMPP协议。在标题"Ejabberd-2.1.10-mac"中,我们可以推断这是一份针对Mac平台的Ejabberd服务器软件的特定版本,即2.1.10。这个版本可能包含了...

Global site tag (gtag.js) - Google Analytics