Was sehen Benutzer, wenn Apache MaxClients erreicht?

8

Gelegentlich finde ich in meinem Apache-Fehlerprotokoll:

[error] server reached MaxClients setting, consider raising the MaxClients setting

Ich habe MaxClients in der Vergangenheit absichtlich (auf 60) aufgrund von Problemen mit Speichermangel gesenkt, aber ich möchte genau wissen, was am Ende des Benutzers passiert, wenn dieses Limit auf dem Server erreicht wird. Dauert das Laden der Seite, auf die sie zugreifen, nur länger? Erhalten sie eine Fehlermeldung?

laufende Pflanzen
quelle
1
Wahrscheinlich wäre es nicht schwer, einen Test dafür zu erstellen. Versuchen Sie auf einem Testserver, MaxClients auf 1 zu setzen, und sehen Sie, was passiert, wenn Sie Dinge in mehreren Fenstern oder Registerkarten aktualisieren.
Ghoti
Auf jeden Fall - ich hatte gehofft, jemand würde es wissen, bevor ich das tue. Ich kann keine Informationen in der Apache-Dokumentation finden.
Runningonplants

Antworten:

13

Zuerst werden die Client-Anforderungen in die Warteschlange gestellt, bis ein Prozess / Thread auf dem Apache-Server frei wird. Die Clients sehen also eine Verzögerung beim Laden der Seite. Weitere Informationen finden Sie in der MaxClientsParameterdokumentation .

Wenn die Clientanforderung in die Backlog-Warteschlange gestellt wird, kann sie auf der Clientseite möglicherweise eine Zeitüberschreitung aufweisen. Dann wird dem Benutzer eine Fehlerseite in seinem Browser angezeigt, die besagt, dass der Server zu lange braucht, um eine Antwort zu geben. Der Standardwert für das Zeitlimit beträgt beispielsweise in Firefox 300 Sekunden . Oder der Benutzer bricht die Anfrage vor dem Timeout ab ...

Wenn der Server dann mehr Anforderungen erhält und nicht rechtzeitig einen freien Prozess / Thread erhalten kann, kann die ListenBacklogWarteschlange gefüllt werden (standardmäßig 511 Anforderungen in der Warteschlange) und nachfolgende Anforderungen werden überhaupt nicht bedient. Der Browser teilt dem Benutzer dann mit, dass keine Verbindung zur Website hergestellt werden kann, z. B. wenn die Website vollständig ausgefallen ist.

Diese Backlog-Warteschlange wird in der TCP-Implementierung auf Betriebssystemebene verwaltet. Unter Linux erhalten Sie auf der listenManpage weitere Informationen zur Verwaltung. Hier ist eine weitere sehr aufschlussreiche Lektüre über die TCP-Backlog-Warteschlange in Linux- und BSD-Systemen .

Tonin
quelle
Genau das, was ich wissen musste. Vielen Dank! Wissen Sie zufällig, ob es eine Möglichkeit gibt, festzustellen, wie viele Prozesse sich in der ListenBacklog-Warteschlange befinden?
Runningonplants
1
Diese Backlog-Warteschlange wird vom Betriebssystem als Teil des TCP-Stacks verwaltet. Schauen Sie sich die listenManpage an. Ich bin mir nicht sicher, ob es einen direkten Weg gibt, um zu wissen, was diese Warteschlange enthält. Siehe auch diese SO-Frage . Ich habe meiner Antwort weitere Informationen hinzugefügt.
Tonin