MQTT Broker - чрезмерное использование процессора и памяти - PullRequest
1 голос
/ 19 марта 2020

У меня есть служба MQTT (Mosquitto), работающая в контейнере docker для производственной площадки (размещена на AWS EC2). Причина запуска его в контейнере заключается в обеспечении переносимости, поскольку мы используем эту службу в нескольких местах.

Недавно мы наблюдали, что MQTT со временем начинает поглощать много ресурсов (ЦП и память) , в результате чего оказывается, что мы начинаем терять информацию, которая была передана через MQTT через QoS 1. Для решения этой проблемы были опробованы следующие подходы:

  • Удалите файл сохранения, который Брокер MQTT использует
  • Удалить полный том MQTT
  • Перезапустите контейнер , Мы также пошли еще дальше, чтобы увеличить количество ресурсов, доступных для MQTT (ЦП и память EC2), но, как и в случае с вышеупомянутыми шагами, кажется, что мы просто решаем проблему, а не решаем ее.

    Не могли бы вы предложить способы решения этой проблемы? Кроме того, было бы полезно, если бы кто-нибудь мог подсказать, как также профилировать MQTT-брокера, для использования кучи, тем, клиентов, отключений / подключений и т. Д. c.

    В настоящее время мы используем следующий MQTT файл конфигурации:

    # mount to /mosquitto/config/mosquitto.conf
    
    # sys_interval 60
    
    persistence true
    persistence_location /mosquitto/data/
    
    # This causes every change to trigger retained data save
    autosave_interval 60
    queue_qos0_messages true
    store_clean_interval 20
    max_queued_messages 100000
    max_inflight_messages 10000
    allow_anonymous false
    password_file /etc/mosquitto/conf.d/passwd
    acl_file /etc/mosquitto/conf.d/acl
    
    connection_messages true
    log_dest stdout
    
    persistent_client_expiration 1h
    

    Примечание. Клиенты, которые мы используем для подключения к MQTT-брокеру, записываются в NodeJS и Python. И для всех клиентов мы передаем опцию clean-session как true.

    Выполнение следующей команды на сервере Mosquitto: mosquitto --help

    Полученный ответ:

    mosquitto version 1.4.12 (build date 2017-06-01 13:03:46+0000)
    
    mosquitto is an MQTT v3.1.1/v3.1 broker.
    
...