Назад | Перейти на главную страницу

Память 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}]
  1. Что происходит, когда RabbitMQ дает сбой или сбой, теряются ли сообщения в очередях или что?
  2. В чем разница между msg_store_persistent и msg_store_transient?

Эрланг R16B03 (эрц-5.10.4)

RabbitMQ версии 3.4.2

Спасибо

  1. «Что происходит, когда RabbitMQ дает сбой или сбой, теряются ли сообщения в очередях или что?»

    Это зависит от того, что вы сказали RabbitMQ.

    Если вы используете устойчивые очереди, а ваши издатели отправляют постоянные сообщения, тогда риск потери данных невелик, потому что постоянные сообщения записываются на диск, как только они попадают в устойчивые очереди. Кроме того, RabbitMQ предлагает Расширение «Подтверждает» чтобы издатели знали, когда сообщение было фактически поставлено в очередь и, при необходимости, записано на диск.

    Если вы не используете устойчивые очереди и постоянные сообщения, сообщения теряются при перезапуске брокера или сбое.

  2. "В чем разница между msg_store_persistent и msg_store_transient?"

    • msg_store_persistent содержит постоянные сообщения, помещенные в постоянные очереди. Эти сообщения записываются на диск, как только они попадают в очередь. Более того, они все еще будут доступны после перезапуска или сбоя брокера.
    • msg_store_transient содержит другие сообщения, которые были выгружены на диск для освобождения некоторой памяти. Это хранилище сообщений в основном очищается во время запуска RabbitMQ.

Что касается потребления памяти, то вы видите, что несколько утечек памяти были исправлены в RabbitMQ начиная с 3.4.2. Если вы по-прежнему наблюдаете такое поведение в более поздней версии, подробно опишите свою рабочую нагрузку.