504 ошибка тайм-аута шлюза на aws в конкретном регионе c - PullRequest
3 голосов
/ 25 мая 2020

Текущая среда:

Node.js Сервер API размещен на экземпляре EC2 (Ubuntu20.04) с балансировщиком нагрузки и группой безопасности, мы обслуживаем HTTPS. Front End находится на S3, связанном с Cloudfront.

Эти два сервера используют Route 53 в качестве DNS-провайдера, и все работает хорошо.

Проблема:

Все работает нормально, но он не работает должным образом в конкретном регионе c - Южный Виндзор, штат Коннектикут, США. (Поставщик Inte rnet - Cox Cable). Часто запросы API возвращают ошибку 504 (тайм-аут шлюза) без какой-либо причины. UI работает хорошо. Только запросы API. Но он работает в разных регионах, например, в Мексике и России.

Я пробовал много чего на балансировщике нагрузки, но на самом деле в журнале балансировщика нагрузки не обнаружено ошибки 504. (Я проверил это в облачных часах). Это означает, что запросы не поступали. Может баг Route 53? Настроено только одно - CNAME, больше ничего. И почему это происходит для указанного региона c?

Любые впечатления приветствуются!

1 Ответ

1 голос
/ 03 июня 2020

Причина 1. Приложению требуется больше времени для ответа, чем заданный таймаут бездействия.

  • Решение 1. Отслеживайте показатели HTTPCode_ELB_5XX и задержки. Если эти показатели увеличиваются, это может быть связано с тем, что приложение не ответило в течение периода ожидания бездействия. Для получения подробной информации о запросах, превышающих этот предел, включите журналы доступа на балансировщике нагрузки и просмотрите коды ответов 504 в журналах, созданных Elasti c Load Balancing. При необходимости вы можете увеличить емкость или увеличить настроенное время простоя.

Причина 2: зарегистрированные экземпляры закрывают соединение с Elasti c Load Balancing.

  • Решение 2. Включите параметры проверки активности на инстансах EC2 и убедитесь, что время ожидания проверки активности больше, чем время ожидания неактивности балансировщика нагрузки.

Примечания:

  • Проверьте настройки брандмауэра, групп безопасности и исходного сервера, чтобы определить источник ошибок
  • Если вы получаете ошибки HTTP 504 от CloudFront, но вы можете подключитесь напрямую к источнику, затем рассмотрите возможность увеличения тайм-аута ответа источника распределения. По умолчанию CloudFront позволяет держать исходное соединение открытым в течение 30 секунд. Если вашим приложениям требуется более 30 секунд для обработки и возврата ответа, CloudFront возвращает ошибку HTTP 504.
...