mqant压力测试工具
简介armyant是从http压力测试工具hey改装而成。
hey只支持http接口的压力测试而armant可以自定义压测协议。
目前默认实现了http,mqtt两种协议的压力测试工具
依赖模块go get github.com/eclipse/paho.mqtt.golang
使用方法
armyant无命令行工具,目前需要通过源码编译执行
http压测
入口 http_task.go
具体实现: http_task/work.go
mqtt压测
入口 mqtt_task.go
具体实现 mqtt_task/work.go
可以通过修改work.go代码来灵活更改具体的压测内容
操作系统最多文件打开限制
默认情况下普通操作系统都会限制系统同时打开的文件数量,mac系统默认是256. 如果不放开该限制armyant发出更多并发请求。
mac打开限制方式
linux打开方式
自己百度
paho.mqtt.golang 内存怪兽
默认的paho.mqtt.golang客户端是内存怪兽,每一个mqtt客户端都会消耗巨大内存 gopath/src/github.com/eclipse/paho.mqtt.golang/client.go
c.messageIds = messageIds{index: [65535]Token{}} 默认会创建65535个Token
改为
c.messageIds = messageIds{index: [10]Token{}}
gopath/src/github.com/eclipse/paho.mqtt.golang/messageids.go
messageids.go 文件也需要做对应修改
mqant的压测参数
系统硬件:
MAC电脑2核,16G内存,固态硬盘
进程:
- mqantserver 进程一个
- armyant 压测进程一个
压测结果:
每一个连接每秒发出1个远程调用请求
能达到的最大并发数为:5000
内存使用:
mqantserver进程 131M aryant 进程 191m
如只连接不发远程调用请求可以轻松上万并发
本次压测结果并不严谨,所用设备是自己的MAC电脑,同时还开启了很多编译器。 压测工具与测试进程也都在同一台机器,压测瓶颈主要在CPU性能上