emqx 开源版本消费延时2分钟

环境信息

  • EMQX 版本:EMQ X Broker 4.2.10
  • 操作系统及版本:centos 7
  • 其他

问题描述

每天消费的消息达到5千万以上,第一步会通过规则转发到一个统一的topic,然后回消费这个统一的topic,实际运行下来发下100条信息里会有3条左右的消费消息延迟在2分钟左右才被消费,请问下有么有办法确认下那个环节消息有延迟了?

配置文件及日志

使用慢订阅功能,监控一下topic,但是你的业务都走同一个topic比较麻烦。参考文档
还是推荐不同的设备走不同的业务中枢,只少分组一下,如果你的业务量已经每天5千万级别的话,最终还是要分流的。

慢订阅模块是企业版本,我们是开源版本,没有这个模块

5000w 核算下来消息的平均的 TPS 是 578?这样看是不高的。有几个需要补充的

  • 机器配置,和运行的负载怎么样
  • 5000w 每天,指的单台还是整个集群
  • 消息延迟是怎么计算的,消息的 QoS 是怎么样的
  • 订阅侧是怎么消费的,单个连接?还是多台机器共享订阅的

你的这套 Topic 模型设计的有问题,所有消息最终流像同一个 Topic, 这个 Topic 会成为性能瓶颈。如果确实需要这样的模型的话,建议订阅端使用共享订阅,且增加尽可能多的消费者

两台负载,每个机器4C8G
QoS消费都是2
现在有10台机器共享消费,每天机器16个线程

机器的性能看起来够用的(你可以检查下机器的负载)

可以看下共享订阅的这几个机器创建的客户端是否有消息堆积,如果有的话那是消费端的能力跟不上

如果100条中,仅有 3条 延迟突然的高,而不是这100条平均都高。那有可能共享订阅的转发效率的问题,如果是这样的话,需要发下共享订阅相关的配置

共享订阅的相关配置在哪里看?开源版本的

在 emqx.conf 里面的,所有包含 shared_subscription 的配置项 都是的

image
image
image
image