TSung测试XMPP协议--测试过程中出现问题

以下问题是我自己的理解,可能有些地方解释的不对。写这篇文章是方便自己以后出现相同的问题还要去google。
先看我的配置文件:

<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/opt/lsmp/openfire/tsung/share/tsung/tsung-1.0.dtd">
<tsung loglevel="notice" dumptraffic="false" version="1.0">
    
    <clients>   
      <client host="shlab135"  maxusers="80000" cpu="3">   
          <ip value="10.1.7.135"></ip>   
      </client> 
      
    </clients> 

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

    <!-- register 80000 users in less than 15 minutes -->
    <load>
        <arrivalphase phase="1" duration="15" unit="minute">
            <users maxnumber="80000" interarrival="0.0125" unit="second"></users>
                     <!--1/150=interarrival   150*duration*60=all number-->
                     算法: 1 每秒/每秒入用户数 = [参数:"interarrival"]
                          2 总用户数 = 每秒入用户数 * 60秒<分钟>    
        </arrivalphase>
    </load>

    <options>
        <option type="ts_jabber" name="global_number" value="5"></option>
        <option type="ts_jabber" name="userid_max" value="80000"></option>
        <option type="ts_jabber" name="domain" value="erlang-projects.org"></option>
        <option type="ts_jabber" name="username" value="135shlab"></option>
        <option type="ts_jabber" name="passwd" value="135shlab"></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>
            <!-- 注册 -->
            <request>
                <match do="abort" when="match">error</match>
                <jabber type="register" ack="local" id="new"></jabber>
            </request>
            <!-- 认证 -->
            <transaction name="authenticate">
                <request>
                    <jabber type="auth_get" ack="local"></jabber>
                </request>
                <request>
                    <jabber type="auth_set_plain" ack="local"></jabber>
                </request>
            </transaction>

            <!-- 登录后持续300秒 -->
            <request>
                <jabber type="presence:initial" ack="no_ack" />
            </request>
            <thinktime value="600"></thinktime>
            <!-- 关闭 -->

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

        </session>
    </sessions>

</tsung>
一:看xml文件load部分,每秒入80个用户在15分钟内。总的算起来15分钟大概是72000个用户注册和在线。我设置的最大的maxnumber="80000"。这样就会有两个限制。 
  1. 一个是最大用户数80000
  2. 在15分钟内每秒入80个,也就是说15分钟内入的用户数。

上面这两种限制的优先级是第二条,优先时间限制。
安装时间配置也可以用下面这种方法:

<arrivalphase phase="1" duration="10" unit="minute">
    <users arrivalrate="10" unit="second"> </users>
 </arrivalphase>
解释:总共运行10分钟,每秒入10个用户。 


二:如果多个tsung压一个cm或者server。一定要把tsung.xml 生成用户名的规则给改变。不然多个tsung client 生成出来的user 会存在名字相同的。这样登录server就会认为已经登录了。不在进行处理。
    我就是用了tsung client 由于没改生成规则<<option type="ts_jabber" name="username" value="135shlab"></option> 这段> 每次测试都只能够到6W多。

三:如果tsung client cpu 内存都没压力。但是用户又上不去。修改/etc/sysctl.conf 文件
    

net.ipv4.tcp_rmem=4096 4096 16777216
net.ipv4.tcp_wmem=4096 4096 16777216
net.ipv4.ip_local_port_range = 1024 65000
fs.file-max=65535000

修改后立马生效则需要执行:sysctl –p
 TCP微调


     大多数现代操作系统一样,Linux现在做得很好的自动调整 TCP缓冲区,但,默认最大Linux的TCP缓冲区大小还是太小。下面是一些示例sysctl.conf中不同类型的主机命令。
对于一台主机与一个10G网卡,高达100ms的RTT网络路径优化,添加到/ etc / sysctl.conf中。

#增加TCP最大缓冲区大小可设置使用setsockopt()
net.core.rmem_max 16777216 
net.core.wmem_max = 16777216 
#增加Linux的自动调整TCP缓冲区限制
net.ipv4.tcp_rmem = 4096 87380 16777216 
net.ipv4.tcp_wmem = 4096 65536 16777216 
#增加处理器的输入队列
net.core.netdev_max_backlog = 30000 
#推荐的默认的拥塞控制的长度是HTCP 
net.ipv4.tcp_congestion_control = HTCP 
#建议巨帧的主机启用
net.ipv4.tcp_mtu_probing = 1
还可以添加到/ etc / rc.local中(其中N是多少10G NIC):  
    / sbin目录/ ifconfig命令ethN的txqueuelen 10000 


对于一个10G网卡的主机上的高达200ms的RTT,或一个40G NIC路径可达50毫秒RTT网络路径优化:

#增加TCP最大缓冲区大小可设置使用setsockopt()
net.core.rmem_max 67108864 
net.core.wmem_max = 67108864 
#增加Linux的自动调整TCP缓冲区限制
net.ipv4.tcp_rmem = 4096 87380 67108864 
net.ipv4.tcp_wmem = 4096 65536 67108864 
#增加处理器的输入队列
net.core.netdev_max_backlog = 250000 
#推荐的默认的拥塞控制的长度是HTCP 
net.ipv4.tcp_congestion_control = HTCP 
#建议巨帧的主机启用
net.ipv4.tcp_mtu_probing = 1
还可以添加到/ etc / rc.local中(其中N是多少10G NIC): 
    / sbin目录/ ifconfig命令ethN的txqueuelen 10000 
注意:你应该独自离开net.tcp_mem,为默认值都很好。一些性能专家说,也增加net.core.optmem_max的匹配net.core.rmem_max和net.core.wmem_max,但我们还没有发现有什么差别。也有专家说,设置net.ipv4.tcp_timestamps和net.ipv4.tcp_sack为0,因为这样可以降低CPU的负载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值