Speicherbedarf von Apache2 anpassen

Notarzt

Registered User
Hallo Forum,

ich betreibe auf einem vServer (Debian) einen OSCommerce-Shop. Ich hatte den Server schon zu lange nicht mehr mittels apt-get upgrade aktualisiert, und dies dann vor ein paar Tagen nachgeholt. Seitdem meldet monit mehrmals pro Stunde, daß der Apache2 mit dem Speicher nicht auskommt und startet diesen dann gemäß der Einstellung von monit neu.

Code:
Resource limit matched Service apache2 

Date:        Tue, 20 Jan 2009 19:36:57 +0100
Action:      restart
Host:        xxxxxx.vServer.de
Description: 'apache2' total mem amount of 197744kB matches resource limit [total mem amount>102400kB]

Your faithful employee,
monit

Vor dem Upgrade war alles in Ordnung. Der Server lief stabil und monit hatte eigentlich fast nie etwas zu meckern.

Habt Ihr einen Tipp für mich, was ich da am besten machen soll?

Gruß an Alle
Notarzt
 
Ich denke dsa kann man in den Configs von monit einstellen, ab welchem Wert er meckert. Schau mal unter /etc/ nach monit.

Basti
 
Ja, das geht.
Es stört mich aber nicht, daß monit meckert, sondern daß der Apache2 auf einmal so viel Speicher mehr benötigt, daß monit bei der eingestellten Grenze zunächst meckert und dann den Apache2 neu startet.

Ich stell den monit-Grenzwert für den Speicher mal versuchsweise auf 300MB. Wenn er diese Grenze auch übersteigt, muß ich wohl den Apache2 anders konfigurieren, damit er nicht zu viel Speicher für sich vereinnahmt, oder?
 
200 MB ist ok, wenn Du genug anderen Speicher hast.
Leider fehlen hier alle Fakten über Dein System.
- Wieviel Speicher hat der vServer?
- Welches Apache-MPM ist installiert (prefork|worker)?
- Wie lauten die Apache-Tuning-Werte (MaxClients, etc.)?

huschi.
 
Guten Morgen!

Ich hab's befürchtet: Dem Apache2 reichen auch die 300MB nicht aus. Monit meldet:
Code:
Description: 'apache2' total mem amount of 373648kB matches resource
limit [total mem amount>307201kB]

@Huschi:
Zu Deinen Fragen:
1. Wie kann ich denn den wirklich vorhandenen Arbeitsspeicher ermitteln?

2. Ich habe das Apache-MPM prefork installiert.

3.
Code:
<IfModule prefork.c>
StartServers         1
MinSpareServers      1
MaxSpareServers      2
MaxClients           15
MaxRequestsPerChild  1000
</IfModule>


Gruß
Notarzt
 
Danke für das vzfree-Script. Werde ich heute Abend gleich nutzen.

Bei 15 Threads à 12MB komme ich auf 180MB. Was mache ich falsch, daß der Apache2 bei mir jetzt gelegentlich sogar über 360MB haben will?

Ich habe eben Deine Seite Hochleistungs-Apache: Performance-Tuning entdeckt. Das werde ich mir mal durchlesen und nutzen.

Für weitere Hilfe bin ich natürlich dankbar. :)
 
So, Dein prima Script gibt folgendes aus:

Momentan genutzt: 315,504 MB
Maximal genutzt: 640,145 MB
Zugesichert: 512 MB
Maximal nutzbar: 672 MB


Welche Angaben muß ich noch liefern?

Gruß
Kirmeswatz
 
Das error_log des Apache ist schon mal eine erste Anlaufstelle. Desweiteren in den anderen Logs (syslog | messages) nachsehen, ob dort was Verdächtiges steht.

huschi.
 
Jede Anwendung, jeder Dienst nimmt sich RAM welcher aber nur begrenzt vorhanden ist. Daher muß man den RAM Verbrauch der Anwedungen o. Dienste begrenzen.

Grundsätzlich. Alles was man nicht benötigt sollte man auch nicht laufen lassen! Was man eigentlich immer benötigt ist Linux, MySQL, Apache, Qmail.

Als nächstes sollte man wissen/ermitteln wieviel RAM wer/was benötigt um zu laufen. Angenommen Linux, Apache und Qmail benötigen im Leerlauf ca. 100 MB RAM.

Bei einem System mit 756 MB RAM blieben noch 656 MB RAM übrig welche man nun auf Apache und MySQL verteilen kann.

Jede Client-Server Verbindung (MaxClients) benötigt ca. 12 MB RAM. Bei 40 MaxClients wären das 480 MB RAM. Für MySQL blieben dann noch 656 - 480 = 176 MB RAM übrig.

MySQL müßte dann so konfiguriert werden (/etc/my.cnf), daß MySQL nicht mehr als 176 MB verbrauchen kann indem man z.b. die Buffers/Caches oder max_connections kleiner macht.

Benötigt man für MySQL mehr als 176 MB RAM müssen eben die MaxClients reduziert werden.

Apache + MySQL dem vorhandnen RAM anpassen
 
Last edited by a moderator:
Back
Top