消息被丢弃问题

EMQX 版本

生产端大量生产消息的时候5w消息每秒,用paho.mqtt.golang包,初始化了一个client订阅消息只有1000消息/s的消费速率。

大部分消息都被丢弃了:发送时由于消息队列满而被丢弃,看后台是因为这个原因

EMQX 安装部署方式

docker compose单机,mac本地部署

EMQX 集群情况

未使用集群,仅单节点

服务器(运行 EMQX 的机器)硬件配置

mac :Apple M3 Pro
36 GB内存

服务器操作系统和平台

mac

压测工具
jmeter

有什么方式可以提升性能吗。
单一client消费的话,性能正常能达到多少消息/s。

我这边尝试初始化多个client的时候,感觉性能能有所提升,还是说要提高消费性能,必须初始化多个client?

我用jmeter生产,在用jmeter消费,能达到10w+,但是用paho.mqtt.golang初始化client消费的话,只能达到几千的消费,差很多

提升性能可以从 2 方面入手:
1.提高单个 client 的接收效率,接收线程收到消息后,处理让别的线程(池)来处理,接收线程只负责收消息。
2.多个 client 使用共享订阅。

关于单个 client 极限能处理多少条消息,这个跟你的实现方式,还有 payload 的大小,网络各种都有影响,所以需要结合自己的实际场景测的。

目接收端目前是使用了协程池来异步处理消息的。消息体很小。
那么我这个场景下,可以考虑在我一个服务里面考虑初始化多个client,来共享订阅来提供消费能力是吗?

如果用了异步处理,不应该啊,主要是看你用 jmeter 消费能 10W+。