You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-de@httpd.apache.org by Alexander Diedler <ad...@tecracer.de> on 2011/04/26 13:35:08 UTC

Speicherverbrauche Apache 2.2.17

Hallo,

Wir betreiben für einen Kunden einen Webshopserver, der richtig stark
frequentiert ist. Der Apache Webserver Dienst „frisst“ den ganzen RAM auf,
nicht selten landet der Prozess httpd.exe bei 1.4 GB. Wie können wir das
etwas geschmeidiger gestalten bzw gibt es einige Einstellungen, die
„empfohlen“ sind?

 

Inkludiert wird 

# Server-pool management (MPM specific)

Include conf/extra/httpd-mpm.conf

 

Wenn ich das richtig sehe wird per Default dann nur dieser Block angewendet:

<IfModule mpm_worker_module>

    StartServers          2

    MaxClients          150

    MinSpareThreads      25

    MaxSpareThreads      75 

    ThreadsPerChild      25

    MaxRequestsPerChild   0

</IfModule>

 

 

Viele Grüße

Alexander

 


Re: Speicherverbrauche Apache 2.2.17

Posted by Reindl Harald <h....@thelounge.net>.

Am 26.04.2011 13:35, schrieb Alexander Diedler:
> Hallo,
> 
> Wir betreiben für einen Kunden einen Webshopserver, der richtig stark frequentiert ist. Der Apache Webserver Dienst
> „frisst“ den ganzen RAM auf, nicht selten landet der Prozess httpd.exe bei 1.4 GB. Wie können wir das etwas
> geschmeidiger gestalten bzw gibt es einige Einstellungen, die „empfohlen“ sind?
> 
> Inkludiert wird
> 
> # Server-pool management (MPM specific)
> 
> Include conf/extra/httpd-mpm.conf
> 
> Wenn ich das richtig sehe wird per Default dann nur dieser Block angewendet:
> 
> <IfModule mpm_worker_module>
> 
>     StartServers          2
>     MaxClients          150
>     MinSpareThreads      25
>     MaxSpareThreads      75
>     ThreadsPerChild      25
>     MaxRequestsPerChild   0
> </IfModule>
> 
> Viele Grüße
> Alexander

Klingt nach einem Speicherleck irgendwo in PHP oder
irgendeinem Modul

"MaxRequestsPerChild" auf 500 bzw. 1000 runter setzen damit
Threads auch irgendwann wieder beendet werden

Bei "richtig stark frequentiert" stellt sich allerdings primär
die Frage warum man sowas auf Windows betreibt?


Re: Speicherverbrauche Apache 2.2.17

Posted by Reindl Harald <h....@thelounge.net>.
Unternehmensumfeld / Cluster / Java / Tomcat und auf Windows?

Wieso setzt man nicht einfach einen Unix-Host mit Apache auf und lässt
den jk-Connector von dort laufen, dazu muss sich dahinter nichts ändern
und verwendet im Zweifelsfall generell was leichtgewichtigeres als Apache
für den statischen Kram?

http://forum.lighttpd.net/topic/613
________________

Anyways, das Performance-Problem liegt ja am OS und
seinem mangelhaften Caching-Verhalten und dass der
Apache für Windows halt "irgendwie" zur Verfügung
steht um Entwicklern eine Testumgebung zu ermöglichen

Ich kenne ehrlich gesagt niemanden der sich das auf  einer Seite
mit echter Last freiwillig antut

Am 27.04.2011 10:09, schrieb Alexander Diedler:
> Hallo,
> Das ist keine PHP Geschichte, sondern Enterprise Java Framework mit Tomcat
> und geclusterte Umgebung im Unternehmensumfeld. Das hat nix mit Hosting zu
> tun.
> 
> Alex
> 
> -----Ursprüngliche Nachricht-----
> Von: Reindl Harald [mailto:h.reindl@thelounge.net] 
> Gesendet: Mittwoch, 27. April 2011 04:28
> An: users-de@httpd.apache.org
> Betreff: Re: Speicherverbrauche Apache 2.2.17
> 
> 
> 
> Am 26.04.2011 23:03, schrieb Mario Brandt:
>>> Wenn ich das richtig sehe wird per Default dann nur dieser Block
> angewendet:
>>>
>>> <IfModule mpm_worker_module>
>>
>> nicht wirklich! Da Du httpd.exe geschrieben hast, wird es sich um ein 
>> Windows system handeln. Dort trifft folgender Block zu:
>>
>> <IfModule mpm_winnt_module>
>>     ThreadsPerChild      150
>>     MaxRequestsPerChild    0
>> </IfModule>
> 
> Korrekt
> 
> Aber auch hier: MaxRequestsPerChild 0
> Das ist Schönwetter-Config :-)
> 
>>> Klingt nach einem Speicherleck irgendwo in PHP oder irgendeinem Modul
>>
>> Kann ich mir auch vorstellen. Ich empfehle da PHP über mod_fcgid 
>> laufen zu lassen, dann läuft der httpd Prozess nicht über und der PHP 
>> Prozess stirbt nach einer Weile wieder und gibt den Speicher wieder 
>> frei. Ich habe damit bis jetzt ganz gute Erfahrungen gemacht.
> 
> Naja ich hab das zum Spass auch unter Windows aufgesetzt in einer VM aber
> verkaufen würde ich das niemandem für produktives Hosting
> 
>>> Bei "richtig stark frequentiert" stellt sich allerdings primär die 
>>> Frage warum man sowas auf Windows betreibt?
>> Das ist ja schon fast eine religiöse Frage ;)
> 
> Nein
> 
>> Aber jeder sollte ein OS betreiben, dass er versteht und auch warten 
>> kann.
> 
> Oder lernen mit dem richtigen OS für die Anwendung umzugehen bzw. ein
> passendes Hosting-Paket kaufen wo sich jemand drum kümmert
> 
> Bei einer High-Traffic-Seite hat Apache unter Windows nichts zu suchen
> 
>> Ein regelmäßig gepatchtes Windows kann genauso gut sein, wie jedes 
>> andere OS
> 
> Du verwechselst hier was, das regelmässig patchen behebt Sicherheitsprobleme
> des OS, das hab ich unter jedem OS geht aber am Thema vorbei
> 
> Aber es behebt nicht die Tatsache dass Apache und speziell PHP unter Windows
> schlicht und ergreifend um ein vielfaches langsamer und instabiler sind als
> beispielsweise unter Linux auf dem gleichen Blech
> 
> Schon alleine dass der Apache Multithreaded läuft anstatt preforkend tut der
> Stabilität schon mal nicht gut sobald PHP+Extensions im Spiel sind und
> mod_fcgid läuft unter Windows auch nicht sooo prickelnd
> 
> Probiers doch aus:
> * PHP-Anwendung
> * Gleiche Konfiguration / Software-Version
> * 1 x Windows VM, 1 x Linux VM
> * Apache-Benchmark drauf lassen
> * ab -c 50 -n 250000 http://testvm/
> 
> Mit VIEL Glück überlebt das die Windows-Gurke überhaupt wenn dir der httpd
> nicht irgendwann um die Ohren fliegt, aber in jedem Fall ist die
> Linux-Version vor allem wenn auch etwas IO-Last (Ornderlistings, Stat-Calls)
> um ein VIELFACHES schneller
> 
> Lass mal mit PHP ein ordnerlisting rekursiv auf 30.0000 Dateien laufen per
> PHP-SPL, unter Linux dauert das Sekunden, unter Windows Minuten
> 
> Der zweite Call unter Linux dauert Sekundenbruchteile Der zweite Call unter
> Windows genauso lang wie der Erste
> 
> Sorry, aber das ist keine religiöse Frage sondern ein Spielzeug-OS das auf
> einem Server rein gar nichs zu suchen hat


AW: Speicherverbrauche Apache 2.2.17

Posted by Alexander Diedler <ad...@tecracer.de>.
Hallo,
Das ist keine PHP Geschichte, sondern Enterprise Java Framework mit Tomcat
und geclusterte Umgebung im Unternehmensumfeld. Das hat nix mit Hosting zu
tun.

Alex


-----Ursprüngliche Nachricht-----
Von: Reindl Harald [mailto:h.reindl@thelounge.net] 
Gesendet: Mittwoch, 27. April 2011 04:28
An: users-de@httpd.apache.org
Betreff: Re: Speicherverbrauche Apache 2.2.17



Am 26.04.2011 23:03, schrieb Mario Brandt:
>> Wenn ich das richtig sehe wird per Default dann nur dieser Block
angewendet:
>>
>> <IfModule mpm_worker_module>
> 
> nicht wirklich! Da Du httpd.exe geschrieben hast, wird es sich um ein 
> Windows system handeln. Dort trifft folgender Block zu:
> 
> <IfModule mpm_winnt_module>
>     ThreadsPerChild      150
>     MaxRequestsPerChild    0
> </IfModule>

Korrekt

Aber auch hier: MaxRequestsPerChild 0
Das ist Schönwetter-Config :-)

>> Klingt nach einem Speicherleck irgendwo in PHP oder irgendeinem Modul
> 
> Kann ich mir auch vorstellen. Ich empfehle da PHP über mod_fcgid 
> laufen zu lassen, dann läuft der httpd Prozess nicht über und der PHP 
> Prozess stirbt nach einer Weile wieder und gibt den Speicher wieder 
> frei. Ich habe damit bis jetzt ganz gute Erfahrungen gemacht.

Naja ich hab das zum Spass auch unter Windows aufgesetzt in einer VM aber
verkaufen würde ich das niemandem für produktives Hosting

>> Bei "richtig stark frequentiert" stellt sich allerdings primär die 
>> Frage warum man sowas auf Windows betreibt?
> Das ist ja schon fast eine religiöse Frage ;)

Nein

> Aber jeder sollte ein OS betreiben, dass er versteht und auch warten 
> kann.

Oder lernen mit dem richtigen OS für die Anwendung umzugehen bzw. ein
passendes Hosting-Paket kaufen wo sich jemand drum kümmert

Bei einer High-Traffic-Seite hat Apache unter Windows nichts zu suchen

> Ein regelmäßig gepatchtes Windows kann genauso gut sein, wie jedes 
> andere OS

Du verwechselst hier was, das regelmässig patchen behebt Sicherheitsprobleme
des OS, das hab ich unter jedem OS geht aber am Thema vorbei

Aber es behebt nicht die Tatsache dass Apache und speziell PHP unter Windows
schlicht und ergreifend um ein vielfaches langsamer und instabiler sind als
beispielsweise unter Linux auf dem gleichen Blech

Schon alleine dass der Apache Multithreaded läuft anstatt preforkend tut der
Stabilität schon mal nicht gut sobald PHP+Extensions im Spiel sind und
mod_fcgid läuft unter Windows auch nicht sooo prickelnd

Probiers doch aus:
* PHP-Anwendung
* Gleiche Konfiguration / Software-Version
* 1 x Windows VM, 1 x Linux VM
* Apache-Benchmark drauf lassen
* ab -c 50 -n 250000 http://testvm/

Mit VIEL Glück überlebt das die Windows-Gurke überhaupt wenn dir der httpd
nicht irgendwann um die Ohren fliegt, aber in jedem Fall ist die
Linux-Version vor allem wenn auch etwas IO-Last (Ornderlistings, Stat-Calls)
um ein VIELFACHES schneller

Lass mal mit PHP ein ordnerlisting rekursiv auf 30.0000 Dateien laufen per
PHP-SPL, unter Linux dauert das Sekunden, unter Windows Minuten

Der zweite Call unter Linux dauert Sekundenbruchteile Der zweite Call unter
Windows genauso lang wie der Erste

Sorry, aber das ist keine religiöse Frage sondern ein Spielzeug-OS das auf
einem Server rein gar nichs zu suchen hat


Re: Speicherverbrauche Apache 2.2.17

Posted by Reindl Harald <h....@thelounge.net>.

Am 26.04.2011 23:03, schrieb Mario Brandt:
>> Wenn ich das richtig sehe wird per Default dann nur dieser Block angewendet:
>>
>> <IfModule mpm_worker_module>
> 
> nicht wirklich! Da Du httpd.exe geschrieben hast, wird es sich um ein
> Windows system handeln. Dort trifft folgender Block zu:
> 
> <IfModule mpm_winnt_module>
>     ThreadsPerChild      150
>     MaxRequestsPerChild    0
> </IfModule>

Korrekt

Aber auch hier: MaxRequestsPerChild 0
Das ist Schönwetter-Config :-)

>> Klingt nach einem Speicherleck irgendwo in PHP oder
>> irgendeinem Modul
> 
> Kann ich mir auch vorstellen. Ich empfehle da PHP über mod_fcgid
> laufen zu lassen, dann läuft der httpd Prozess nicht über und der PHP
> Prozess stirbt nach einer Weile wieder und gibt den Speicher wieder
> frei. Ich habe damit bis jetzt ganz gute Erfahrungen gemacht.

Naja ich hab das zum Spass auch unter Windows aufgesetzt in einer VM
aber verkaufen würde ich das niemandem für produktives Hosting

>> Bei "richtig stark frequentiert" stellt sich allerdings primär
>> die Frage warum man sowas auf Windows betreibt?
> Das ist ja schon fast eine religiöse Frage ;) 

Nein

> Aber jeder sollte ein OS betreiben, dass er versteht und 
> auch warten kann. 

Oder lernen mit dem richtigen OS für die Anwendung umzugehen
bzw. ein passendes Hosting-Paket kaufen wo sich jemand drum kümmert

Bei einer High-Traffic-Seite hat Apache unter Windows nichts zu suchen

> Ein regelmäßig gepatchtes Windows kann genauso gut sein,
> wie jedes andere OS

Du verwechselst hier was, das regelmässig patchen behebt Sicherheitsprobleme
des OS, das hab ich unter jedem OS geht aber am Thema vorbei

Aber es behebt nicht die Tatsache dass Apache und speziell PHP unter
Windows schlicht und ergreifend um ein vielfaches langsamer und
instabiler sind als beispielsweise unter Linux auf dem gleichen Blech

Schon alleine dass der Apache Multithreaded läuft anstatt preforkend
tut der Stabilität schon mal nicht gut sobald PHP+Extensions im Spiel
sind und mod_fcgid läuft unter Windows auch nicht sooo prickelnd

Probiers doch aus:
* PHP-Anwendung
* Gleiche Konfiguration / Software-Version
* 1 x Windows VM, 1 x Linux VM
* Apache-Benchmark drauf lassen
* ab -c 50 -n 250000 http://testvm/

Mit VIEL Glück überlebt das die Windows-Gurke überhaupt wenn dir der
httpd nicht irgendwann um die Ohren fliegt, aber in jedem Fall
ist die Linux-Version vor allem wenn auch etwas IO-Last
(Ornderlistings, Stat-Calls) um ein VIELFACHES schneller

Lass mal mit PHP ein ordnerlisting rekursiv auf 30.0000 Dateien laufen
per PHP-SPL, unter Linux dauert das Sekunden, unter Windows Minuten

Der zweite Call unter Linux dauert Sekundenbruchteile
Der zweite Call unter Windows genauso lang wie der Erste

Sorry, aber das ist keine religiöse Frage sondern ein Spielzeug-OS
das auf einem Server rein gar nichs zu suchen hat


Re: Speicherverbrauche Apache 2.2.17

Posted by Mario Brandt <jb...@gmail.com>.
> Wenn ich das richtig sehe wird per Default dann nur dieser Block angewendet:
>
> <IfModule mpm_worker_module>

nicht wirklich! Da Du httpd.exe geschrieben hast, wird es sich um ein
Windows system handeln. Dort trifft folgender Block zu:

<IfModule mpm_winnt_module>
    ThreadsPerChild      150
    MaxRequestsPerChild    0
</IfModule>

>Klingt nach einem Speicherleck irgendwo in PHP oder
>irgendeinem Modul

Kann ich mir auch vorstellen. Ich empfehle da PHP über mod_fcgid
laufen zu lassen, dann läuft der httpd Prozess nicht über und der PHP
Prozess stirbt nach einer Weile wieder und gibt den Speicher wieder
frei. Ich habe damit bis jetzt ganz gute Erfahrungen gemacht.

>Bei "richtig stark frequentiert" stellt sich allerdings primär
>die Frage warum man sowas auf Windows betreibt?
Das ist ja schon fast eine religiöse Frage ;) Aber jeder sollte ein OS
betreiben, dass er versteht und auch warten kann. Ein regelmäßig
gepatchtes Windows kann genauso gut sein, wie jedes andere OS. Aber
wie gesagt, das ist eine religöse Frage.

Mario

--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------