Ошибка HTTP-кода 500 api для контейнера, подключающегося к контейнеру rabbitmq с помощью pika - PullRequest
0 голосов
/ 24 января 2019

Я управляю 5 док-контейнерами, используя docker-compose.yml.

Функции контейнера:

  • производитель сообщений - код производителя сообщений заключен в класс, и 45 экземпляров созданы в 45 потоках
  • контейнер rabbitmq -Это rabbitmq: последнее изображение для помещения в очередь созданных сообщений
  • получатель сообщения - код получателя сообщения упакован в класс, и 90 экземпляров создаются в 90 потоках.Функция обратного вызова обрабатывает сообщения в контейнере rabbitmq и записывает результаты в контейнер базы данных.Обратный вызов включает basic_ack:

    ch.basic_ack (delivery_tag = method.delivery_tag)

  • Контейнер базы данных - это centurylink / mysql: последнее изображение

  • Сайт Django - подключен к контейнеру базы данных и используется для запроса содержимого базы данных

Соединение с контейнером rabbitmq создается одинаково с использованием одинаковых параметров как для производителя, так и дляполучатель:

        connection = pika.BlockingConnection(
            pika.ConnectionParameters(host=TARGET_QUEUE_NAME,
            port=5672,
            heartbeat_interval=0,
            backpressure_detection=True,
             blocked_connection_timeout=10))

Первоначально процесс работает правильно, и записи заметно обновляются, как ожидается, если вы обновите сайт Django.В какой-то момент через несколько минут docker замедляется и в итоге останавливается, а обновление страницы django занимает более 20 секунд.В конце концов производитель сообщений завершает работу с ошибкой:

message_producer_1 |Убито

Неожиданная ошибка API для this_project_ message_producer_1 (HTTP code 500) Тело ответа: Попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через определенный промежуток времени, или не удалось установить соединение, так как подключенный хост не смог ответить.

Я не уверен, с чего начать поиск / решение проблемы здесь.Тот факт, что все сначала работает, а затем ломается, заставляет меня думать, что это, вероятно, связано с размером очереди сообщений или ресурсами, доступными для контейнеров, но я не знаю, как это проверить.

Любая помощь?

...