apache bleibt stehen und frisst Speicher auf

jPdev.de

Registered User
Hallo,

ich habe das Problem, dass mein Apache regelmäßig stehen bleibt. Die ersten 2-3 Tage läuft alles soweit okay. Die httpd2 Prozessanzahl steigt und sinkt je nach Anforderung. Auffällig ist nur, dass der freie Speicher über diese 2-3 Tage kontinuierlich aufgefressen wird. Sind die letzten 500 MB freier Speicher dran, nimmt auf einmal die httpd2 Prozessanzahl ständig zu, sodass sie binnen 10 Minuten die 1000 Prozesse erreicht. Das ist 5 - 10 Mal so viel, wie die anderen Tage davor, wo noch genug Speicher vorhanden war. Der Server verabschiedet sich dann natürlich mit Max Clients Setting ... Ich habe inzwischen schon die MaxClients auf 1024 gesetzt, um das Ableben möglichst herauszuzögern. Aber das ist ja keine Lösung.

Hat jemand eine Idee, woran das liegen kann oder Anregungen, wo ich wie recherchieren kann?

Danke für eure Antworten
jPdev.de
 
Um die Anzahl der Prozesse des hhtpd zu senken, koennte man "keep-alive" auf "OFF" setzen, oder die keep-alive Zeit runtersetzen (Standart ist glaube ich 300 Sekunden.. das kann auf 10 oder 5 Sekunden runter).


Das der freie Speicher mit der Zeit weniger wird, liegt an Linux und ist normal.
Solange nicht geswappt wird, ist alles ok. Und wenn du sagst, dass du noch 500 MB frei hast, sind noch genug Reserven vorhanden.
 
Also die KeepAliveTimeout ist auf 10 Sekunden. Es mag ja sein, dass Lunix sich immer mehr Speicher krallt aber auffällig für mich ist, dass sobald die ca. 500 MB freier Speicher unterschritten wird, die Prozessanzahl dann in die Höhe schnellt. Warum dann erst? Geswapt wird zu diesem Zeitpunkt nicht.

Die Anzahl ist ja 2-3 Tage super bis der Speicher zu Ende geht. Dann steigt die Anzahl ja erst rapide an.

Soll ich die Timeout dann noch weiter runterschrauben oder lieber KeepAlive Off setzen? Was hat das dann für Auswirkungen und Vor- und Nachteile?
 
Last edited by a moderator:
jPdev.de said:
auffällig für mich ist, dass sobald die ca. 500 MB freier Speicher unterschritten wird, die Prozessanzahl dann in die Höhe schnellt.
War erst das Huhn oder das Ei?
Antwort: Beides gehört zusammen.

oder lieber KeepAlive Off setzen?
Das war die eigendlich Aussage.

Was hat das dann für Auswirkungen und Vor- und Nachteile?
Nutze die Boardsuche oder Google.

huschi.
 
Huschi said:
Zitat:
Zitat von jPdev.de
auffällig für mich ist, dass sobald die ca. 500 MB freier Speicher unterschritten wird, die Prozessanzahl dann in die Höhe schnellt.

War erst das Huhn oder das Ei?
Antwort: Beides gehört zusammen.

Es gehört also dazu, dass Linux den Speicher auffrist und dadurch den Apache zwingt die Prozesszahl in die Höhe zu jagen um dann stehen zu bleiben? Das kann ich nicht glauben.

Sorry Huschi

Oder wie soll ich das verstehen? Die Aussage war ein wenig wage.
 
Last edited by a moderator:
Du suchst die Schuld bei Linux. Das ist der eigendliche Fehler statt endlich mal KeepAlive auf Off zu setzen.

Linux frist nichts auf. Aber sobald Du erhöhte Anfragen hast, hast Du zuviel 'Restmüll' im Speicher, der auf einen Timeout wartet und keine anderen Anfragen annehmen kann. Daher muß Apache einen neuen Fork machen. Und sobald zuviel Speicher belegt wird, fängt Linux an zu swappen und das ganze System wird noch langsamer und langsamer und langsamer...

Shit, jetzt hab ich Dir doch alles geschrieben, statt das Du selbst auf die Suche gehst... :(

huschi.
 
Ich habe es mal auf Off gesetzt. Der freie Speicher baut sich aber nicht mehr auf.

Ich gebe niemandem die Schuld, ich fragte eher wer Schuld ist.

Wo kommt der Restmüll denn her? Wie kann sich dieser Müll über 3 Tage aufbauen? Ich hätte vermutet, dass wenn KeepAlive On ist, das dann immer noch Timeout zieht, das heißt dieser Müll nur 10 Sekunden bleibt?

Huschi said:
Shit, jetzt hab ich Dir doch alles geschrieben, statt das Du selbst auf die Suche gehst...

Das ist doch der Sinn eines Forums!
 
Last edited by a moderator:
ich fragte eher wer Schuld ist.
Wie du das herrausfinden kannst hab ich schon oben geschrieben.
Das ist doch der Sinn eines Forums!
Nein, Sinn dieses Forums ist es Serverbetreibern zu helfen (wobei das natürlich meine Interpretation ist). Bei Serverbetreiber die sich einen Server holen ohne ausreichendes Grundlagenwissen zu haben oder die bei jedem Problem gleich im Forum zu fragen anstatt selbst nach einer Problemlösung zu suchen ist es IMHO sinnvoll diese Serverbetreiber umzuerziehen. Es macht keinen Sinn redundante Informationen in ein Forum zu schreiben.
 
Last edited by a moderator:
Gut dann entschuldigt, dann nenne mir bitte den Link, der mein konkretes Problem behandelt.
 
Last edited by a moderator:
Das "oder" in meinem Beitrag war ein inklusives "oder". Bei dir trifft IMHO beides zu. Du weißt momentan nicht was dein konkretes Problem ist. Mit etwas Eigeninitiative und etwas neu angelernten Wissen kannst du es mit mod_status vermutlich herrausfinden, viel Spass dabei.
 
jPdev.de said:
Es gehört also dazu, dass Linux den Speicher auffrist und dadurch den Apache zwingt die Prozesszahl in die Höhe zu jagen um dann stehen zu bleiben? Das kann ich nicht glauben.

Sorry Huschi

Oder wie soll ich das verstehen? Die Aussage war ein wenig wage.
Du hast eine gewisse Zugriffsrate auf den Server. Jeder Zugriff (OK, in der Default Config jeder 5.) bewirkt, dass ein apache Prozess forked.
Jeder geforkede Prozess benötigt Speicher.

Angenommen, dein Rechner ist in der Lage, bei verfügbarem Speicher 10 Zugriffe pro Sekunde abzuarbeiten, dann geht bis zu eben diesem Schwellenwert noch alles glatt.

Ist der Speicher aber voll, dann muss auf den Virtuellen Speicher zugegriffen werden. Jeder Prozess, der forked, bewirkt dann, dass das System zur normalen Last erst mal noch swappen muss. Das kostet Zeit, und der Prozess wartet so lange auf Resourcen. Dein System kann jetzt (mit swappen) also nur noch z.B. 3 Zugriffe pro Sekunde bearbeiten.

Hast du also ein mal den physikalischen Speicher zugesetzt, dann bleiben von den 10 Anfragen, die er normalerweise in einer Sekunde bearbeiten konnte, noch 7 übrig. in der zweiten Sekunde hast du also 3 Zugriffe bearbeitet, 7 warten, und 10 neue kommen rein, macht 17 aktive Prozesse, die alle Speicher benötigen.
In der 3. Sekunde kommen die nächsten 10 rein, drei wurden abgearbeitet. Macht 24, und das Swappen verschlechtert sich, so dass jetzt nur noch 2 Zugriffe pro Sekunde abgearbeitet werden können.
Dazu erhöht sich der Overhead im Task Scheduler, und die Performance verschlechtert sich noch mal.

Das geht schlimmstenfalls so lange weiter, bis der Rechner nur noch am swappen ist, und gar nicht mehr voran kommt.

Das ist übrigens kein Linux-Problem, sondern das machen alle Systeme so, die virtuellen Speicher verwenden.
 
jPdev.de said:
Ich habe es mal auf Off gesetzt. Der freie Speicher baut sich aber nicht mehr auf.
Hoffentlich hast Du den Apache auch reloaded.

Nochmal Offtopic:
Das ist doch der Sinn eines Forums!
Zur Ergänzung von oben:
Wenn das Problem bereits 5 mal im selben Forum diskutiert wurde, macht es durchaus Sinn es kein 6.mal zu schreiben.
Statt dessen haben weise Programmierer die Boardsuche 'erfunden' und andere (vieleicht genauso weise) Studenten damals Google.
Die nötigen Stichwörter haben wir Dir auch schon genannt.
Dir stand also nichts im Weg, Dich selbst auf die Suche nach Erklärungen zu machen.

huschi.
 
Huschi said:
Hoffentlich hast Du den Apache auch reloaded.

Ich habe ein GRACEFUL gemacht. Die Prozessanzahl ging auch zurück, so wie es zu erwarten war aber der Speicher rührte sich nicht. Nach STOP/START war es nicht anders. Versuche erstmal das SERVER-STATUS und -INFO.

Danke erstmal.
 
Back
Top