httpd-users-de mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Joerg Behrens" <behr...@takenet.de>
Subject Re: Verständnisfrage zu Kindprozessen
Date Wed, 11 Sep 2002 12:17:21 GMT
----- Original Message -----
From: "Jochen Metzger" <j.metzger@steptown.com>
To: <users-de@httpd.apache.org>
Sent: Wednesday, September 11, 2002 1:12 PM
Subject: Re: Verständnisfrage zu Kindprozessen


> Hi Joerg,
> > > Timeout 300
> > > KeepAlive On
> > > MaxKeepAliveRequests 100
> > > KeepAliveTimeout 15
> > > MinSpareServers 5
> > > MaxSpareServers 5
> > > StartServers 5
> > > MaxClients 150
> > > MaxRequestsPerChild 0
> >
> > 0 ? Null ???? Ja sag mal bist du wahnsinig. Das heist das dein Child bis
> zum
> > Sanktnimmerleinstag Anfragen beantworten muss. Sag ihm dringend das er
das
> > nur bis zur Rente machen soll. :)
> > Wie lassen 'nur' 150 Anfragen zu und danach wird der Child automatisch
> > beendet und ein neuer geforkt. Prima sache wenn man mit MemLeaks
zukämpfen
>
> Und habt Ihr KeepAlive trotzdem on?

Ja, weil es statische Elemente wie *.js, *.css und Bildformate aller art
gibt wo es dann ohne weiteres moeglich ist sofern der Client das moechte.
Wer das auch mit PHP Scripten machen moechte muss die gr. von Hander mitteln
und den Header('Content-lenght') zu Fuss setzen oder aber mod_gzip benutzen.

Unsere Probleme begannen als wir Content an Tonline abgegeben haben und
diese dann anfingen von ihrer Startseite und den Umweg über Frames auf
unsere Kiste zuverlinken. Da haetten wir in hoechst Zeiten 350 Childs
gebraucht um das abzuarbeiten. Hauptproblem war hier das die dynamischen
Seiten (php) zulange brauchten und so sich so das ganze uebelst
hochschaukelte.

Massnahmen waren den Apache zuentlasten in dem wir Bilder,CSS,JS ueber den
thttpd (geniales Teil :) auslieferten der auf einer 2 IP ueber Port 80
konfiguriert war. Desweiteren wurden 'Einschlagsseiten' so umgestellt das
diese ihren Inhalt cachten um somit DBanfragen, Templategenierung
zuvermeiden. Aber immer noch genug PHP drin :) Hinzu kam der Einsatzt vom
PHPaccelerator ,welcher aber bei uns Nebenwirkungen zeigt(*). Nun kommen wir
mit 100 Childs aus und man kann das Wochende durchschlafen :)

> Wie groß ist bei Euch ein Bearbeiterprozeß?

So eine Aussage hat keinen Wert.
1. haengt es von der Anzahl der einzelnen Apache Module bzw. PHP(und seine
Extensions) ab
2. OS und Compiler spezfische Optimierungen
3. Beim Einsatz von Perl,PHP,JSP whatever... der Speicherverbauch des
Scriptes selber

28527 nobody     9   0  9656 7456  5844 S       0  0.0  1.4   0:02 httpd
    361 nobody     9   0  6516 6328  6044 S       0  0.0  1.2  87:19 thttpd

Auszug aus dem access.log
212.185.220.*** 549081 - - [11/Sep/2002:13:50:32 +0200]

549KB werden hier durch das Script verbraten. Und das ist wenig und in
Hinblick auf (*) wirklich nichts. Beim Arbeiten mit Oracle sind Childs mit
20MB die Anfangsgroesse :)

> Habt Ihr auch mit  MemLeaks zu kämpfen.....

Ich kenne einzelne PHP Extensions bzw. die Libs auf denen sie beruhen.
Recode war mal so ein Fall wo sie die Childgroesse sich mit jedem Request
verdoppelte.

Ob wir kleinere Memleaks haben weis ich nicht. Wie geschrieben beantwortet
bei uns ein Child max. 150 Anfragen und geht danach in den Ruhestand.

Wie haben seit an 1 1/2 Jahren und somit ueber viele Apache/SSL/PHP
Versionen hinweg das Problem mit den <defunc> einzelner httpd Prozesse.
Wobei hier allerdings keine negativen Auswirkungen zusehen sind.


(*) Der PHPaccelerator foerdert ein PHP problem zutage wo in Abhaengingkeit
von Configparametern und Laufzeit bzw. Anfragen der Speicherverbrauch eines
Sriptes immer groesser wird. Auf diese weise haben wir die 8MB default
Grenze von PHP ueberschritten was entsprechend dafuer sorgte das anstelle
der Seite nun Fehlermeldungen angezeigt wurden. Aber das Problem war schon
vorher bekannt und wir entsprechend vorgewarnt.

So, das alles wird dir nun bestimmt nicht weiterhelfen zeigt dir aber das du
nicht der einzige mit Problemen bist :)

An deiner Stelle wuerde ich mir einen aktuellen 1.3.x Apache bauen mit nur
den Modulen die du brauchst. Fuer PHP und seine vielen Extensions gilt das
gleiche. Solltes du einzelne Extensions von php nur in wenigen Seiten
brauchen...dann baue diese als name.so und lade sie gezielt in einzelnen
Scripten.

Gruss
Joerg Behrens

--
TakeNet GmbH                        Mobil: 0171/60 57 963
D-97080 Wuerzburg                 Tel: +49 931 903-2243
Alfred-Nobel-Straße 20            Fax: +49 931 903-3025


Mime
View raw message