rabbitmq – періодичні реконекти

Все почалося тоді коли частина кроликів переїхала в kubernetes, а інша частина в інший DC. Почали відбуватися дивні речі, а саме постійні перепідключення php воркерів. З-за чого в розробників Sentry почав сваритися як старий дід на ринку. Раніше таких проблем не було, кролики жили разом в одній мережі з іншими серверами й все працювало як годинник.

Після пошуків, спілкування з колегами здається знайшов в чому проблема. Почав детальніше перевіряти підключення і дізнався про heartbeat.

heartbeat – параметр, який дозволяє перевіряти зв’язок між клієнтом та сервером, тобто час від часу (періодично) сервер й клієнт відправляють пінги (порожні повідомлення) для перевірки доступності одне одного. Коли декілька пінгів буде втрачено, підключення розривається і воркер повинен перевстановити зєднання.

Для розв’язання даної проблеми потрібно налаштувати heartbeat з боку клієнта і сервера, якщо збоку сервера не налаштовано, а на клієнті так, тоді клієнт передасть ці параметри серверу, і сервер знатиме про них.

Приклад heartbeat коли він вимкнутий:

В офф документації написано що це не є дуже добре,не потрібно так робити якщо середовище використовує пакети перевірки активності TCP на кожному хості. І виставляти значення в 5 секунд і нижче також не рекомендується. Зазвичай дане значення виставляється в 15, 30, 60 секундах, проте в моєму випадку буде 120c.

Приклад графіку підключення коли пульсація налаштована:

 

Для додавання даного параметра з боку сервера необхідно потрібно внести зміни в конфігураційний файл кролика а на клієнтській частині все залежить від обраної мови програмування та відповідних бібліотек.

Так як кролик має два види конфігураційного фалу, це старий зразок та новий, розглянемо обидва.
З боку сервера додаваємо в файл /etc/rabbitmq/rabbitmq.config наступний параметр, спершу це новий зразок:

heartbeat = 60

і старий зразок конфігураційного файлу:

[
  {rabbit, [
    {heartbeat, 60},
  ]}
].

Для кращого розуміння потрібно вчитуватись в офф документацію, проте коротка замітка допоможе не тільки мені.

Корисні посилання

  • https://groups.google.com/g/rabbitmq-users/c/djNpSuQoznY/discussion
  • https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/best-practices-rabbitmq.html
  • https://shivama205.medium.com/rabbitmq-best-practices-67a27ef72a57
  • https://www.rabbitmq.com/heartbeats.html

 

 

 

 

 

 

 

 

 

 

 

 

Hola

Click to rate this post!
[Total: 0 Average: 0]