文档章节

EMQ百万级MQTT消息服务(TLS压测和流量消耗)

喵了_个咪
 喵了_个咪
发布于 06/05 16:28
字数 498
阅读 839
收藏 14

在深入使用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

© 著作权归作者所有

共有 人打赏支持
喵了_个咪
粉丝 310
博文 147
码字总数 192172
作品 4
杨浦
技术主管
私信 提问
加载中

评论(5)

威-仔
威-仔

引用来自“威-仔”的评论

抓包工具是什么呀:relieved:

引用来自“喵了_个咪”的评论

使用的 WireShark
ok
喵了_个咪
喵了_个咪

引用来自“节节草”的评论

现在都在说TCP连接达到十万、百万,其实加了业务,远达不到这个量级。
TCP 是比较困难因为夹杂了业务的逻辑等等,但是EMQ不同,他只是一个承载链接的服务不关心业务只提供具体的功能,加上可以集群对于百万级别的链接数量没有太大的问题
银杏果果
银杏果果
现在都在说TCP连接达到十万、百万,其实加了业务,远达不到这个量级。
喵了_个咪
喵了_个咪

引用来自“威-仔”的评论

抓包工具是什么呀:relieved:
使用的 WireShark
威-仔
威-仔
抓包工具是什么呀:relieved:
EMQ 2.0.6 发布, 百万级 MQTT 消息服务器

EMQ 2.0.6 版本发布,2.0最后一个维护版本。EMQ 是采用 Erlang/OTP 平台开发,全面支持 MQTT V3.1.1 协议,支持集群和百万级连接的开源 MQTT 消息服务器。 更新内容: 升级esockd库到v4.1.1版...

emqtt
2017/01/09
2.6K
3
EMQ 2.1.0-beta.1 发布, 百万级 MQTT 消息服务器

EMQ v2.1.0-beta.1 版本正式发布。 改进Session/Inflight窗口设计,一个定时器负责全部Inflight QoS1/2消息重传。优化MQTT连接的GC机制,降低高消息吞吐情况下的CPU/内存占用。 EMQ 2.1.0版本...

emqtt
2017/02/24
1K
4
EMQ 2.2-beta.1 发布, 百万级 MQTT 消息服务器

EMQ 2.2-beta.1版本正式发布。 EMQ 2.2正式支持MQTT协议多监听器配置,支持HAProxy的Proxy Protocol V1/V2。新增Web Hook插件(emq-web-hook)、Lua Hook插件(emq-lua-hook)。 MQTT协议监听器配...

emqtt
2017/05/08
2.3K
6
管中窥豹:一线工程师看MQTT

MQTT是什么? MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(Publish/Subscribe)模式的轻量级通讯协议,该协议构建于TCP/IP协议上,由IBM在1...

tangxiaoyin
2017/07/25
0
0
EMQ 2.3-beta.1 发布, 百万级 MQTT 消息服务器

EMQ R2.3-beta.1版本发布!该版本正式支持集群节点自动发现与集群脑裂自动愈合,支持基于IP Multicast、Etcd、Kubernetes等多种策略自动构建集群。 节点发现与自动集群 EMQ R2.3 版本支持多种...

emqtt
2017/07/25
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

通过Docker容器连接代理Wormhole

Wormhole 是一个能识别命名空间的由 Socket 激活的隧道代理。可以让你安全的连接在不同物理机器上的 Docker 容器。可以用来完成一些有趣的功能,例如连接运行在容器本机的服务或者在连接后创...

Linux就该这么学
17分钟前
1
0
从架构到平台, POWER 9处理器最全解读

本文根据IBM中国芯片设计部门高级经理尹文,在「智东西公开课」的超级公开课IBM专场《POWER 9-认知时代的驱动力》 上的系统讲解整理而来。 本次讲解中,尹文老师从内核微架构、总线互连、异构...

Mr_zebra
21分钟前
1
0
openjdk和oraclejdk有什么区别吗?

1.授权协议的不同:OpenJDK采用GPL V2协议放出,而SUN JDK则采用JRL放出。两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。 2.Open...

吴伟祥
21分钟前
2
0
c++基类析构函数要声明为virtual的原因

更深层的原因不知道,不过标准规定,如果不声明为virtual,那么将会导致未定义行为。个人测试结果表明,如果不声明为virtual,那么派生类的析构函数将不会得到调用

安非他命
28分钟前
1
0
CentOS 7下protobuf的源码编译安装

protobuf的github地址:https://github.com/google/protobuf支持多种语言,有多个语言的版本,本文采用的是在CentOS 7下编译源码进行安装。 github上有详细的安装说明:https://github.com/...

xtof
35分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部