У меня есть настройка AKS-> Traefik (Ingress) -> Docker (pod) -> NGINX-> Gunicorn-> Django-> SQL Server в Azure.
в AWS время отклика для страницы, которая выполняет ~ 100 запросов к моему API, составляет ~ 4,5 секунды для полной визуализации, а в Azure время увеличивается до ~ 16,5 секунд. AWS имеет аналогичную настройку (EKS), что и Azure (AKS).
На AKS время до первого байта (TTFB) просто безумно, и оно продолжает увеличиваться, как будто запросы API формируют очередь. Итак, в моем NGINX я зарегистрировал запросы, которые попали в NGINX, следующим образом:
'Req time:$request_time. UpRespTime:$upstream_response_time. Pipe:$pipe';
Как видно на этой картинке:
По какой-то причине один и тот же вызов API продолжает увеличиваться во время остановки.
И это происходит до тех пор, пока внезапно каждый вызов API не останавливается на срок до 7 секунд.
Я, конечно, пытался отладить его, это то, что я пробовал: 1) Я сделал сценарий, чтобы просто сделать 1000 запросов к базе данных Azure прямо с моего локального компьютера, это занимает примерно то же время, что и на RDS. Подобно вызову базы данных за 0,03 мс, поэтому это не имеет отношения к индексам или скорости экземпляра.
2) Я попытался установить все настройки на postgresql на производстве, отключив сборщик журналов и т. Д.
3) Обязательно сжимайте все вызовы API с помощью NGINX
4) Посмотрев журнал NGINX, я обнаружил, что на этом этапе он использует HTTP 1, а на вкладке сети указано, что это HTTP 2. Я знаю, что HTTP2, как предполагается, лучше справляется с большим количеством асинхронных запросов, но затем Опять же, AWS имеет именно такую настройку, так почему это должно быть медленнее.
5) Заменил строку подключения на SQL Server в Azure на базу данных на AWS (RDS), и она стала такой же быстрой, поэтому я предполагаю, что это как-то связано с базой данных, но производительность просто неплохая. Так может ли это быть каким-то образом соединение между AKS и базой данных SQL Azure или какое-то регулирование самой базы данных? Они находятся в одном регионе, и даже если бы один из них был в Африке, небольшой вызов API не должен занимать 7 секунд.
6) Пытался прочитать об ограничении AKS, люди жалуются на кучу разных проблем, что происходит некоторая недокументированная магия, где AKS накладывает некоторые ограничения на количество запросов, это действительно не так много запросов, и мы находимся на сейчас довольно глубокий ценовой уровень.
Мы будем очень благодарны за любые предложения по отладке этого или подобного!