我正在研究MQTT协议的性能。我使用Raspberry Pi作为MQTT代理,并将PC作为客户端连接在同一个LAN中。 PC向代理发送消息,当代理收到消息时,它会发回一个publish.single。当我尝试用qos = 2每分钟发送10,000个发布消息时,我在~8163消息后在客户端收到以下错误消息:
error: [Errno 10048] Only one usage of each socket address (protocol/network address/port) is normally permitted
我为qos = 0和qos = 1尝试了相同的操作,它没有得到相同的错误。问题是什么?
答案 0 :(得分:2)
这很可能是因为您已经耗尽了客户端计算机上可用的本地端口数量,因为您有很多消息在飞行。
QOS 2消息的开销更大(需要双向确认)。
使用publish.single方法可能会使情况变得更糟,因为这会创建并拆除与每个消息的代理的完整连接,如果您创建持久连接并重用它,事情可能会流动更好。