emq服务器报错

环境

  • EMQX 版本:5.8.2
  • 操作系统版本:linux

重现此问题的步骤

  1. [error] Process: <0.22703511.0> on node ‘emqx@172.16..’, Context: maximum heap size reached, Max Heap Size: 6291456, Total Heap Size: 7545525, Kill: true, Error Logger: true, Message Queue Len: 0, GC Info: [{old_heap_block_size,2984878},{heap_block_size,4560232},{mbuf_size,451},{recent_size,1430771},{stack_size,29},{old_heap_size,0},{heap_size,2072795},{bin_vheap_size,282936},{bin_vheap_block_size,423634},{bin_old_vheap_size,0},{bin_old_vheap_block_size,46422}]

预期行为

该问题的出现会使得emq失去连接,期间的消息会丢失。

你这是一个客户端订阅了太多消息。造成了累积。

别让一个clientid 接收太多的消息,这样他消费不过来,就积累了。就会断开。

EMQX 的客户端消息接收速率有限制吗?

EMQX 或 MQTT 协议并没有直接对每个客户端的消息接收速率进行严格限制。但当接收的消息过多,客户端无法及时处理时,可能会导致消息堆积过多并最终丢失。为了确保系统稳定性和消息传输的可靠性,建议每个订阅客户端的消息接收速率不超过 1500 消息/秒(按每条消息 1KB 计算)。

如果消息接收速率超过此建议,可以使用共享订阅来添加多个订阅客户端,从而分散负载,降低单个订阅客户端的消息接收速率。

如何能知道是哪个topic造成的问题。目前我们就是使用共享订阅的
image

看不出来

目前我们就是实现共享订阅的,而且接收到消息就直接推给kafka了。

非常好的设计

但是目前还是会出现上述问题的,有什么解决方案吗

加强单个客户端消费能力,多搞几个订阅客户端。

好吧