¿Cómo hacer que mosquitto actualice los temas en la base de datos no desde la memoria?

7

Como se sugirió en otra pregunta , hemos agregado la ruta de destino como db y autosave_interval como 3000, pero después de unos días la memoria se está reduciendo automáticamente.

Avíseme si hay alguna otra solución para almacenar solo en el archivo db.

bhuva nesh
fuente
Incluso si puede conservar los mensajes en el disco duro, hacerlo indefinidamente en algún momento llenará su disco. ¿Has considerado dejar que esos mensajes caduquen? (No estoy seguro si mosquitto proporciona tal cosa).
bgusach

Respuestas:

4

El intermediario mosquitto no admite la descarga del almacén de persistencia a una base de datos externa y el archivo db es solo una copia de seguridad de la base de datos en memoria en caso de que el intermediario falle o se cierre.

Si tiene una gran cantidad de mensajes en cola para clientes fuera de línea o una gran cantidad de mensajes retenidos, entonces se consumirá memoria.

Lo mejor que puede hacer es configurar la persistent_client_expirationopción para eliminar mensajes en cola para clientes que no han iniciado sesión durante mucho tiempo. Los detalles de esta opción se pueden encontrar en la página del manual mosquitto.conf .

De lo contrario, deberá utilizar un agente diferente que admita el almacenamiento fuera de proceso de la base de datos de persistencia. Algo como mosca se puede configurar para usar mongo o redis como tienda de respaldo.

hardillb
fuente
Actualmente persitent_client_expiration es 1 hora, pero aún se consume memoria.
bhuva nesh
Entonces, el crecimiento de la memoria probablemente no se deba a mensajes en cola para clientes fuera de línea.
hardillb
¿Hay alguna forma de limpiar los mensajes retenidos manualmente?
bhuva nesh
No sin detener el intermediario, eliminar el archivo db y reiniciar o publicar una carga nula en el tema (con el indicador retenido establecido)
hardillb