消息接收时间比实际延迟1分钟

EMQX 版本

4.3.8

EMQX 安装部署方式

doctker

EMQX 集群情况

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

服务器操作系统和平台

服务端参数优化情况

压力机硬件配置

压力机使用的测试工具

压力机参数优化情况

在 EMQX 中启用的功能

测试场景

具体问题

200多台设备10秒发送一次数据,接收到数据时延迟1分钟

  • 有使用 延迟发布/规则引擎 等功能么
  • 可以用 Trace 命令 对特定 topic/client 追踪一下,看看 EMQX 接收/转发消息的时间和设备端发送/接收消息的时间有没有差异。

没使用规则引擎,也没用延迟发布。服务器重启后时间会缩短比如延迟30秒,运行2分钟后又会继续延迟1分钟

请提供更多信息以供分析

  • 配置:
    • 机器配置,当前负载,机器有没有 overload
    • EMQX 配置
  • 日志:
    • EMQX 日志
    • 发布订阅的客户端日志,也即客户端具体什么时候发布/接收到了消息
    • 最好在客户端及 EMQX 上抓包/trace

emqx配置是直接默认的配置,没改过,如果想提高效率应该怎么配置


etc下面是不是缺文件了

没有sysctl文件

之前服务器配置文件被删过,所以现在是用的默认配置,如果优化的话应该改哪些配置?

首先,如果不是机器配置太低,就不应该出现消息延迟的在 30s到1分钟的级别;这不是配置优化的问题,肯定是由于什么原因导致了延迟怎么高,思路:

  1. 是如何计算消息延迟了 30s-2mins 的,需要详细的计算过程。
  2. 可以分别为发布端、接收端(如果都是 MQTT 的话)启动日志跟踪的功能,方便分析慢在哪里。
    日志追踪参考文档:日志与追踪 | EMQX 企业版 4.3 文档

可以先把这2部分内容贴出来,我们才能继续往下分析原因

日志追踪按照上面链接加了以后时间上并没有延迟,日志追踪里是topic跟clientID,但都是public时间

看描述你是比较的 “左侧代码客户端” 和 “右侧mqttfx客户端” 对于同一个消息的接收抵达时间?

而不是发布者到订阅者接收成功的时间么?

PS:如果日志追踪上看 emqx 在 发布客户端接收到发布的消息,和 emqx 为订阅客户端投递消息,之间无明显时差的话,那很有可能时间不是消耗在 EMQX 内部

对,是这么比较的时间,如果不是出在emqx内部,会出在哪里?

我这边用客户端测试,只有qos级别为0的才能收到,为1和2的收不到,这个是为啥?要改哪里的配置

咱这边免费版的支持多少用户并发