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

Приложение сообщает о тайм-аутах. Однако у nginx нет записи или журнала

Мы обслуживаем Django через nginx / uwsgi. Мы используем AWS ELB за VPC.

Это веб-сервис для мобильных клиентов.

У нас были отчеты о тайм-аутах во время разработки, поэтому мы добавили концепцию request_id к каждому запросу.

  1. клиент генерирует идентификатор запроса
  2. отправляет GET / запрос? _request_id = ABDFEFE
  3. при возникновении ошибки сообщение об ошибке отправляется на сервер вместе с идентификатором запроса.

Проблема, с которой я столкнулся сейчас, заключается в том, что я получаю отчеты об ошибках таймаутов, которые произошли в дикой природе. Однако связанные request_ids не отображаются ни в одном журнале nginx или uwsgi.

Я немного подозрительно отношусь к эластичному балансировщику нагрузки Amazon. Однако я не могу быть уверен. Поскольку это тайм-аут, у нас нет ни заголовков ELB, ни кода состояния, ни тела ответа, ни чего-либо еще.

Мы используем newrelic для мониторинга нашего бэкэнда. Иногда регистрируются «медленные транзакции» продолжительностью 3-4 секунды. (Ничего подобного 30-секундному таймауту, типичному для большинства клиентских библиотек)

Актуальный вопрос: куда смотреть дальше? По моему мнению и данным, которые у меня есть на сервере, НИЧЕГО на самом деле не так, однако таймауты сохраняются. На данный момент я даже не знаю, как начать отладку этого. Серверы приложений работают примерно на 10% мощности (относительно памяти и процессора). Медленные запросы sql регистрируются (там тоже ничего интересного)

(Я также отдельно рассматриваю ошибку на стороне клиента)

Заранее спасибо.

Учитывая, что клиенты являются мобильными устройствами, возможно, проблема не в вас или в ELB.

AWS ELB не просто сбрасывают трафик на площадку; или, по крайней мере, без вашего ведома. Если проблема связана с ELB, вы должны увидеть это в показателях ELB; ELB_5XX или Spillover - это метрики, которые я бы сначала проверил в таком случае. Однако это маловероятно, учитывая, что ваш мониторинг показывает, что служба находится в сети.