У меня есть случай, когда общий объем памяти, используемый RabbitMQ, составляет 6,2 ГБ, из которых 6,1 ГБ используются авторами Erlang. Однако я не могу найти страницы такого размера на жестком диске. что произойдет, если RabbitMQ выйдет из строя? я потеряю все данные?
Пожалуйста, проверьте статус rabbitmqctl ниже
{memory,
[{total,6692084888},
{connection_readers,99864},
{connection_writers,25697536},
{connection_channels,95040},
{connection_other,1942280},
{queue_procs,189536},
{queue_slave_procs,0},
{plugins,645288},
{other_proc,14228968},
{mnesia,101896},
{mgmt_db,615664},
{msg_index,14967232},
{other_ets,5246072},
{binary,6598589536},
{code,22475925},
{atom,883633},
{other_system,6306418}]},
{alarms,[memory]},
{listeners,
[{clustering,25672,"::"},
{amqp,5672,"127.0.0.1"},
{'amqp/ssl',5671,"::"},
{'stomp/ssl',61614,"::"}]},
{vm_memory_high_watermark,0.4},
{vm_memory_limit,6687214796},
{disk_free_limit,819462080},
{disk_free,2658975744},
{file_descriptors,
[{total_limit,924},
{total_used,23},
{sockets_limit,829},
{sockets_used,19}]},
{processes,[{limit,1048576},{used,407}]},
{run_queue,0},
{uptime,151129}]
Эрланг R16B03 (эрц-5.10.4)
RabbitMQ версии 3.4.2
Спасибо
«Что происходит, когда RabbitMQ дает сбой или сбой, теряются ли сообщения в очередях или что?»
Это зависит от того, что вы сказали RabbitMQ.
Если вы используете устойчивые очереди, а ваши издатели отправляют постоянные сообщения, тогда риск потери данных невелик, потому что постоянные сообщения записываются на диск, как только они попадают в устойчивые очереди. Кроме того, RabbitMQ предлагает Расширение «Подтверждает» чтобы издатели знали, когда сообщение было фактически поставлено в очередь и, при необходимости, записано на диск.
Если вы не используете устойчивые очереди и постоянные сообщения, сообщения теряются при перезапуске брокера или сбое.
"В чем разница между msg_store_persistent и msg_store_transient?"
msg_store_persistent
содержит постоянные сообщения, помещенные в постоянные очереди. Эти сообщения записываются на диск, как только они попадают в очередь. Более того, они все еще будут доступны после перезапуска или сбоя брокера.msg_store_transient
содержит другие сообщения, которые были выгружены на диск для освобождения некоторой памяти. Это хранилище сообщений в основном очищается во время запуска RabbitMQ.Что касается потребления памяти, то вы видите, что несколько утечек памяти были исправлены в RabbitMQ начиная с 3.4.2. Если вы по-прежнему наблюдаете такое поведение в более поздней версии, подробно опишите свою рабочую нагрузку.