【问题标题】:What is the limit of TCP connections per machine using TSUNG?使用 TSUNG 的每台机器的 TCP 连接数限制是多少?
【发布时间】:2023-03-21 07:08:01
【问题描述】:

我想使用 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 核的机器。

【问题讨论】:

    标签: tcp erlang ejabberd tsung


    【解决方案1】:

    这取决于两个因素:

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

    有关第一个的信息,请参阅 Advanced Erlang 文档的 10.2 系统限制部分中的 open ports。它可以在启动 Erlang VM 时使用+Q 选项进行更改。默认是16384。可以使用erlang:system_info/1查看当前限制:

    erlang:system_info(port_limit).
    

    对于第二个信息,只需在 shell 中使用ulimit -n。如何更改此值取决于操作系统,但这是一个热门话题,因此您可以轻松搜索说明。

    【讨论】:

    • 嘿,可以在同一台机器上运行多个 tsung 客户端吗?
    • 我不了解 Tsung,但当然可以在同一台机器上运行多个 Erlang VM。考虑到 Tsung 是一个 Erlang 应用程序,没有理由运行多个 Erlang VM,每个 VM 都运行自己的 Tsung(除非有特定的 Tsung 要求,这不太可能)。如果只有您的节点有足够的功率,那就去吧。另一方面,在同一台机器上运行多个 Tsung 安装和运行一个产生更多负载(具有更多连接)之间有什么区别? Erlang 在多核机器上的扩展性很好。
    • 结果还取决于您可以在服务器上使用的 IP 数量。
    猜你喜欢
    • 2011-05-22
    • 2012-03-18
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    相关资源
    最近更新 更多