Làm thế nào để tạo mosquitto để cập nhật các chủ đề trong cơ sở dữ liệu không phải từ bộ nhớ?


7

Như được đề xuất trong một câu hỏi khác , chúng tôi đã thêm đường dẫn đích là db và autosave_interval là 3000, nhưng sau vài ngày bộ nhớ sẽ tự động giảm.

Vui lòng cho tôi biết nếu có bất kỳ giải pháp nào khác để lưu trữ chỉ trong tệp db.


Ngay cả khi bạn có thể duy trì các tin nhắn trên ổ cứng, thì việc này sẽ vô thời hạn sẽ lấp đầy đĩa của bạn. Bạn đã xem xét để cho những tin nhắn hết hạn? (không chắc chắn nếu mosquitto cung cấp một điều như vậy).
bgusach

Câu trả lời:


4

Trình môi giới mosquitto không hỗ trợ giảm tải lưu trữ bền vững cho cơ sở dữ liệu bên ngoài và tệp db chỉ là bản sao lưu của cơ sở dữ liệu trong bộ nhớ trong trường hợp người môi giới gặp sự cố hoặc tắt máy.

Nếu bạn có số lượng lớn tin nhắn được xếp hàng cho khách hàng ngoại tuyến hoặc số lượng lớn tin nhắn được giữ lại lớn thì bộ nhớ sẽ bị tiêu tốn.

Điều tốt nhất bạn có thể làm là đặt persistent_client_expirationtùy chọn xóa tin nhắn xếp hàng cho các máy khách không đăng nhập trong một thời gian dài. Chi tiết về tùy chọn này có thể được tìm thấy trong trang man mosquitto.conf .

Nếu không, bạn sẽ cần xem xét việc sử dụng một nhà môi giới khác hỗ trợ lưu trữ ngoài cơ sở dữ liệu lưu trữ. Một cái gì đó như mosca có thể được cấu hình để sử dụng mongo hoặc redis làm cửa hàng sao lưu.


Hiện tại Persitent_client_Exption là 1 giờ nhưng vẫn còn bộ nhớ.
bhuva nesh

Sau đó, sự tăng trưởng bộ nhớ có lẽ không nằm trong các tin nhắn xếp hàng cho các máy khách ngoại tuyến.
hardillb

Có cách nào để làm sạch các tin nhắn được giữ lại bằng tay không?
bhuva nesh

Không phải không dừng nhà môi giới, xóa tệp db và khởi động lại hoặc xuất bản một tải trọng null cho chủ đề (với bộ cờ được giữ lại)
hardillb
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.