MQTT高峰期断连现象

环境

  • EMQX 版本:5.0.10这个是自己搭建的在自己服务器上的
  • 操作系统版本:linux alibabaCentos 自己的C#项目

重现此问题的步骤

  1. 我们是打印机项目,大概同时3000多台设备在线,到了晚上六点多就是高峰期就出来了这个错误。主要就是下图中serverApiLinux断开连接了。以前是报错超过最大连接数,后面我就去修改了会话里的PUBREL 最大等待时间为1000,还有飞行窗口也是1000,最大消息队列长度也改成1000了。现在报错就是下面这个报错了。我们用的qos2.高峰期就是下图这个断了

预期行为

正常无影响

实际行为

mqtt断连了,就是这个断开连接了

日志报错:
[18:28:17 696] ERROR - MQTT发布消息报错
MQTTnet.Exceptions.MqttCommunicationTimedOutException: Exception of type ‘MQTTnet.Exceptions.MqttCommunicationTimedOutException’ was thrown.
at MQTTnet.PacketDispatcher.MqttPacketAwaitable`1.WaitOneAsync(TimeSpan timeout)
at MQTTnet.Client.MqttClient.SendAndReceiveAsync[TResponsePacket](MqttBasePacket requestPacket, CancellationToken cancellationToken)
at MQTTnet.Client.MqttClient.PublishExactlyOnceAsync(MqttPublishPacket publishPacket, CancellationToken cancellationToken)
at rui.mqttWeb.Services.MqttClientService.sendMsg(String topic, String msg) in E:\Projecting\2022-188\code\ruiLibraryCore\ruiMqttWeb\Services\MqttClientService.cs:line 146

把这个主题改成共享主题,多搞点客户端订阅,分散点压力才对。一味增大这些参数只是让emqx服务器能缓存更多的消息(占用更多的内存)消息还是得消费掉,这么多消息一个端在排队,恶性循环下来就是所有消息都报超时,没处理

我可以理解为这个serverApiLinux我应该再搞个服务来消费处理这些服务是么?但是我感觉我现在的量级应该没有那么高?

是的,建议在服务监控一下消息流速

这个改成共享主题我能直接在这个emqx的后台直接设置嘛。这样我就能开个新服务去消费这些消息