Мы обслуживаем Django через nginx / uwsgi. Мы используем AWS ELB за VPC.
Это веб-сервис для мобильных клиентов.
У нас были отчеты о тайм-аутах во время разработки, поэтому мы добавили концепцию request_id к каждому запросу.
Проблема, с которой я столкнулся сейчас, заключается в том, что я получаю отчеты об ошибках таймаутов, которые произошли в дикой природе. Однако связанные request_ids не отображаются ни в одном журнале nginx или uwsgi.
Я немного подозрительно отношусь к эластичному балансировщику нагрузки Amazon. Однако я не могу быть уверен. Поскольку это тайм-аут, у нас нет ни заголовков ELB, ни кода состояния, ни тела ответа, ни чего-либо еще.
Мы используем newrelic для мониторинга нашего бэкэнда. Иногда регистрируются «медленные транзакции» продолжительностью 3-4 секунды. (Ничего подобного 30-секундному таймауту, типичному для большинства клиентских библиотек)
Актуальный вопрос: куда смотреть дальше? По моему мнению и данным, которые у меня есть на сервере, НИЧЕГО на самом деле не так, однако таймауты сохраняются. На данный момент я даже не знаю, как начать отладку этого. Серверы приложений работают примерно на 10% мощности (относительно памяти и процессора). Медленные запросы sql регистрируются (там тоже ничего интересного)
(Я также отдельно рассматриваю ошибку на стороне клиента)
Заранее спасибо.
Учитывая, что клиенты являются мобильными устройствами, возможно, проблема не в вас или в ELB.
AWS ELB не просто сбрасывают трафик на площадку; или, по крайней мере, без вашего ведома. Если проблема связана с ELB, вы должны увидеть это в показателях ELB; ELB_5XX или Spillover - это метрики, которые я бы сначала проверил в таком случае. Однако это маловероятно, учитывая, что ваш мониторинг показывает, что служба находится в сети.