httpd status / performance auswertung

Apache, Lighttpd, nginx, Cherokee
globestern
Posts: 69
Joined: 2005-04-20 11:34
 

httpd status / performance auswertung

Post by globestern »

hi

ich habe folgendes problem: mein webserver ist zur rushhour ziemlich ausgelastet.. jetzt weiss ich aber nicht, ob dies "normale" besucher sind, oder ob da jemand versucht mich zu flooden etc. (load: zwischen 2 und 60 memory: Mem: 2073804k total, 1540676k used, 533128k free, 202820k buffers
Swap: 2096440k total, 0k used, 2096440k free, 847060k cache)

die mem werte sind also i.O. - allerdings läuft der cpu sehr am anschlag - das seltsame ist auch, dass er zeitweise bei normal bei 2 läuft und dann plötzlich auf 60 etc. explodiert

ein
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
gibt mir in etwa so was aus:
20 62.214.226.188
20 89.246.19.230
20 91.176.100.75
20 91.89.109.86
22 78.54.137.100
22 87.166.84.211
22 90.135.91.142
22 91.67.173.204
23 77.182.125.222
23 80.131.226.85
24 84.63.115.177
24 85.182.12.181
24 88.68.210.199
26 80.123.16.213
28 62.143.40.68
28 77.184.5.5
28 85.16.84.42
29 84.130.228.157
29 88.76.141.17
30 134.60.102.68
39 217.226.136.240
43 84.59.245.244
47 212.183.120.16
53 77.185.131.229
55 79.199.84.61
56 84.57.33.220
56 85.177.115.8
60 217.233.214.229
70 85.216.90.214
70 87.123.228.174
71 84.130.202.157
71 87.150.79.13
71 92.225.25.13
83 87.177.231.224
86 91.20.90.38
87 85.176.165.57
111 88.70.14.245
126 84.59.31.16
50-126 connections empfinde ich als sehr viel.. kann mir daher nicht vorstellen, dass dies normale user sind?

ein normaler netstat gibt mir sehr sehr viele verbindungen mit "TIME_WAIT" aus. SYN_RECV sollte im normalen bereich liegen..

noch zu meiner server config:

cpu: Intel(R) Pentium(R) D CPU 3.00GHz
ram: 2gb
apache: worker 2.0.63

ich möchte das problem gerne etwas genauer lokalisieren.. hat da jemand ideen? slow-qry-log ist aktiviert und spuckt momentan bei 5sek nichts aus..

mfg
grollicus
Posts: 20
Joined: 2006-06-23 20:33
 

Re: httpd status / performance auswertung

Post by grollicus »

Wenn du vermutest dass dein Server angegriffen wird, schau doch mal im access-log nach was die Clients für Seiten aufrufen.
Welcher Prozess verursacht die CPU-Last?
Was für Content stellt der Apache zur Verfügung? Statischen? Dynamischen?

Die vielen dynamischen TIME_WAITs dürften mit Keepalive zusammen hängen.

G.
globestern
Posts: 69
Joined: 2005-04-20 11:34
 

Re: httpd status / performance auswertung

Post by globestern »

hi

erstma danke für deine antwort.

also der access_log sieht total normal aus..
die cpu last ist von den httpd prozessen
apache stellt hauptsächlich dynamischen content zur verfügung (php cache ist aktiviert..)
keep alive habe ich aber auf off gesetzt in der httpd.conf

mfg
oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim
 

Re: httpd status / performance auswertung

Post by oxygen »

Keepalive sollte schon aktiviert sein. Allerdings sollten Timeout und KeepAliveTimeout niedrig eingestellt werden. Apache selbst produziert in der Regel auch nicht viel CPU Belastung. Meist ist dies der MySQL Server, schau da vielleicht nochmal nach.
globestern
Posts: 69
Joined: 2005-04-20 11:34
 

Re: httpd status / performance auswertung

Post by globestern »

oxygen wrote:Keepalive sollte schon aktiviert sein. Allerdings sollten Timeout und KeepAliveTimeout niedrig eingestellt werden. Apache selbst produziert in der Regel auch nicht viel CPU Belastung. Meist ist dies der MySQL Server, schau da vielleicht nochmal nach.
ich werde mal die settings mit einem tiefen keep alive überprüfen und dann wieder berichten..
es ist natürlich schon zu erwähnen, dass die seite relativ stark besucht wird (ca. 20-25k user im tag)
allerdings sollte die oben erwähnte hardware das locker packen
globestern
Posts: 69
Joined: 2005-04-20 11:34
 

Re: httpd status / performance auswertung

Post by globestern »

kurz noch ein kleiner zwischenbericht.. inzwischen wurde die mysql etwas optimiert (http://www.rootforum.org/forum/viewtopi ... 04&t=49228)

trotzdem ist der load noch ziemlich hoch - dieser ist auf den apachen zurückzuführen:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1768 apache 16 0 262m 32m 2704 S 20 1.6 0:22.33 httpd
1605 apache 17 0 258m 28m 3140 S 15 1.4 1:00.13 httpd
7664 mysql 15 0 603m 230m 4620 S 3 11.5 1039:53 mysqld
allerdings sind die cpu werte sehr schwankend - der httpd ist aber generell immer am höchsten (mysql tief)

sollte also am apachen liegen.. hier noch meine httpd.conf

Code: Select all

Timeout 20
KeepAlive On
MaxKeepAliveRequests 150
KeepAliveTimeout 13

<IfModule worker.c>
StartServers         5
MaxClients         375
MinSpareThreads     15
MaxSpareThreads     20
ThreadsPerChild     25
HostnameLookups Off
</IfModule>