Giter Site home page Giter Site logo

skyformat99 / mqtttester Goto Github PK

View Code? Open in Web Editor NEW

This project forked from houjixin/mqtttester

0.0 1.0 0.0 139 KB

MQTT长连接压测工具,采用C语言开发,内部使用epoll对多路客户端IO进行复用管理,支持绑定多个本地IP以突破单本地IP连接量的限制

C 99.47% C++ 0.08% Makefile 0.45%

mqtttester's Introduction

一、功能说明: 测试工具MqttTester可以对mosquitto服务器进行如下测试: 1)连接测试,该测试模式下测试工具可向mosquitto发起多个连接,连接的个数可由参数配置; 2)自收发消息测试,该模式下,测试工具的每个连接都可以自己给自己发送消息, 测试工具与mosquitto的连接数可以由参数配置,并且消息发送的速度也可由参数控制; 3)一对多测试,该模式下,测试工具可以选用其中一个连接给其他连接发送消息, 测试工具与mosquitto的连接数可由参数配置,且消息发送速度也可由参数控制;发送连接的id可以由参数指定,也可由测试工具自己选择;

二、编译说明: 直接进入Mosq_Tester目录下,使用命令:make 即可直接编译,另外还可使用make clean清楚编译生成的所有目标文件。

三、使用方法及参数说明: MqttTester的测试参数都存放在Mosq_Tester目录下的sub_client.conf文件里,配置参数以分段方式组合,共有COMMON、GROUP、RECV、SEND四个段,在实际使用过程中,不能改变参数所属的段 否则程序将无法找到,在程序中获取参数也必须提供参数所属的段名和参数名,才能获取到对应参数的值。 配置文件中,各参数的含义如下: 1、COMMON段 1)host表示mosquitto服务器的ip地址 2)port表示mosquitto服务器的port地址 2、GROUP段 1)startid 客户端连接所使用的起始id 2)endid 客户端连接所使用的结束id [备注]目前该测试工具所用的id都是纯数据,id使用的范围是[startid,endid),客户端的连接数也是由这两个参数进行控制,为:endid-startid。 例如,如果要向mosquitto压100000个连接,则可以如下配置: startid = 0 endid = 100000 3)keepalive客户端所使用的keepalive时间。 4)topic_prefix客户端订阅时使用的topic前缀,默认情况下,客户端使用其id作为topic,如果配置了该参数,则topic就变味该参数+客户端的id, 例如该参数配置为:topic_prefix = client/ 客户端的id为:1234,则该客户端订阅的topic就是:client/1234。

	下列参数主要用于控制连接建立的速度:
	5)sleep_time_max = 3
	6)sleep_time_mid = 2
	7)sleep_time_min = 1
	8)sleep_level1 = 20000
	9)sleep_level2 = 40000
	10)sleep_level3 = 50000
	[备注] 上述三个参数需满足条件:sleep_level1 <= sleep_level2 <= sleep_level3 <= (endid - startid)
	11)sleep_interval_max = 1500
	12)sleep_interval_mid = 1000
	13)sleep_interval_min = 50
	参数5)~13)按照下列方式控制连接建立的速度:
	[1]当客户端连接数小于sleep_level1时,每建立sleep_interval_max个连接休息sleep_time_min秒,否则转[2];
	[2]当客户端连接数小于sleep_level2时,每建立sleep_interval_mid个连接休息sleep_time_min秒,否则转[3];
	[3]当客户端连接数小于sleep_level3时,每建立sleep_interval_mid个连接休息sleep_time_mid秒,否则转[4];
	[4]每建立sleep_interval_max个连接休息sleep_time_max秒。

3、RECV段
	1)recv_print_speed 该参数表示测试工具每收到recv_print_speed条消息就打印一条消息日志;
	
4、SEND段
	1)test_type 测试类型,0:只接受不发送; 1: 每个连接都发给自己; 2:一发多收,发送的连接给除自己之外的其他连接进行发送;
	2)send_print_speed 表示打印发送日志的频率,即每发送send_print_speed条消息打印一条消息发送的日志;
	3)sleepAfterBatch  表示每批消息发送完毕后,线程睡眠的时间,单位:毫秒;
	4)send_context_id	表示一对多发送时,发送连接的id,如果该参数不在[startid,endid)内,则测试工具自动选择第一个作为发送连接。

mqtttester's People

Contributors

houjixin avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.