Php MOSQUITO MQTT磁盘读取峰值

Php MOSQUITO MQTT磁盘读取峰值,php,laravel,mqtt,mosquitto,Php,Laravel,Mqtt,Mosquitto,我和我们的一个运行Mosquito的MQTT代理有一个问题。在看似随机的时间内,磁盘使用率持续增加,直到达到大约50MB/s读取的平衡(如下图所示) 这也会导致我们的PHP服务器出现第二个问题(Laravel,PHP:7.4运行PHP mqtt/client:v1.1.0),一旦出现连接问题,PHP CPU峰值将达到100%,直到代理重新启动,然后PHP服务器重新启动(从测试开始,必须按此顺序进行,否则问题仍然存在)。MQTT消息作为队列监视系统的一部分在所有Laravel作业上广播。注意,在这

我和我们的一个运行Mosquito的MQTT代理有一个问题。在看似随机的时间内,磁盘使用率持续增加,直到达到大约50MB/s读取的平衡(如下图所示)

这也会导致我们的PHP服务器出现第二个问题(Laravel,PHP:7.4运行PHP mqtt/client:v1.1.0),一旦出现连接问题,PHP CPU峰值将达到100%,直到代理重新启动,然后PHP服务器重新启动(从测试开始,必须按此顺序进行,否则问题仍然存在)。MQTT消息作为队列监视系统的一部分在所有Laravel作业上广播。注意,在这个PHP问题期间,到代理的连接缓慢增加,我假设这只是因为代理保持它们打开,但处理它们太慢

据猜测,可能是QoS>0消息堆积在代理上导致磁盘使用过度。尽管我无法确认这一点,并且预计磁盘写入量将高于读取量。我已经检查了网络瓶颈和其他潜在的原因,但到目前为止没有发现任何问题

目前,由于代理99%的时间正常运行,我们不知道是什么原因导致了此问题,我们也不知道会触发磁盘I/O的持续增加。问题也发生在几周前,但发生在一天中的不同时间

Broker正在具有以下规范的GCE实例上运行:
  • CPU:2个VCPU(E2:Intel Broadwell)
  • 内存:4 GB
  • 磁盘:250GB(最大吞吐量:70MB/s)
  • 操作系统:容器优化操作系统,89
代理磁盘监视 正常吞吐量为凌晨1:30之前的吞吐量

代理网络流量 网络流量在每天这个时间的正常范围内。由于我们试图解决问题,在5:30到6:30之间下降。

代理CPU 似乎从未达到100%,但可能是由于监测平均的高频峰值。

PHP服务器CPU 注意:在代理显示问题迹象后,CPU在几个小时内不会出现峰值。

莫斯奎托版本 官方Docker容器:
EclipseMosquitto:1.6.14

MOSQUITO配置 正常交通 消息:代理上的吞吐量约为每分钟1000条

PHP服务器仅发布具有以下配置的短期消息:

QoS: 1
Retain: 0
Timeout: 1
截至目前,转储一些$SYS主题:
在向这些应用程序添加监控的过程中,如果问题再次出现,请收集数据。

请提供您的MOSQUITO配置(即
mosQUITO.conf
)和使用情况(有多少订阅者、消息量、平均大小等)的详细信息。监控
$SYS/broker/messages/received
$SYS/broker/messages/inflight
$SYS/broker/retained messages/count
等,在您遇到问题时为您提供有关消息流的数据可能会很有用。了解您正在运行的版本以及您是否正在使用持久性,websockets或身份验证插件。如果启用了持久性,并且您正在使用WebSocket并通过http托管文件,那么核心代理中只有在启动时才有任何
读取。若你们正在使用一个认证插件,那个么它可能是那个样的,这取决于。用一些额外的信息更新了问题。我以前没有注意到的是,代理在客户端上记录了很多
套接字错误,正在断开连接。“
消息。基本上一直都在发生,因此将尝试查找此客户端以删除或修复。配置中没有任何问题。您使用的$SYS度量值看起来也非常适中,只有一个例外:
$SYS/broker/clients/disconnected
。这是“已连接到干净会话的客户端设置为false,然后断开“。我暗中猜测,您有一个与clean session连接的客户端设置为false,该客户端还使用随机客户端id。即使它与您的问题无关,也值得清除。
客户端上的套接字错误,断开连接。
-这可能只是意味着客户端在未发送断开连接的情况下断开连接,如果你期待很多短命的联系,那没什么大不了的。如果您想调查这些消息,那么2.0版可以更好地处理这些消息。
QoS: 1
Retain: 0
Timeout: 1
$SYS/broker/version: "mosquitto version 1.6.14"
$SYS/broker/uptime: "23529 seconds"
$SYS/broker/messages/stored: "93" // Remained stable since monitoring
$SYS/broker/messages/received: "895858"
$SYS/broker/messages/sent: "1405546"
$SYS/broker/retained messages/count: "93" // Remained stable since monitoring
$SYS/broker/clients/total: "122078"
$SYS/broker/clients/inactive: "121984"
$SYS/broker/clients/disconnected: "121984"
$SYS/broker/clients/active: "94"
$SYS/broker/clients/connected: "94"
$SYS/broker/clients/maximum: "122078"
$SYS/broker/subscriptions/count: "393"