Память RabbitMQ потребляется авторами Erlang, и на диск ничего не выгружается
У меня есть случай, когда общий объем памяти, используемой 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}]
- Что происходит, когда RabbitMQ дает сбой или происходит сбой, сообщения в очередях теряются или как?
- В чем разница между msg_store_persistent и msg_store_transient?
Erlang R16B03 (erts-5.10.4)
RabbitMQ версия 3.4.2
Спасибо
1 ответ
"Что происходит, когда RabbitMQ дает сбой или происходит сбой, сообщения в очередях теряются или как?"
Это зависит от того, что вы сказали RabbitMQ.
Если вы используете долговременные очереди и ваши издатели отправляют постоянные сообщения, то риск потери данных невелик, поскольку постоянные сообщения записываются на диск, как только они достигают надежных очередей. Кроме того, RabbitMQ предлагает расширение "Подтверждает", чтобы издатели знали, когда сообщение было действительно поставлено в очередь и, когда это уместно, записано на диск.
Если вы не используете долговременные очереди и постоянные сообщения, сообщения теряются при перезапуске или сбое посредника.
"В чем разница между msg_store_persistent и msg_store_transient?"
msg_store_persistent
содержит постоянные сообщения, поставленные в очередь на длительные очереди. Эти сообщения записываются на диск, как только они попадают в очередь. Кроме того, они по-прежнему будут доступны после перезапуска или сбоя брокера.msg_store_transient
содержит другие сообщения, которые были выгружены на диск для освобождения памяти. Это хранилище сообщений в основном очищается при запуске RabbitMQ.
Что касается потребления памяти, вы видите, несколько утечек памяти были исправлены в RabbitMQ начиная с 3.4.2. Если вы все еще видите такое поведение в более поздней версии, пожалуйста, опишите вашу рабочую нагрузку в деталях.