MQTT压力测试之Tsung的使用

            <for from="1" to="10" incr="1" var="loops">

                <request subst="true">

                    <mqtt type="publish" topic="test_topic" qos="1" retained="true">test_message</mqtt>

                </request>

            </for>

<!--断开MQTT消息-->

            <request>

                <mqtt type="disconnect"></mqtt>

            </request>

        </session>

<!--下面为MQTT消息的订阅-->

        <session name="mqtt_subscriber" probability="0" type="ts_mqtt">

            <request>

                <mqtt type="connect" clean_start="true" keepalive="10"  username="user" password="yourpassword"></mqtt>

            </request>

<!--订阅topictest_topicMQTT消息-->

            <request subst="true">

                <mqtt type="subscribe" topic="test_topic" qos="1"></mqtt>

            </request>

<!--等待订阅消息多少时间,这里为60-->

            <request>

                <!-- wait for 60s -->

                <mqtt type="waitForMessages" timeout="60"></mqtt>

            </request>

<!--取消订阅消息test_topic-->

            <request subst="true">

                <mqtt type="unsubscribe" topic="test_topic"></mqtt>

            </request>

<!--断开连接-->

            <request>

                <mqtt type="disconnect"></mqtt>

            </request>

        </session>

    </sessions>

</tsung>

根据上面的mqtt.xml配置说明配置好后,就可以对MQTT Broker服务器施加压力了。

最后找到日志存放路径,然后利用~/tsung/bin/tsung_stats.pl 就可以生成测试报表了。后面分析数据我就不讲了,如果要了解这方面的知识,请关注我站内的其它文章。

上一页123下一页


留言

  1. #1

    测试小酋(2016-07-06 21:19:36)

    @andyzhou  首先,这里的300(s)并不是指MQTT运行的时长,而是指用户加载所用的时间。其次,实际运行的用户数,与我们前面设置的client最大用户数,以及根据加载用户策略时所运行的用户数,以及session的probability分配都有关,所以定位具体原因,需要附上详细的xml配置文件。

  2. #2

    andyzhou(2016-07-06 18:26:49)

    你好 我按照上面的文档进行设置,发现程序设置的时间,并没有按照实际设置的时间结束(<arrivalphase phase="1" duration="300" unit="second">),请问这是什么原因?

    另外,设置用户并发数的时候,发现实际也没有按照那么多的用户进行并发处理,请问这是什么原因?谢谢!

  3. #3

    jessiesun(2016-05-23 10:28:56)

    @ruink,感谢分享! 我运行脚本时报错:ssh: Could not resolve hostname ubuntu:Temporary failure in name resolution,请问您运行这个脚本的时候碰到错误了吗? btw,我的环境是Ubuntu16.04