蚊子桥发布导致OOM崩溃。

问题描述 投票:0回答:1

我们正在开发物联网边缘应用,我们需要在嵌入式linux网关设备中运行mosquitto broker。边缘代理是桥接到云MQTT代理。边缘网络中的其他设备向边缘mosquitto broker发布,mosquitto会将其发布到云端。边缘网关位于一个网络连接非常受限的站点。

边缘设备正在以每5秒1条消息的频率向mosquitto broker发送28KB的有效载荷。我们可以看到mosquitto的内部队列不断增加('$SYSbrokermessagesstored')。它增加到充分利用网关内存,然后mosquitto崩溃。

当我们在mosquitto中启用日志并检查时,我们可以看到以下情况

  1. PUBLISH和PUBACKs之间的时间间隔很大
  2. 因为这个巨大的延迟,蚊子要多次重新发送消息。

具体信息请看下面的日志。

1591704254: Sending PUBLISH to local.clientid (d0, q1, r0, m572, 'toCLOUD/Basic', ... (32768 bytes))
1591704275: Sending PUBLISH to local.clientid (d1, q1, r0, m572, 'toCLOUD/Basic', ... (32768 bytes))
1591704296: Sending PUBLISH to local.clientid (d1, q1, r0, m572, 'toCLOUD/Basic', ... (32768 bytes))
1591704317: Sending PUBLISH to local.clientid (d1, q1, r0, m572, 'toCLOUD/Basic', ... (32768 bytes))
1591704338: Sending PUBLISH to local.clientid (d1, q1, r0, m572, 'toCLOUD/Basic', ... (32768 bytes))
1591704359: Sending PUBLISH to local.clientid (d1, q1, r0, m572, 'toCLOUD/Basic', ... (32768 bytes))
1591704380: Sending PUBLISH to local.clientid (d1, q1, r0, m572, 'toCLOUD/Basic', ... (32768 bytes))
1591704401: Sending PUBLISH to local.clientid (d1, q1, r0, m572, 'toCLOUD/Basic', ... (32768 bytes))
1591704422: Sending PUBLISH to local.clientid (d1, q1, r0, m572, 'toCLOUD/Basic', ... (32768 bytes))
1591704526: Received PUBACK from local.clientid (Mid: 572)
1591704597: Received PUBACK from local.clientid (Mid: 572)
1591704680: Received PUBACK from local.clientid (Mid: 572)
1591704750: Received PUBACK from local.clientid (Mid: 572)
1591704838: Received PUBACK from local.clientid (Mid: 572)
1591704901: Received PUBACK from local.clientid (Mid: 572)
1591704975: Received PUBACK from local.clientid (Mid: 572)
1591705039: Received PUBACK from local.clientid (Mid: 572)
1591705120: Received PUBACK from local.clientid (Mid: 572)

为了重新创建这个问题,我试着用 "mosquitto_pub "命令在geteway中使用相同的连接信息,就像这样,但我无法在 "mosquitto_pub "中看到相同的延迟或重复。

for i in `seq 1 1000`
do
    echo $JSON
done | mosquitto_pub -h broker.cloud.com  -t 'toCLOUD/TEST' -l -q 1

但在 "mosquitto_pub "中,我无法看到相同的延迟或重复。

有什么办法可以解决这个问题?可以增加蚊子桥的发布超时吗?有其他的解决方案吗?

Mosquitto版本: 1.4.14

Mosquitto网桥配置

connection MQTT_Bridge
address cloud.broker.com:8883
topic ToCloud/# out 2 "" ""
remote_clientid abcd
keepalive_interval 60
bridge_cafile /certs/ca

回程: 卫星 (200kbps 不确定)

云端经纪人:eMQTT

mqtt embedded-linux iot mosquitto
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.