emqx警告Dropped msg due to mqueue is full

版本4.4.19
问题:
Dropped msg due to mqueue is full: Message(Id=00060EA2C5F7832D3F15A90700E30000, QoS=1, Topic=$SYS/brokers/emqx@172.22.1.182/clients/IOS_B3C449A3-50D8-4E00-8C84-2F6DA81A0BB610182982/connected, From=emqx_mod_presence, Flags=[sys], Headers=#{redispatch_to => {<<“g”>>,<<“$SYS/brokers/+/clients/+/+”>>}})

emqx集群其中一个节点警告队列满了(其它两个节点没问题),导致消息被丢失

  1. 这种问题是qos1、qos2的消息太多导致的吗?
  2. 系统主题的qos都是1?(在一个社区的帖子上看到是0:https://askemq.com/t/topic/736)
  3. 这种问题可以通过优化配置避免吗?(起码保持 消息不丢)
  4. 队列的情况哪里可以监控到吗?
  1. 这个要具体看场景,没有绝对的。
  2. 这条消息来源于插件,你应该是在插件里面emqx_mod_presence 里面设置了 qos 为 1 ,https://github.com/emqx/emqx/blob/main-v4.4/lib-ce/emqx_modules/src/emqx_mod_presence.erl#L65
  3. 你把 queue 设置为 不限制: zone.external.mqueue_store_qos0 zone.external.max_mqueue_len
    配置项 | EMQX 4.4 文档
    就能让他一直坚持到内存爆掉,机器挂了才丢消息,这样风险更大,也不推荐这么干。
  4. 除了直接检查这个日志告警以外,还有 HTTP API 可以查看https://www.emqx.io/docs/zh/v4.4/advanced/http-api.html#统计指标

是否有实时统计queue 队列长度的api呢,我想做个预警,告警出现的时候已经会影响到客户端了

目前还没有。