Speichernutzung des Apache

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

Postby Wiedmann » 22. July 2004 22:59

nemesis wrote:Auf wieviele Childs haste den Apache denn eingestellt? Wenns nur einer ist, isses klar :)
Ansonsten übernimmt ja einer der anderen Childs den Request.

Bei Windows gibt es nur einen Child. Jeder Request wird aber durch einen eigenen Thread innerhalb dieses Childs bearbeitet.

Mitunter ein Grund, warum MaxRequestChild unter Windows entweder auf 0 oder relativ hoch eingestellt sein sollte...
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby nemesis » 22. July 2004 23:34

Ah sorry, war mit Gedanken wo anders, aber eins was noch helfen könnte: Setz die Worker Threads runter, du hast wohl kaum jemals 250 gleichzeitige Verbindungen zum Apache hin :)

ThreadsPerChild 250
MaxRequestsPerChild 1000

z.B. Dann kann jeder Child 4 Requests annehmen, und es werden alle 250 Threads beendet, und wieder neu gestartet, dass wirds sein was so lange bei dir dauert :)
Setz es mal so auf 10-50 ThreadsPerChild.

Ansonsten, wennste mod_perl aktiviert hast, könnte es den !respawn! auch ausbremsen.
Ubuntu 18.04 | SMP P3 1.4 GHz | 6 GByte RegECC | 74 GByte Seagate 15k5 system | 3Ware 9550SXU-4LP with 4x 500 GByte Seagate ES2 Raid 10 data | StoreCase DE400 | PX-230A | Intel Pro/1000MT Dual PCI-X
User avatar
nemesis
AF Moderator
 
Posts: 1044
Joined: 29. December 2002 13:14
Location: Ingolstadt
XAMPP version: depends
Operating System: Linux, BSD, Win, iOS, Android

Postby hmundt » 23. July 2004 07:00

Ja, das scheint zu wirken. Der Neustart des Kindprozesses geht damit deutlich schneller. Kann der Apache irgendwelche Statistiken auswerfen, wieviele Threads er maximal gleichzeitig in Benutzung hatte, so dass man hier einen sinnvollen Wert einstellen kann?
hmundt
 
Posts: 15
Joined: 12. July 2004 10:43

Postby nemesis » 23. July 2004 11:11

Setz erstens mal den Extendetet Status auf on:

#ExtendedStatus On <-- Original-Einstellung.

Und dann noch

#<Location /server-status>
# SetHandler server-status
# Order deny,allow
# Deny from all
# Allow from .localhost
#</Location>

das # am Anfang wegnehmen. Ist beides schon in der httpd.conf vorhanden.

Über die url: http://localhost/server-status
Kannst dann alles sehen was gerade so abgeht ;)

http://apache.org/server-status ist da mein liebstes Beispiel :)
Ubuntu 18.04 | SMP P3 1.4 GHz | 6 GByte RegECC | 74 GByte Seagate 15k5 system | 3Ware 9550SXU-4LP with 4x 500 GByte Seagate ES2 Raid 10 data | StoreCase DE400 | PX-230A | Intel Pro/1000MT Dual PCI-X
User avatar
nemesis
AF Moderator
 
Posts: 1044
Joined: 29. December 2002 13:14
Location: Ingolstadt
XAMPP version: depends
Operating System: Linux, BSD, Win, iOS, Android

Postby borschtel1 » 26. July 2004 10:04

wollte mich nur auch nochmal melden.

bei mir läuft der server jetzt schon vier tage ohne absturz durch.

ich kann leider nicht genau sagen, wie ich das geschafft habe.
ich habe die dinge, die hier im thread genannt werden ausprobiert meinen rechner rebootet und das loglevel auf debug geschaltet.

seit dem habe ich keinen absturz mehr.

wenn es wieder passiert melde ich mich wieder.

gruß
ThorstenT
borschtel1
 
Posts: 29
Joined: 27. May 2004 11:29

Postby semtexKG » 02. August 2004 15:20

ich habe das problem leider noch nicht lösen können.

apache wird fetter und fetter bis er crashed. er hat jetzt schon 130 mb. da das ding kein richtiger server sondern mehr ein testpc ist dauerts danach meist nicht lang bis er das ganze system in den tot reißt.

edit: was genaut bringt mir das verringern der threadsperchild und maxrequestsperchild?

apache 1 funkt wunderbar :(
semtexKG
 
Posts: 5
Joined: 04. May 2004 08:55

Postby hmundt » 02. August 2004 16:01

MaxRequestsperChild sorgt dafür, dass der Apache nach genau dieser Anzahl an Requests seinen Kindprozess neu startet. Damit wird der gesamte allozierte Speicher freigegeben. Nach einigen Sekunden steht der Aapche dann wieder für Requests zu Verfügung. Ist ungefähr der gleiche Effekt als wenn Du den Dienst von Hand neu startest, aber es gehen keine Requests verloren (wenn der User lange genug wartet).

Mit ThreadsPerChild kannst Du steuern, wieviele Requests der Apache "gleichzeitig" verarbeiten kann. Wenn Du diesen Wert niedriger einstellst, geht der "Neustart" schneller. (Wenn bei 130 MB Schluss ist, gehe ich mal davon aus, dass dein Server in der Regel nicht 250 gleichzeitige Requests verarbeiten muss...)
hmundt
 
Posts: 15
Joined: 12. July 2004 10:43

Postby semtexKG » 02. August 2004 21:45

k ich hab das mal gemacht... hauptsache der apache reißt nicht das system in den tot.
semtexKG
 
Posts: 5
Joined: 04. May 2004 08:55

Postby semtexKG » 04. August 2004 00:25

sorry, dass ich das thema nochmal pushe aber:

ThreadsPerChild 250
MaxRequestsPerChild 1000

hab ich jetzt mal geändert auf

ThreadsPerChild 30
MaxRequestsPerChild 1000

würde das reichen um zu verhindern, dass die apache.exe, sagen wir mal, größer als 50-60mb wird?
semtexKG
 
Posts: 5
Joined: 04. May 2004 08:55

Postby hmundt » 04. August 2004 06:04

Das hängt natürlich u.a. stark davon ab, wieviel Speicher Deine Skripte brauchen.
Aber wenn Du nicht zuviele Zugriffe hast und Deine Skripte sparsam mit dem Speicher umgehen, könnte es schon funktionieren.
Ich habe das Problem einigermaßen in den Griff bekommen, indem ich meine Applikation so gestaltet habe, dass sie sparsamer mit dem Arbeitsspeicher umgeht und Ressourcen wie Resultsets und Datenbank-Handles explizit freigibt.
Außerdem hat sich die dbx-Extension als wahrer Speichefresser entpuppt, ich hab sie daher durch native Datenbankroutinen ersetzt. Wenn man nicht auf Portabilität angewiesen ist, lohnt sich das.
hmundt
 
Posts: 15
Joined: 12. July 2004 10:43

Postby apache@w2k3 » 16. November 2007 14:46

Hallo,
wie sieht das bei Euch nun aus, läuft alles stabil?

Wir haben leider Probleme.

Unser System:
Apache läuft auf einem Windows2003 P4 3,2 (HT) mit 4GB.
Wir haben jetzt teilweise 40 gleichtzeitige Nutzer

Wir hatten bei hoher last auch den Fehler
"FATAL: emalloc(): Unable to allocate xxxxxx bytes"

Jetzt haben wir testweise folgende Konfigurationen geändert:

ThreadsPerChild auf 250 und jetzt auf 50
MaxRequestChild auf 0 (unendlich) und jetzt auf 500
(Habt Ihr dafür noch bessere Empfehlungen?)

Fehler "FATAL: emalloc(): Unable to allocate xxxxxx bytes" kam jetzt erstmal nicht mehr, war aber auch noch keine wirkliche Lastsituation, dafür hängt sich apache.exe mit folgender Meldung in der Windows-Ereignissanzeige auf und startet den Childprozess anscheinend nichtmehr:

Ereignistyp: Fehler
Ereignisquelle: Application Error
Ereigniskategorie: (100)
Ereigniskennung: 1000
Datum: 16.11.2007
Zeit: 14:03:13
Benutzer: Nicht zutreffend
Computer: Server
Beschreibung:
Fehlgeschlagene Anwendung apache.exe, Version 2.2.2.0, fehlgeschlagenes Modul ntdll.dll, Version 5.2.3790.3959, Fehleradresse 0x000417af.

Weitere Informationen über die Hilfe- und Supportdienste erhalten Sie unter http://go.microsoft.com/fwlink/events.asp.
Daten:
0000: 41 70 70 6c 69 63 61 74 Applicat
0008: 69 6f 6e 20 46 61 69 6c ion Fail
0010: 75 72 65 20 20 61 70 61 ure apa
0018: 63 68 65 2e 65 78 65 20 che.exe
0020: 32 2e 32 2e 32 2e 30 20 2.2.2.0
0028: 69 6e 20 6e 74 64 6c 6c in ntdll
0030: 2e 64 6c 6c 20 35 2e 32 .dll 5.2
0038: 2e 33 37 39 30 2e 33 39 .3790.39
0040: 35 39 20 61 74 20 6f 66 59 at of
0048: 66 73 65 74 20 30 30 30 fset 000
0050: 34 31 37 61 66 417af

Im Errorlog steht nichts weiters als:

Code: Select all
[Fri Nov 16 14:03:10 2007] [notice] Child 876: Process exiting because it reached MaxRequestsPerChild. Signaling the parent to restart a new child process.
[Fri Nov 16 14:03:10 2007] [notice] Parent: Received restart signal -- Restarting the server.
[Fri Nov 16 14:03:10 2007] [warn] (OS 10038)Ein Vorgang bezog sich auf ein Objekt, das kein Socket ist.  : setsockopt(SO_UPDATE_ACCEPT_CONTEXT) failed.
[Fri Nov 16 14:03:11 2007] [notice] Child 876: Released the start mutex
[Fri Nov 16 14:03:12 2007] [notice] Child 876: Waiting for 50 worker threads to exit.
[Fri Nov 16 14:03:12 2007] [notice] Child 876: All worker threads have exited.
[Fri Nov 16 14:03:12 2007] [notice] Child 876: Child process is exiting


Ich musste dann per Hand im Xampp-Control-Panel den Apachen wieder starten :(

Danke und herzliche Grüße
apache@w2k3
 
Posts: 24
Joined: 13. July 2006 11:49

Previous

Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 40 guests