Używam Django, FastCGI i Nginx. Tworzę interfejs API, w którym ktoś może wysłać dane przez XML, które przetworzę, a następnie zwrócą kody statusu dla każdego wysłanego węzła.
Problem polega na tym, że Nginx wyrzuci limit czasu bramy 504, jeśli przetworzenie kodu XML potrwa zbyt długo - myślę, że dłużej niż 60 sekund.
Chciałbym więc skonfigurować Nginx, aby jeśli jakieś żądania pasujące do lokalizacji / interfejsu API nie przekraczały limitu czasu przez 120 sekund. Jakie ustawienie to umożliwi.
Do tej pory mam:
# Handles all api calls
location ^~ /api/ {
proxy_read_timeout 120;
proxy_connect_timeout 120;
fastcgi_pass 127.0.0.1:8080;
}
Edycja: To, co mam, nie działa :)
configuration
nginx
fastcgi
płaszcze
źródło
źródło
Odpowiedzi:
Przekroczono limity czasu proxy, w przypadku serwerów proxy, a nie FastCGI ...
Dyrektywy, które wpływają na limity czasu FastCGI to
client_header_timeout
:client_body_timeout
isend_timeout
.Edycja : Biorąc pod uwagę to, co znaleziono na wiki nginx, dyrektywa send_timeout jest odpowiedzialna za ustawienie ogólnego limitu czasu odpowiedzi (co było nieco mylące). Dla FastCGI tam
fastcgi_read_timeout
który ma wpływ na czas oczekiwania odpowiedzi FastCGI proces .HTH.
źródło
Dla tych, którzy używają nginx z jednorożcem i szynami, najprawdopodobniej limit czasu jest w twoim
unicorn.rb
plikuumieść duży limit czasu w Unicorn.rb
jeśli nadal napotykasz problemy, spróbuj mieć fail_timeout = 0 w swoim górnym kanale w nginx i sprawdź, czy to rozwiąże problem. Służy to do debugowania i może być niebezpieczne w środowisku produkcyjnym.
źródło
W
http
sekcji nginx (/etc/nginx/nginx.conf) dodaj lub zmodyfikuj:W
server
sekcji nginx (/etc/nginx/sites-available/your-config-file.com) dodaj następujące linie:W
php
pliku w sprawie 127.0.0.1:9000 (/etc/php/7.X/fpm/pool.d/www.conf) zmień:Mam nadzieję, że ci pomogę.
źródło
Jeśli używasz jednorożca.
Spójrz
top
na swój serwer. Unicorn prawdopodobnie używa obecnie 100% procesora. Istnieje kilka przyczyn tego problemu.Powinieneś sprawdzić swoje żądania HTTP, niektóre z nich mogą być bardzo trudne.
Sprawdź wersję jednorożca. Być może niedawno go zaktualizowałeś i coś się zepsuło.
źródło
W serwerze proxy ustawia się tak
W serwerze php tak ustawiony
źródło