2018-11-16-mqtt-mosquitto系列12之桥接性能损耗初步测试
Posted 小肥的胖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-11-16-mqtt-mosquitto系列12之桥接性能损耗初步测试相关的知识,希望对你有一定的参考价值。
mosquitto
桥接性能损耗初步测试
不配置桥接测试
不配置桥接中心的情况,3个mosquitto服务端,3个mqtt客户端。3个客户端分别连接到3个mosquitto服务器,客户端全速发送,每秒发送4W条128bytes的数据。
资源使用情况:
- 3个客户端各150%CPU
- 3个mosquitto服务端各42%CPU,此时每个mosquitto承受每秒4W条128bytes数据流入
配置桥接测试
在前面的基础上加了1个mosquitto服务端只用来做桥接中心。
# =================================================================
# Bridges
# =================================================================
connection bridge2801
address 127.0.0.1:2801
topic # both 0
#bridge_bind_address
#bridge_attempt_unsubscribe true
#bridge_protocol_version mqttv311
#cleansession false
#idle_timeout 60
#keepalive_interval 60
#local_clientid
#notifications true
#notification_topic
remote_clientid bridge2801
remote_password your_pwd
remote_username your_un
#restart_timeout 5 30
#round_robin false
#start_type automatic
#threshold 10
#try_private true
#bridge_outgoing_retain true
#bridge_max_packet_size 0
connection bridge2802
address 127.0.0.1:2802
topic # both 0
remote_clientid bridge2802
remote_password your_pwd
remote_username your_un
connection bridge2803
address 127.0.0.1:2803
topic # both 0
remote_clientid bridge2803
remote_password your_pwd
remote_username your_un
资源使用情况:
- 3个客户端各150%CPU不变
- 3个mosquitto从42%CPU升到了69%CPU,每个mosquitto承受每秒12W条(客户端流入4W,桥接流入8W)128bytes数据流入,每秒4W条(给桥接)128bytes数据流出。
- 桥接mosquitto则达到了100%CPU,此时桥接中心承受每秒12W条(4W X 3)128bytes条数据进来,每秒24W条(8W X 3)128bytes数据出去。
总结
mosquitto桥接肯定会多消耗一些服务端资源,这是不可避免的,因为服务端多做事情了嘛。
由于mosquitto是单线程这一特点,通常情况下,桥接中心肯定是先达到100%CPU,所以你可以根据你的实际情况,测试一下在你业务数据顶峰的并发量下,mosquitto桥接中心的CPU资源占用率,如果没有达到100%,那说明可以运用这套。即使达到了100%,也可以根据实际情况(比如有无丢失数据,桥接转发的数据延迟是否很高,客户端是否连接被断开),因为有时候CPU占用率在100%不是处理不过来,可能是刚刚好处理的过来,或者只是稍微有些延迟罢了。
以上是关于2018-11-16-mqtt-mosquitto系列12之桥接性能损耗初步测试的主要内容,如果未能解决你的问题,请参考以下文章