Ich verwende Django, FastCGI und Nginx. Ich erstelle eine Art API, in der jemand Daten über XML senden kann, die ich verarbeiten und dann einige Statuscodes für jeden Knoten zurückgeben kann, der gesendet wurde.
Das Problem ist, dass Nginx ein 504-Gateway-Timeout auslöst, wenn ich zu lange brauche, um das XML zu verarbeiten - ich denke länger als 60 Sekunden.
Daher möchte ich Nginx so einrichten, dass bei Anfragen, die mit dem Standort / der API übereinstimmen, keine Zeitüberschreitung von 120 Sekunden auftritt. Welche Einstellung wird das erreichen.
Was ich bisher habe ist:
# Handles all api calls
location ^~ /api/ {
proxy_read_timeout 120;
proxy_connect_timeout 120;
fastcgi_pass 127.0.0.1:8080;
}
Edit: Was ich habe funktioniert nicht :)
configuration
nginx
fastcgi
sheats
quelle
quelle
Antworten:
Proxy-Timeouts sind gut für Proxys, nicht für FastCGI ...
Die Richtlinien , die FastCGI Timeouts beeinflussen sind
client_header_timeout
,client_body_timeout
undsend_timeout
.Bearbeiten : In Anbetracht dessen, was im Nginx- Wiki zu finden ist, ist die Anweisung send_timeout dafür verantwortlich, das allgemeine Zeitlimit für die Antwort festzulegen (was etwas irreführend war). Bei FastCGI wirkt
fastcgi_read_timeout
sich dies auf das Antwortzeitlimit für den Fastcgi-Prozess aus .HTH.
quelle
Für diejenigen, die Nginx mit Einhorn und Schienen verwenden, befindet sich das Zeitlimit höchstwahrscheinlich in Ihrer
unicorn.rb
DateiSetzen Sie eine große Zeitüberschreitung in unicorn.rb
Wenn Sie immer noch Probleme haben, versuchen Sie, fail_timeout = 0 in Ihrem Upstream in Nginx zu haben, und prüfen Sie, ob dies Ihr Problem behebt. Dies dient zu Debugging-Zwecken und kann in einer Produktionsumgebung gefährlich sein.
quelle
In
http
nginx Abschnitt (/etc/nginx/nginx.conf) hinzuzufügen oder zu ändern:In
server
nginx Abschnitt (/etc/nginx/sites-available/your-config-file.com) fügen Sie folgende Zeilen:In der
php
Datei im Fall 127.0.0.1:9000 (/etc/php/7.X/fpm/pool.d/www.conf) ändern Sie:Ich hoffe dir zu helfen.
quelle
Wenn Sie Einhorn verwenden.
Schau
top
auf deinem Server nach. Unicorn verbraucht derzeit wahrscheinlich 100% der CPU. Es gibt mehrere Gründe für dieses Problem.Sie sollten Ihre HTTP-Anforderungen überprüfen, einige davon können sehr schwierig sein.
Überprüfen Sie die Version des Einhorns. Vielleicht haben Sie es kürzlich aktualisiert und etwas ist kaputt gegangen.
quelle
Im Server-Proxy so eingestellt
In Server PHP so eingestellt
quelle