代码之家  ›  专栏  ›  技术社区  ›  sjmach

使用TSUNG的每台机器的TCP连接限制是多少?

  •  0
  • sjmach  · 技术社区  · 10 年前

    我想使用TSUNG生成大量请求。

    我的配置文件是

    <?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" maxusers="70000" use_controller_vm="true"/>
      </clients>
    
    <servers>
       <server host="myhost" port="5222" type="tcp"/>
    </servers>
    
    <load>
      <arrivalphase phase="1" duration="70000" unit="second">
        <users arrivalrate="10" unit="second"/>
      </arrivalphase>
      </load>
    
    <options>
      <option type="ts_jabber" name="global_number" value="70000"/>
    <option type="ts_jabber" name="domain" value="my-domain"/>
      <option name="file_server" id="userdb" value="/root/userdata.csv"/>
    </options>
    
    <sessions>
    <session probability="100" name="xmpp-connection" type="ts_jabber" bidi="true" $
    
      <setdynvars sourcetype="file" fileid="userdb" delimiter=";" order="iter">
             <var name="userid"/>
       </setdynvars>
              <transaction name="initial_stream">
            <request subst="true">
               <jabber type="connect" ack="local">
                     <xmpp_authenticate username="tsung%%_userid%%" passwd="tsung%%_userid%%"/>
              </jabber>
             </request>
       </transaction>
    
       <thinktime value="2"/>
    
       <transaction name="authenticate">
           <request> <jabber type="auth_sasl" ack="local"/> </request>
           <request> <jabber type="connect" ack="local"/> </request>
           <request> <jabber type="auth_sasl_bind" ack="local"/> </request>
           <request> <jabber type="auth_sasl_session" ack="local"/> </request>
       </transaction>
        <transaction name="roster_get">
           <request>  <jabber type="iq:roster:get" ack="local"/> </request>
       </transaction>
    
    
       <request> <jabber type="presence:initial" ack="no_ack"/> </request>
        <for from="1" to="28" incr="1" var="counter">
           <request> <jabber type="raw" ack="no_ack" data="
    "/></request>
           <thinktime value="60" random="false"/>
       </for>
    
       <for from="1" to="30" incr="1" var="counter">
           <request> <jabber type="raw" ack="no_ack" data="
    "/></request>
          <thinktime value="60" random="false"/>
       </for>
    
      <transaction name="close">
         <request> <jabber type="close" ack="no_ack"/> </request>
       </transaction>
    
     </session>
    </sessions>
    </tsung>
    

    根据TSUNG的文档,我可以使用多个客户端ip(一台机器)访问服务器 http://tsung.erlang-projects.org/user_manual/conf-client-server.html

    可以使用多个虚拟IP来模拟更多的机器。当负载平衡器使用客户端IP在服务器集群之间分配流量时,这非常有用。

    <clients>
      <client host="louxor" weight="1" maxusers="800">
        <ip value="10.9.195.12"></ip>
        <ip value="10.9.195.13"></ip>
      </client>
      <client host="memphis" weight="3" maxusers="600" cpu="2"/>
    </clients>
    

    我想知道使用TSUNG每台机器可以生成多少连接。

    我有一台32 GB、8核的机器。

    1 回复  |  直到 10 年前
        1
  •  2
  •   Greg    10 年前

    这取决于两个因素:

    1. 同时打开的Erlang端口的最大数量。
    2. 操作系统中打开的文件描述的最大数量。

    有关第一个的信息,请参见 open ports 在高级Erlang文档的10.2系统限制部分。可以使用 +Q 选项。默认值为16384。可以使用 erlang:system_info/1 :

    erlang:system_info(port_limit).
    

    对于第二个信息 ulimit -n 在外壳中。如何更改此值取决于操作系统,但这是一个热门话题,因此您可以轻松搜索指令。

    推荐文章