正如另一个问题所建议的那样,我们已将目标路径添加为db,将autosave_interval添加为3000,但是几天后内存会自动减少。

请问我是否还有其他解决方案可以存储db文件。

评论

即使您可以将消息保留在硬盘驱动器上,也可以无限期地将消息填充到磁盘上。您是否考虑过让这些消息过期? (不确定mosquitto是否提供了此类功能)。

#1 楼

mosquitto代理不支持将持久性存储卸载到外部数据库,并且db文件只是内存数据库的备份,以防代理崩溃或关闭。

为脱机客户端排队的邮件或大量的大量保留邮件排队的话,将消耗内存。

最好的办法是设置persistent_client_expiration选项,以删除长时间未登录的客户端的排队消息时间。有关该选项的详细信息,请参见mosquitto.conf手册页。

否则,您将需要使用支持持久化数据库的进程外存储的其他代理。诸如mosca之类的东西可以配置为使用mongo或redis作为后备存储。

评论


当前persitent_client_expiration为1小时,但仍消耗内存。

–布瓦·内什(bhuva nesh)
18年6月7日在6:26

这样一来,内存增长就可能不仅仅限于离线客户端的排队消息。

– hardillb
18年6月7日在6:48

有什么方法可以手动清除保留的邮件吗?

–布瓦·内什(bhuva nesh)
18年6月8日在4:21

不仅要停止代理,还要删除db文件并重新启动或将空有效负载发布到主题(设置了保留标志)。

– hardillb
18 Jun 8'在7:09