EMQX 版本
emqx 5.0.25
centos7 安装包部署
EMQX 集群情况
2个节点组成集群
服务器(运行 EMQX 的机器)硬件配置
CPU 16核 内存32G
服务器操作系统和平台
centos7
使用资源也不高,但日志在报 Mnesia is overloaded
emqx 5.0.25
centos7 安装包部署
2个节点组成集群
CPU 16核 内存32G
centos7
使用资源也不高,但日志在报 Mnesia is overloaded
不是系统整体的负载太大,是单个 MQTT Bridge 连接上的负载太高。
看了你的另一个帖子 使用数据集成功能下的数据桥接出现大批量数据发送失败问题,服务器资源占用不到,但收不完所有消息
可以在集群 A 上多建立几个 MQTT Bridge,把需要桥接到集群 B 的消息通过主题分开,让不同的 Bridge 客户端进行发送,每个 Bridge 负责一部分主题的消息,分摊负载。
是集群 B 的问题,它的响应速度不够了。
在集群 B 看起来,集群 A 的这个桥接等同于一个 MQTT 客户端。按照 #4913 截图中的情况看,相当于有一个客户端以 2000msg/s 的速度向它 publish 消息。对于单个连接进程来说,这个速率已经比较高了。我测试过用 loop 网卡单个连接也只能稳定在 8000msg/s 左右。
使用多个 bridge 连接的目的,是让不同的 bridge 发送不同 topic 的消息,来降低每个 bridge 发送消息的速率。需要细化的是主题里面通配符订阅的那一部分。目前看起来和之前一样还是会都发送 gw/data/yum/#
,Bridge 执行速率也没有降下来。
那我给集群A增加连接池,然后集群B再加节点不知是否可以解决问题呢?目前主题是不能拆了,这个定下来后没法修改,影响范围较大,所以想通过加资源或者其它配置来解决不知是否可行?
内网的话可以尝试配置 bridge egress 使用 qos1 或 qos0
bridge egress 这种方式我使用共享订阅,集群B发现也是有数据订阅不全的问题。我分别用客户端向集群A发50条数据,但集群B只订阅到38条。
bridge egress 使用共享订阅
具体是指什么,是在集群B上添加 mqtt bridge 并从集群A上共享订阅消息?
另外 trace 是追踪的特定 clientid 还是 topic
这个 warning 是提示 emqx 的内置数据库 mnesia 压力过大。造成这种情况比较常见的情况是订阅速度比较快,如果当前系统还能正常工作,没有出现很大的延迟等,你可以忽略这个告警。