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 Martin Ebert <ma...@wb-online.de> on 2005/06/22 21:51:22 UTC

Apache2 MPM

Liebe Liste,
jetzt klemmt es bei mir.

Ich habe hier einen vorkonfigurierten Server; debian bei IPX.
Der Apache2 wickelt seit Monaten ca 20 kleinere Domains als
virtuell auf einer IP ab; alles problemlos.

Heute habe ich eine große Domain umziehen lassen. Muhaha.  :-(
Es zieht den Server zu. Eindeutig apache2-Problem. (load stimmt).
Real: Requests dauern mehrere Sekunden - aber keine Fehlermeldungen.

Nun wollte ich an max-servers etc rumspielen. Und sehe gerade,
dass ich nichtmal verstehe, welches MPM-System bei mir läuft -
läuft überhaupt eins?

Ich hätte ja mal theoretisch prefork.c, worker.c,  perchild.c.
Die werden via IfModule abgefragt.
Ob ich die praktisch habe: Mir unklar.

Das Aufrufprinzip ist mir dummerweise unklar: Ich hätte eines
der Dinger unter ../mods-available erwartet. Da steht nur dummerweise
keins.

Nächste Frage: Welches MPM wäre denn das sinnvollste für mich?
(Single-Prozessor, 1GB RAM, Unix->debian, Spitzen: 5 req/sec)

Die ganz grundsätzliche Frage lautet also:
* Wo genau schraube ich?
* Was muss ich dazu noch anstellen (MPM)?

Mit freundlichen Gruessen, Martin Ebert
-- 
http://www.klug-suchen.de
http://www.bahnsuche.de
http://www.ddr-suche.de
http://www.wb-online.de



--------------------------------------------------------------------------
                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
--------------------------------------------------------------------------


Re: Apache2 MPM

Posted by Paul Puschmann <ln...@uzulabs.net>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

chris wrote:
> hi,
> 
> i'm sorry but pls. reply in english.
> 
> thank you very much.
> 
> 
I don'tweant to be rude, but since this list is
users-de@httpd.apache.org, it is quite common to communicate in german,
because 'de' is the language token for German(y).

If you really seek english answers to your questions regarding apache,
please try users@httpd.apache.org which should be the common (english
speaking) mailing list for the apache project. (or have a look here:
http://httpd.apache.org/lists.html)

And please: Post your comment below the quote, it enhances readability
(espacially if you sitck to the topic).

Paul
- --
Linux-User #271918 with the Linux Counter, http://counter.li.org/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (MingW32)

iEYEARECAAYFAkK/mGgACgkQqErKtBWD7VQUswCfR8S86YZ9OwyyR34tq1XiHmpQ
+FMAnAgF7JOGMWl49MJMYGIvY2bhBu7K
=7+jz
-----END PGP SIGNATURE-----


--------------------------------------------------------------------------
                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
--------------------------------------------------------------------------


Re: Apache2 MPM

Posted by chris <ch...@fivestartel.com>.
hi,

i'm sorry but pls. reply in english.

thank you very much.


----- Original Message -----
From: "Paul Puschmann" <ln...@uzulabs.net>
To: <us...@httpd.apache.org>
Sent: Thursday, June 23, 2005 4:20 PM
Subject: Re: Apache2 MPM


> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Martin Ebert wrote:
> > Liebe Liste,
> > jetzt klemmt es bei mir.
> >
> > Ich habe hier einen vorkonfigurierten Server; debian bei IPX.
> > Der Apache2 wickelt seit Monaten ca 20 kleinere Domains als
> > virtuell auf einer IP ab; alles problemlos.
> >
> > Heute habe ich eine große Domain umziehen lassen. Muhaha.  :-(
> > Es zieht den Server zu. Eindeutig apache2-Problem. (load stimmt).
> > Real: Requests dauern mehrere Sekunden - aber keine Fehlermeldungen.
> >
> > Nun wollte ich an max-servers etc rumspielen. Und sehe gerade,
> > dass ich nichtmal verstehe, welches MPM-System bei mir läuft -
> > läuft überhaupt eins?
> >
> > Ich hätte ja mal theoretisch prefork.c, worker.c,  perchild.c.
> > Die werden via IfModule abgefragt.
> > Ob ich die praktisch habe: Mir unklar.
> >
> > Das Aufrufprinzip ist mir dummerweise unklar: Ich hätte eines
> > der Dinger unter ../mods-available erwartet. Da steht nur dummerweise
> > keins.
> >
> > Nächste Frage: Welches MPM wäre denn das sinnvollste für mich?
> > (Single-Prozessor, 1GB RAM, Unix->debian, Spitzen: 5 req/sec)
> >
> > Die ganz grundsätzliche Frage lautet also:
> > * Wo genau schraube ich?
> > * Was muss ich dazu noch anstellen (MPM)?
> >
> > Mit freundlichen Gruessen, Martin Ebert
> Mach beim nächsten Mal erstmal einen neuen Thread auf anstatt einen
> alten zu kapern.
>
> Als MPM läuft prefork unter Linux stabil und bietet auch die meisten
> Module (z.B. mod_perl, mod_php4). -> prefork
>
> Was für ein Debian hast du installiert? Woody oder Sarge?
> Denn wenn du nicht weißt, welches Modul du installier hast, würde ich
> dir auch erstmal vorschlagen dich in die Paketverwaltung und
> Administration des Debian-Systems einzuarbeiten.
>
> Das Feilen an den Grundeinstellungen des Apache halte ich für nicht
> besonders sinnvoll, es sei denn man weiß *wirklich* was man tut (und
> nicht bloß Dinge, die man mal irgendwo aufgeschnappt hat).
>
> Vielleicht solltest du auch mal überprüfen deine Scripts zu optimieren,
> bzw. deren Aufruf. (mod_perl?) Normalerweise ist die Festplatte ja nicht
> der Schwachpunkt des Servers.
>
> Paul
> - --
> Linux-User #271918 with the Linux Counter, http://counter.li.org/
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.2.2 (MingW32)
>
> iEYEARECAAYFAkK6cNIACgkQqErKtBWD7VTKJACaAuMqEyPp6gUVt8smkZkFdOwa
> aMoAnjS0RmMLPZbzkNa5HS3Oms7VMbMI
> =cz1g
> -----END PGP SIGNATURE-----
>
>
> --------------------------------------------------------------------------
>                 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
> --------------------------------------------------------------------------
>


--------------------------------------------------------------------------
                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
--------------------------------------------------------------------------


Re: Apache2 MPM

Posted by Paul Puschmann <ln...@uzulabs.net>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Martin Ebert wrote:
> Liebe Liste,
> jetzt klemmt es bei mir.
> 
> Ich habe hier einen vorkonfigurierten Server; debian bei IPX.
> Der Apache2 wickelt seit Monaten ca 20 kleinere Domains als
> virtuell auf einer IP ab; alles problemlos.
> 
> Heute habe ich eine große Domain umziehen lassen. Muhaha.  :-(
> Es zieht den Server zu. Eindeutig apache2-Problem. (load stimmt).
> Real: Requests dauern mehrere Sekunden - aber keine Fehlermeldungen.
> 
> Nun wollte ich an max-servers etc rumspielen. Und sehe gerade,
> dass ich nichtmal verstehe, welches MPM-System bei mir läuft -
> läuft überhaupt eins?
> 
> Ich hätte ja mal theoretisch prefork.c, worker.c,  perchild.c.
> Die werden via IfModule abgefragt.
> Ob ich die praktisch habe: Mir unklar.
> 
> Das Aufrufprinzip ist mir dummerweise unklar: Ich hätte eines
> der Dinger unter ../mods-available erwartet. Da steht nur dummerweise
> keins.
> 
> Nächste Frage: Welches MPM wäre denn das sinnvollste für mich?
> (Single-Prozessor, 1GB RAM, Unix->debian, Spitzen: 5 req/sec)
> 
> Die ganz grundsätzliche Frage lautet also:
> * Wo genau schraube ich?
> * Was muss ich dazu noch anstellen (MPM)?
> 
> Mit freundlichen Gruessen, Martin Ebert
Mach beim nächsten Mal erstmal einen neuen Thread auf anstatt einen
alten zu kapern.

Als MPM läuft prefork unter Linux stabil und bietet auch die meisten
Module (z.B. mod_perl, mod_php4). -> prefork

Was für ein Debian hast du installiert? Woody oder Sarge?
Denn wenn du nicht weißt, welches Modul du installier hast, würde ich
dir auch erstmal vorschlagen dich in die Paketverwaltung und
Administration des Debian-Systems einzuarbeiten.

Das Feilen an den Grundeinstellungen des Apache halte ich für nicht
besonders sinnvoll, es sei denn man weiß *wirklich* was man tut (und
nicht bloß Dinge, die man mal irgendwo aufgeschnappt hat).

Vielleicht solltest du auch mal überprüfen deine Scripts zu optimieren,
bzw. deren Aufruf. (mod_perl?) Normalerweise ist die Festplatte ja nicht
der Schwachpunkt des Servers.

Paul
- --
Linux-User #271918 with the Linux Counter, http://counter.li.org/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (MingW32)

iEYEARECAAYFAkK6cNIACgkQqErKtBWD7VTKJACaAuMqEyPp6gUVt8smkZkFdOwa
aMoAnjS0RmMLPZbzkNa5HS3Oms7VMbMI
=cz1g
-----END PGP SIGNATURE-----


--------------------------------------------------------------------------
                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
--------------------------------------------------------------------------


Re: Apache2 MPM

Posted by Max Dittrich <ma...@t-online.de>.
Martin Ebert wrote:
> Joerg, liebe Liste,
> 
> 
>>./httpd -V | grep MPM
>>  -D APACHE_MPM_DIR="server/mpm/prefork"
> 
> 
> -D APACHE_MPM_DIR="server/mpm/worker"
> 
> Unnötig, zu erwähnen, dass es ein derartiges Verzeichnis
> nirgendwo gibt. Und gleich gar nicht unter Server-Root.

Sagt auch nur aus, wo sich die Quellen bei der Kompilierung befanden. 
Das MPM-Module ist wohl immer fest im Programm eingebunden und kann 
nicht per Konfiguration gewechselt werden.

s.a. httpd -l   # | grep -v mod_

>   # apt-show-versions | grep worker
>   apache2-mpm-worker: No available version

2.50.0

> Aber schneller wird der Server davon auch nicht: Das Ding ist arschlahm.
> Mal gucken: http://www.klug-suchen.de

Ja, erschreckend langsam. Bei mir erfolgt eine Antwort erst nach 30+ 
Sekunden. Statische Inhalte jedoch werden unverzögert ausgeliefert. Also 
liegt der Hase wohl da begraben. Diese Verzögerung von regelmässig 30 
Sekunden lässt mich erstmal an ein Timeout denken.

> 
> Pro Seite werden bis zu sechs verschiedene kleine Perlscripts aufgerufen.
> Ich bin nahe dran, den Apache-1.3.x wieder handgefeilt (da wußte ich noch,
> was ich tue) reinzutun. Und den Content wieder in eine Ramdisk.

Bei den 5 Req/s kommst Du sicher auch mit dem bei Unix-Plattformen 
standardmässig verwendeten Prefork MPM klar. Ansonsten kannst Du 
vielleicht in einem privaten Bereich den Aufbau der Webseite Schritt für 
Schritt durch deaktivieren einzelne Skripts zurückbauen, um die Ursache 
zu identifizieren.

gruss,
.max


--------------------------------------------------------------------------
                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
--------------------------------------------------------------------------


Re: Apache2 MPM

Posted by Joerg Behrens <be...@takenet.de>.
Martin Ebert schrieb:
> Joerg, liebe Liste,
> 
> 
>>./httpd -V | grep MPM
>>  -D APACHE_MPM_DIR="server/mpm/prefork"
> 
> 
> -D APACHE_MPM_DIR="server/mpm/worker"
> 
> Unnötig, zu erwähnen, dass es ein derartiges Verzeichnis
> nirgendwo gibt. Und gleich gar nicht unter Server-Root.

Es ist ein Verzeichnis aus dem Sourcetree und es zeigt dir das dein 
Apache2 mit dem Worker MPM laueft. Da das Modul fest einkompiliert ist 
kannst du das auf der Platte ja auch nicht finden.

Ein ./httpd -l  haette es auch angezeigt sehe ich gerade.

>   # apt-show-versions | grep worker
>   apache2-mpm-worker: No available version
> 
> Naja, immerhin haben wir _irgendwas_. Irgendwo.
> 
> Ok, der andere Weg. An allen Optionen gleichzeitig schrauben.
> Ich hasse sowas.
> 
> Aber immerhin:
>  Restarting web server: Apache2WARNING: MaxClients (256) is not an integer
> multiple
>   of ThreadsPerChild (25), lowering MaxClients to 250
>   for a maximum of 10 child processes,
> 
> Aha. "pthread MPM" ist es.
> 
> Aktuell also diese Einstellungen:
>  <IfModule worker.c>
>  StartServers         2
>  MaxClients         256
>  MinSpareThreads     25
>  MaxSpareThreads    256
>  ThreadsPerChild     64
>  MaxRequestsPerChild 500
>  </IfModule>
> 
> Aber schneller wird der Server davon auch nicht: Das Ding ist arschlahm.
> Mal gucken: http://www.klug-suchen.de
> 
> Pro Seite werden bis zu sechs verschiedene kleine Perlscripts aufgerufen.
> Ich bin nahe dran, den Apache-1.3.x wieder handgefeilt (da wußte ich noch,
> was ich tue) reinzutun. Und den Content wieder in eine Ramdisk.

Ich sehe da SSI Fehlermeldungen. Konzentriere dich auf die dyn. Seiten 
den Statischer Kontent kommt doch recht schnell. Einfach mal einen nach 
dem anderen dieser exec() Aufrufe entfernen. Oder nen Testscript um 
zuschauen ob der Hund generell Probleme mit SSI bzw. bestimmten 
Funktionen da hat.

Ich haette die Moeglichkeit mit 'par -sSSi ./httpd' meinem Apache bei 
der Arbeit  zuzugucken. Inwiefern dir unter Linux ein strace bei der 
Threaded Geschichte hilft must du selber schauen.


Gruss
Joerg

--------------------------------------------------------------------------
                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
--------------------------------------------------------------------------


Re: Apache2 MPM

Posted by Martin Ebert <ma...@wb-online.de>.
Joerg, liebe Liste,

> ./httpd -V | grep MPM
>   -D APACHE_MPM_DIR="server/mpm/prefork"

-D APACHE_MPM_DIR="server/mpm/worker"

Unnötig, zu erwähnen, dass es ein derartiges Verzeichnis
nirgendwo gibt. Und gleich gar nicht unter Server-Root.

  # apt-show-versions | grep worker
  apache2-mpm-worker: No available version

Naja, immerhin haben wir _irgendwas_. Irgendwo.

Ok, der andere Weg. An allen Optionen gleichzeitig schrauben.
Ich hasse sowas.

Aber immerhin:
 Restarting web server: Apache2WARNING: MaxClients (256) is not an integer
multiple
  of ThreadsPerChild (25), lowering MaxClients to 250
  for a maximum of 10 child processes,

Aha. "pthread MPM" ist es.

Aktuell also diese Einstellungen:
 <IfModule worker.c>
 StartServers         2
 MaxClients         256
 MinSpareThreads     25
 MaxSpareThreads    256
 ThreadsPerChild     64
 MaxRequestsPerChild 500
 </IfModule>

Aber schneller wird der Server davon auch nicht: Das Ding ist arschlahm.
Mal gucken: http://www.klug-suchen.de

Pro Seite werden bis zu sechs verschiedene kleine Perlscripts aufgerufen.
Ich bin nahe dran, den Apache-1.3.x wieder handgefeilt (da wußte ich noch,
was ich tue) reinzutun. Und den Content wieder in eine Ramdisk.

> Hast du Module ala mod_perl, mod_php? Wenn ja faellt hier das Worker MPM
> flach und es bleibt das gute alte Pre-Fork.

So ein Unfug kommt mir nicht auf die Kiste.

> Wenn es dynamische Seiten sind must du halt mal schauen wo da Zeit
> verbraten wird und ob ein Caching nicht eingebaut werden kann.

Dynamische Seiten im Wortsinn sind es nicht. Allerdings (s.o.) zieht
jede Seite einige Scripts nach sich, die via XBitHack kommen ... mit
allen Konsequenzen: Auch in Richtung Plattenstrecke.

Konkretes Problem:
Bin ich zu doof für sinnvolle Einstellungen?
Oder leiste ich mir irgendwo anders einen Engpass?

HINT: Prozessor ist es nicht. Load schießt kurzzeitig bei user auf 25%.
Ansonsten alles dunkelgrün.

Mit freundlichen Gruessen, Martin Ebert
-- 
http://www.klug-suchen.de
http://www.bahnsuche.de
http://www.ddr-suche.de
http://www.wb-online.de


--------------------------------------------------------------------------
                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
--------------------------------------------------------------------------


Re: Apache2 MPM

Posted by Joerg Behrens <be...@takenet.de>.
Martin Ebert schrieb:
> Liebe Liste,
> jetzt klemmt es bei mir.
> 
> Ich habe hier einen vorkonfigurierten Server; debian bei IPX.
> Der Apache2 wickelt seit Monaten ca 20 kleinere Domains als
> virtuell auf einer IP ab; alles problemlos.
> 
> Heute habe ich eine große Domain umziehen lassen. Muhaha.  :-(
> Es zieht den Server zu. Eindeutig apache2-Problem. (load stimmt).
> Real: Requests dauern mehrere Sekunden - aber keine Fehlermeldungen.
> 
> Nun wollte ich an max-servers etc rumspielen. Und sehe gerade,
> dass ich nichtmal verstehe, welches MPM-System bei mir läuft -
> läuft überhaupt eins?

Eins laeuft garantiert :).  Die Auswahl DES mpms wird beim kompilieren 
festgelegt und sollte im nachhinein mit

./httpd -V | grep MPM
  -D APACHE_MPM_DIR="server/mpm/prefork"

in Erfahrung gebracht werden

> Ich hätte ja mal theoretisch prefork.c, worker.c,  perchild.c.
> Die werden via IfModule abgefragt.

Da ich Apache2 Entwicklung nicht so verfolge.... wird das perchild MPM 
gepflegt? Was Features angeht war es als Erloesung des Rechte Problems 
angedacht... nur damals hatte der Maintainer das Handtuch geschmissen.

> Ob ich die praktisch habe: Mir unklar.
> 
> Das Aufrufprinzip ist mir dummerweise unklar: Ich hätte eines
> der Dinger unter ../mods-available erwartet. Da steht nur dummerweise
> keins.
> 
> Nächste Frage: Welches MPM wäre denn das sinnvollste für mich?
> (Single-Prozessor, 1GB RAM, Unix->debian, Spitzen: 5 req/sec)

Hast du Module ala mod_perl, mod_php? Wenn ja faellt hier das Worker MPM 
flach und es bleibt das gute alte Pre-Fork.

Wenn es dynamische Seiten sind must du halt mal schauen wo da Zeit 
verbraten wird und ob ein Caching nicht eingebaut werden kann.

Gruss
Joerg

--------------------------------------------------------------------------
                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
--------------------------------------------------------------------------