phpbar.de logo

Mailinglisten-Archive

[php] Hilfe bei Apache/Linux

[php] Hilfe bei Apache/Linux

Werner Stuerenburg ws_(at)_art-quarter.com
Mon, 16 Oct 2000 18:18:47 +0200


Hi Andreas,

ich muß doch noch mal nachfragen:

> ... wieviel Speicher hat die Kiste denn?
> Wenn ich die top-Ausgabe unten richtig deute, nur 128 MB?

Genau.
 
> > Die Einstellungen sind im Moment
> >       MinSpareServers 300
> ... das sind dann mind. 300 Apache-Prozesse, die jeweils
> knapp 5,5 MByte gross sind. 300 * 5,5 MByte macht dann ca.
> 1,5 Gigabyte ...

5,5 MB pro process? Ist das nicht ein bißchen happig? 

Fakt ist, daß die Sache viel besser läuft, seit ich die Werte wieder runter
habe. Aber das Problem ist nicht weg.

Ich wollte den Bedarf mit KKs Formel berechnen (aus
http://www.koehntopp.de/kris/kris/artikel/webtune/):

$ server=`grep -l httpd /proc/*/cmdline`
$ for i in $server; do cat `dirname $i`/statm; done

aber tcsh sagt syntax error, und ich kann den nicht finden. 

Er rechnet übrigens bei seinem Beispiel mit 100-150 KB pro Prozess. Bei 128
MB muß man also reichlich Luft haben. Er rechnet dann auch mit Hunderten,
die gleichzeitig laufen.

Nun habe ich beobachtet, daß Mem used bei etwa 60000 liegt, wenn ich den
httpd abschieße und neu starte, dann klettert der aber schnell auf 110000
rauf und bleibt da normalerweise ziemlich stabil.

Eben habe ich etwas entdeckt: ich hatte früher httpd Prozesse, die alle
Resourcen nahmen und nicht starben. So einen hatte ich jetzt, der lebte
schon 20 Minuten. Dabei habe ich httpd Timeout auf 60 gesetzt. 

Wenn ich 10 oder so davon hatte, war die Kiste früher tot (mit anderen
Einstellungen). Jetzt konnte ich CPU usage nicht sehen, weil ich top mit
Option q laufen lasse, um alles mitzukriegen. Kurz: ich habe ihn gekillt. 

Dann kamen mir Bedenken - vielleicht war das in Ordnung? Vom alten Host
weiß ich, daß regelmäßig User wahnsinnig lange drin waren, und habe
geschlossen, daß das wohl SE waren, die sich alles gezogen haben. Fireball
und Google z.B. habe Tausende von Seiten indiziert.

Kann man im Protokoll vielleicht auch nachvollziehen: wenn eine IP in
derselben Minute 5 Bestellformulare für Bücher aufzieht - das kann nicht
ein Besucher sein, und 5 mit derselben IP von AOL? 

Wenn ich nun einen Test mache und eine Seite aufziehe, die deutlich lange
braucht, bis der Browser alles geladen hat - die sehe ich in top praktisch
gar nicht, so schnell geht das. Genauso mit mysql - ist normalerweise nicht
zu sehen, obwohl jede Seite mehrfach die db befragt.

Ich habe auch schon 20 x refresh gemacht, ohne daß was passierte. Wenn der
aber mit den Prozessen hochgeht (normal 65-70 jetzt) und auf 80, 90 100
kommt, ist es zu spät, dann geht der in den swap und erholt sich nicht
mehr.

Im Moment hat er z.B. 65 Prozesse und 85000 used. Es ist nichts los, so
etwa 1 httpd pro Sekunde. 

Wie muß ich das verstehen: wenn ich eine Seite aufrufe, sind das ja mehrere
hits. Der macht also nicht für jeden hit/request einen Prozeß auf? Was
passiert, wenn eine SE saugt? Braucht die einen Haufen Prozesse oder macht
die das mit einem ab, der eben lange läuft?

Jetzt habe ich z.B. ziemliche Ruhe, vielleicht 1 httpd pro 2 Sekunden, 67
Prozesse und 124 K used - da ist der schon fast an der Grenze. Was ist da
los? Haben wir einfach zu wenig Memory? 

Jetzt ist er runter auf 61 Prozesse und 105000, jetzt bei 68 und 120000 -
ich beobachte das jetzt mit top normal (alle 5 sec) und sehe keinen
direkten Zusammenhang - dieselbe Anzahl Prozesse kann unterschiedlichen
Speicher benötigen.

Aber klar ist, daß der vermutlich so bei 75 Prozessen Probleme kriegt. Ich
habe keinen Prozeß mit Status D, entweder sind die Running oder Idle. Jetzt
baut der wieder ab, ist bei 66 / 110000. Load average ist übrigens
0,05/0,33/0,76

Hat jemand Erfahrung damit?

-- 

Mit freundlichem Gruss
Dr. Werner Stuerenburg

_________________________________________________
ISIS Verlag, Teut 3, D-32683 Barntrup-Alverdissen
Tel 0(049) 5224-997 407 · Fax 0(049) 5224-997 409
http://pferdezeitung.de    http://art-quarter.com


php::bar PHP Wiki   -   Listenarchive