Около 9 вечера мониторинг сообщил, что на одном из production-серверов забивается место. Причём забивалось оно очень быстро, и за пару часов “скушалось” 3 гига из 8 доступных на root-разделе.
Забивался диск в каталоге базы RabbitMQ – /var/lib/rabbitmq/mnesia
.
Быстрый фикс – перенести его базу на отдельный диск.
Создаём новый каталог:
[simterm]
root@bttrm-prod-console:/home/admin# cd /data/ && mkdir rabbitdb
[/simterm]
Обновляем конфиг реббита /etc/rabbitmq/rabbitmq-env.conf
– задаём переменную RABBITMQ_MNESIA_BASE
:
... RABBITMQ_MNESIA_BASE=/data/rabbitdb
Останавливаем RabbitMQ:
[simterm]
root@bttrm-prod-console:/data# systemctl stop rabbitmq-server
[/simterm]
Копируем данные из старого каталога и меняем владельца:
[simterm]
root@bttrm-prod-console:/data# cp -r /var/lib/rabbitmq/mnesia/* /data/rabbitdb/ root@bttrm-prod-console:/data# chown -R rabbitmq:rabbitmq rabbitdb/
[/simterm]
Запускаем его:
[simterm]
root@bttrm-prod-console:/data# systemctl start rabbitmq-server
[/simterm]
Проверяем статус:
[simterm]
root@bttrm-prod-console:/data# rabbitmqctl status Status of node 'rabbit@bttrm-prod-console' ... [{pid,30368}, {running_applications, [{rabbitmq_management,"RabbitMQ Management Console","3.6.6"}, {rabbitmq_management_agent,"RabbitMQ Management Agent","3.6.6"}, {rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.6.6"}, ...
[/simterm]
Доступное ему место и Database directory path:
84 гига – окей.
На утром начали проверять – почему же RabbitMQ так засрал диск: оказалось, что в очередях скопилось 2 миллиона сообщений, которые не читались, потому что задачи supervisor
-а, которые должны получать их, не были запущены.
Почитать по теме – RabbitMQ, backing stores, databases and disks.
Просмотреть список сообщений в очередях можно с помощью rabbitadmin
:
[simterm]
root@bttrm-prod-console:/home/admin# rabbitmqadmin list queues -u adminuser -p p@ssw0rd +------------------------+----------+ | name | messages | +------------------------+----------+ | purchases | 395 | ...
[/simterm]