【发布时间】:2019-05-25 11:38:00
【问题描述】:
我正在制作一个电子票务系统,我使用 MQTT V3.1.1 允许用户打开大门(大门是使用 Raspberry Pi 3 Model B+ 制作的)。
在这种情况下,我想用 10000 条发布消息和每个消息的不同主题(主题范围从 bcn/bcn0000 - bcn/bcn00010000)一次性负载测试代理和树莓派,负载为 unix nano 时间戳。测试成功,但是当我尝试在测试期间捕获进入我的 Raspberry Pi 的 MQTT 数据包时,它只捕获不到 10000 个(应该是 10000 个数据包吧?)MQTT 发布消息并且我使用 MQTT QoS 0。代理我使用的是安装在我的 VPS 中的 Mosquitto。
捕获的数据包(使用 TCPDUMP 捕获)在一个 MQTT 数据包中有超过 10 个 MQTT 发布消息。这是由nagle的算法引起的吗?以及如何使每条消息同时发送,每个发布消息都有单独的数据包
编辑:使用 golang (paho.mqtt.golang) 的服务器端编程和逻辑和使用 python (paho.mqtt.python) 的树莓派,我将 mosquitto.conf 上的 set_tcp_nodelay 设置为 true 但没有运气
【问题讨论】:
-
为什么你认为它们应该是单独的数据包?不需要将 MQTT 消息分解为单独的 TCP 数据包,而且效率更高