Wie kann ich nginx keepalive_timeout anpassen?

12

Ich verwende nginx zusammen mit php-fpm, um eine ausgelastete MySQL-basierte Site zu bedienen. Derzeit verwende ich keepalive_timeout = 5, habe jedoch keine klare Vorstellung davon, wie ich es optimal anpassen kann. Schätzen Sie also Ihre Hinweise.

Alfish
quelle

Antworten:

10

Was müssen Sie anpassen, um es zu tun, oder besser gesagt: Haben Sie Probleme damit, es so einzustellen, wie Sie es tun?

Es gibt keine einheitliche Antwort. Wenn die meisten Client-Browser in der Lage sind, alle Ressourcen auf einer Seite in 5 Sekunden zu laden, sind 5 Sekunden in Ordnung. Dies hängt jedoch vollständig von den Anforderungen Ihrer Anwendung ab. Wenn Ihr Nginx-Server beispielsweise als Reverse-Proxy für Exchange ActiveSync dient, Sie möchten, dass es bis zu einer halben Stunde durchgedreht wird.

Shane Madden
quelle
Nun, ich versuche, die Serverlast zu minimieren (die zu Auswahlzeiten ziemlich hoch ist), und ich denke, dass die Optimierung von keepalive_timeout teilweise zu diesem Ziel beitragen kann. Abgesehen davon ist es nur gesunde Neugier :)
Alfish
1
Sicher - also so ziemlich "so niedrig wie möglich, ohne die meisten Kunden zu starten, bevor sie die Seite laden" - wenn Ihre Seiten für die meisten Ihrer Kunden weniger als eine Sekunde lang geladen werden, ist eine Zeitüberschreitung von 1 Sekunde in Ordnung. Aber wenn Ihr Timeout nicht viel, viel höher als 5 Sekunden ist, ist es unwahrscheinlich, dass es eine Hauptursache für die Serverlast ist.
Shane Madden
Das ist der schwierige Punkt. Wie kann ich die Ladezeit der Seite bestimmen, angesichts der unterschiedlichen Ladezeit der Seiten (einige sind schwerer als andere), der Verbindungsgeschwindigkeit der Besucher usw.
Alfish
Einfach Baseballstadion. Es ist unwahrscheinlich, dass ein paar Sekunden auf die eine oder andere Weise einen wesentlichen Unterschied in der Auslastung bewirken. Sie können also einen hohen Wert schätzen - aber auch einen neuen Aufbau einer TCP-Verbindung (ggf. auch mit einem SSL-Handshake) für einen Client mit langsamer Auslastung wird keinen großen Unterschied in ihrer Gesamtladegeschwindigkeit machen.
Shane Madden
1
@ShaneMadden, dass 5 Sekunden nicht die Lebensdauer der Verbindung sind, sondern nur eine Zeitüberschreitung, während der der Server bis zu einer weiteren Anforderung wartet keepalive_requests. Es ist also nicht wichtig, wie viel Zeit das Laden der gesamten Seite benötigt, nur für das HTML, bis der Browser Bilder / CSS abruft ... Übrigens max. Zeit Verbindung ist offen gehalten ist fastkeepalive_timeout*keepalive_requests
Marki555