Wie mache ich Moskito, um Themen in der Datenbank nicht aus dem Speicher zu aktualisieren?

7

Wie in einer anderen Frage vorgeschlagen , haben wir den Zielpfad als db und autosave_interval als 3000 hinzugefügt, aber nach einigen Tagen wird der Speicher automatisch reduziert.

Bitte lassen Sie mich wissen, ob es eine andere Lösung gibt, die nur in einer Datenbankdatei gespeichert werden kann.

bhuva nesh
quelle
Selbst wenn Sie Nachrichten auf der Festplatte beibehalten können, wird Ihre Festplatte irgendwann auf unbestimmte Zeit gefüllt. Haben Sie darüber nachgedacht, diese Nachrichten ablaufen zu lassen? (nicht sicher, ob Mücke so etwas bietet).
Bgusach

Antworten:

4

Der Moskito-Broker unterstützt das Auslagern des Persistenzspeichers in eine externe Datenbank nicht, und die Datenbankdatei ist nur eine Sicherung der In-Memory-Datenbank, falls der Broker abstürzt oder heruntergefahren wird.

Wenn Sie eine große Anzahl von Nachrichten für Offline-Clients oder eine große Anzahl von großen gespeicherten Nachrichten in der Warteschlange haben, wird Speicher belegt.

Das Beste, was Sie tun können, ist die persistent_client_expirationOption zum Entfernen von Nachrichten in der Warteschlange für Clients festzulegen, die sich lange nicht angemeldet haben. Details zu dieser Option kann im mosquitto.conf Mann finden Seite .

Andernfalls müssen Sie einen anderen Broker verwenden, der das Speichern der Persistenzdatenbank außerhalb des Prozesses unterstützt. So etwas wie Mosca kann so konfiguriert werden, dass Mongo oder Redis als Hintergrundgeschäft verwendet werden.

hardillb
quelle
Derzeit beträgt persitent_client_expiration 1 Stunde, es wird jedoch immer noch Speicher belegt.
Bhuva Nesh
Dann ist das Speicherwachstum wahrscheinlich nicht auf Nachrichten in der Warteschlange für Offline-Clients zurückzuführen.
Hardillb
Gibt es eine Möglichkeit, gespeicherte Nachrichten manuell zu bereinigen?
Bhuva Nesh
Nicht ohne den Broker anzuhalten, die Datenbankdatei zu löschen und eine Null-Nutzlast für das Thema neu zu starten oder zu veröffentlichen (mit gesetztem Flag)
hardillb