在深入使用EMQ以及MQTT协议之后有一些心得和大伙分享一下
附上:
喵了个咪的博客:w-blog.cn EMQ官方地址:http://emqtt.com/ EMQ中文文档:http://emqtt.com/docs/v2/guide.html
1.流量消耗
我们知道在MQTT心跳的时候消耗为2字节,但是实际上测试下来60秒心跳间隔,一天花费了250KB流量,平均下来一次心跳0.17KB,要是使用了证书每天消耗有470KB左右一次心跳0.32KB左右
这貌似和所谓的最小2b的心跳大小不符合呀,随后笔者拜托了测试同事进行了抓包发现一次心跳会有三个阶段,ping->pone->ack 关于这三个阶段的消耗如下
PS : 结论貌似是这样的,笔者也是小白不太清楚具体的原因希望有大神能够解答一下
TLS证书带来的消耗
关于另外一个问题就是TLS,使用TLS当然能带来很多好处,最直接的就是安全度提高了,但是在使用之前要考虑清楚TLS带来的消耗:
- 第一是流量上的消耗,心跳包几乎翻了倍
- 第二就是性能上 TCP 1G内存可以维持5W的链接数,使用TLS 1G内存只能维持1.5W左右的链接数
以下是笔者压测TLS的结果
- 12W链接 8GB内存消耗
- 15W链接 CPU维持利用率在 100% ~ 150%
- 25W链接 12GB内存消耗
- 每秒链接速度 3000/S 4核心剩余20%空闲
以下是对应的页面是25W TLS链接的消耗
还有一些小问题
- 如果EMQ重启 作为服务端虽然能够连上,但是对 topic 订阅丢失
- 使用K8S部署 无法突破65536限制, 最大连接数被限制到65536