压测场景下,mqtt客户端不断被踢下重连,报timeout

压测场景下,mqtt客户端不断被踢下重连,报timeout,是什么原因导致的

-08-18T08:14:14.024609+00:00 [info] msg: shared_subscriber_down, mfa: emqx_shared_sub:handle_info/2, line: 459, reason: killed, sub_pid: <0.13029.2>
2025-08-18T08:14:14.024552+00:00 [error] Process: <0.13029.2> on node ‘emqx@172.17.0.2’, Context: maximum heap size reached, Max Heap Size: 6291456, Total
Heap Size: 6599993, Kill: true, Error Logger: true, Message Queue Len: 4, GC Info: [{old_heap_block_size,28690},{heap_block_size,6566731},{mbuf_s
ize,4876},{recent_size,2070356},{stack_size,222},{old_heap_size,19314},{heap_size,2984574},{bin_vheap_size,2380536},{bin_vheap_block_size,3527924},{bin_old_vheap_size,9219},{bin_old
_vheap_block_size,46422}]

单个客户端收的消息太多了,处理不过来了


你好,这个是堆栈太小了吗,如何优化

但是不用调整这个,

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

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