Ustawienie podtrzymujące dla Gunicorn za ELB bez Nginx

15

Interfejs API REST naszej aplikacji jest obsługiwany przez Gunicorn ( nie za Nginx) działający na instancjach AWS EC2 z typową konfiguracją automatycznego skalowania / równoważenia obciążenia. Limit czasu bezczynności modułu równoważenia obciążenia wynosi 60 sekund, a limit czasu utrzymania Gunicorn - 2 sekundy. Sporadycznie 504 Gateway Timeoutreagowaliśmy na tę konfigurację. Według dokumentów Amazon może to być spowodowane tym, że limit czasu podtrzymania serwera jest krótszy niż limit czasu bezczynności modułu równoważenia obciążenia:

Przyczyna 2: Zarejestrowane instancje zamykają połączenie z elastycznym równoważeniem obciążenia.

Rozwiązanie 2: Włącz ustawienia utrzymywania aktywności w instancjach EC2 i ustaw limit czasu podtrzymania na wartość większą lub równą ustawieniom limitu czasu bezczynności modułu równoważenia obciążenia.

W Nginx domyślnie keepalive_timeoutjest 75 sekund, co najwyraźniej działa dobrze z domyślnymi ustawieniami ELB. Jednak doktorzy Gunicorn zalecają keepaliveustawienie w zakresie 1-5 sekund.

Czy sensowne jest podbicie podtrzymywalności Gunicorna do 75 sekund, czy też jest dobry powód, aby utrzymywać go poniżej 5 sekund, mimo że nie używamy odwrotnego proxy przed nim?

handsofaten
źródło

Odpowiedzi:

16

Prawie na pewno będziesz chciał podnieść licznik podtrzymania zgodnie z zaleceniem ELB, ponieważ ELB ponownie wykorzystuje połączenia. Będzie je utrzymywał aż do upływu limitu czasu, a jeśli do ELB pojawi się kolejne żądanie, często użyje jednego z już otwartych połączeń, aby je wysłać.

504 Gateway Timeout jest dziwnym błędem dla tego warunku, ale wydaje się, że to właśnie ELB zwraca, gdy ponowne użycie połączenia zbiega się z przedwczesnym zamknięciem zaplecza.

5 sekundowe zalecenie może mieć sens, jeśli przeglądarki komunikują się bezpośrednio z back-endem, ale nie jest tak w przypadku ELB, który sam jest właściwym odwrotnym proxy podczas działania w trybie HTTP.

Michael - sqlbot
źródło
Dzięki, tak podejrzewałam. Wypróbuję tę zmianę w tym tygodniu i
zaznaczę
Połączyliśmy zmianę około tydzień temu, a 504 stały się znacznie mniej powszechne (kilka razy w tygodniu zamiast kilkuset razy w tygodniu).
handsofaten