Apache extrem langsam (grosse Last)

Apache, Lighttpd, nginx, Cherokee
rstrub
Posts: 4
Joined: 2006-09-04 14:45

Apache extrem langsam (grosse Last)

Post by rstrub »

Hallo zusammen

Seit einiger Zeit wird die Last auf dem Web-Server je länger je weniger erträglich. Der Traffic nimmt langsam aber sicher zu.

Gibt es eine Möglichkeit, den Server zu optimieren oder muss ich mir einen zweiten Rechner zulegen?

ein paar Eckdaten:

Code: Select all

Kernel Version          2.6.8-11-amd64-k8
Distro Name             Debian 3.1
Auslastung              129.59   124.59   115.14
RAM                     2GB
Monatlicher Traffic     300 - 400 GB
HDD                     160 GB (35% belegt)
SWAP                    2GB
Prefwork.c in der apache2.conf

Code: Select all

<IfModule prefork.c>
StartServers           5
MinSpareServers        5
MaxSpareServers      100
ServerLimit          256
MaxClients           256
MaxRequestsPerChild    0
</IfModule>
Server version: Apache/2.0.54
Server built: Jul 28 2006 18:24:57

PHP 4.3.10-16 (cli) (built: Aug 26 2005 06:59:49)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies

Server version 4.1.11-Debian_4sarge5-log
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 15 hours 36 min 1 sec
Threads: 257 Questions: 632637 Slow queries: 1110 Opens: 66068 Flush tables: 1 Open tables: 256 Queries per second avg: 11.265


Weitere daten geb ich gerne bekannt ;) nur nachfragen.

Wenn jemand etwas sieht, oder ne Idee hat, wär ich für jede Anregung dankbar.
Gruss R. Strub

*edit* pstree noch:

Code: Select all

init─┬─apache2─┬─226*[apache2]
     │         └─apache2───sendmail───postdrop
     ├─atd
     ├─courierlogger───authdaemond.mys───5*[authdaemond.mys]
     ├─4*[courierlogger]
     ├─courierlogger───sqwebmaild
     ├─couriertcpd───imapd
     ├─3*[couriertcpd]
     ├─cron─┬─cron─┬─sendmail───postdrop
     │      │      └─sh───munin-cron───munin-graph
     │      └─cron───sh───munin-cron───munin-update───munin+
     ├─events/0─┬─aio/0
     │          ├─ata/0
     │          ├─kacpid
     │          ├─kblockd/0
     │          ├─khelper
     │          ├─2*[pdflush]
     │          ├─xfsdatad/0
     │          └─xfslogd/0
     ├─famd
     ├─6*[getty]
     ├─inetd
     ├─khubd
     ├─kjournald
     ├─klogd
     ├─kseriod
     ├─ksoftirqd/0
     ├─kswapd0
     ├─master─┬─cleanup
     │        ├─pickup
     │        ├─proxymap
     │        ├─qmgr
     │        └─93*[smtpd]
     ├─memcached
     ├─miniserv.pl───miniserv.pl
     ├─munin-node───munin-node
     ├─mysqld_safe───mysqld
     ├─portmap
     ├─pure-ftpd
     ├─scsi_eh_0
     ├─scsi_eh_1
     ├─5*[sqwebmaild]
     ├─sshd───sshd───sshd───bash───bash───pstree
     ├─syslogd
     └─xfsbufd
rootsvr
Posts: 538
Joined: 2005-09-02 11:12

Re: Apache extrem langsam (grosse Last)

Post by rootsvr »

slow query log anschalten und querys optimieren?

Ist das mod_php oder (f)cgi?

Load von 126 ist natürlich nicht nett. was sagt Top zu wa?

Was genau läuft da? Forum? Gameserver? ...?
thorsten
Posts: 561
Joined: 2003-02-01 13:14
Location: Fuldatal

Re: Apache extrem langsam (grosse Last)

Post by thorsten »

Schmeiß den famd runter, wenn du ihn nicht nutzt.
Lies dir die sticky Thread von Isotopp durch: http://www.rootforum.org/forum/viewforum.php?f=23
oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Apache extrem langsam (grosse Last)

Post by oxygen »

Thorsten: famd (oder besser, wie bei aktuellen Distributionen üblich: gamin) wird von courier benötigt.

ein top wäre interessant, um zu sehen, was überhaupt die Last verursacht.

Zu aller erst muss natürlich gesagt werden, dass die Webapplikationen soweit wie möglich optimiert werden sollten, also optimale und wenig mysql querys.

Weitere Ansätze zu Optimierung (in Stichworten):
PHP (PHP5.1 (deutlicher performater), FastCGI, Opcode Caches wie APC...)
Apache (worker o. leader statt prefork, kurze Timeouts...)
MySQL (größere buffer, Query Cache)
Reserve Proxy
lighttpd statt Apache
Außerdem scheint dein postfix viel zu tun zu haben, da fällt mir aber spontan nichts zu ein.

btw: webmin hat auf einem RootServer nichts zu suchen, da es in der Vergangenheit häufig durch fatale Sicherheitslücken aufgefallen ist.
thorsten
Posts: 561
Joined: 2003-02-01 13:14
Location: Fuldatal

Re: Apache extrem langsam (grosse Last)

Post by thorsten »

oxygen wrote:Thorsten: famd (oder besser, wie bei aktuellen Distributionen üblich: gamin) wird von courier benötigt.
Ah, danke für die Info, das war mir nicht bewußt.
Ich habe bei meiner courier-Installation sowohl famd als auch den portmapper deaktiviert. Ich werde mal nachforschen was das für Nachteile bringen kann.
rstrub
Posts: 4
Joined: 2006-09-04 14:45

Re: Apache extrem langsam (grosse Last)

Post by rstrub »

also ... es läuft mod_php und darauf laufen etwa 450 wbb-lite-foren. Optimierung wohl fast zwecklos :/

nen top-auszug:

Code: Select all

top - 23:20:55 up 28 days,  3:06,  1 user,  load average: 160.48, 159.79, 159.37
Tasks: 440 total,   7 running, 430 sleeping,   0 stopped,   3 zombie
Cpu(s): 94.7% us,  2.0% sy,  3.3% ni,  0.0% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:   2041640k total,  2011800k used,    29840k free,    60320k buffers
Swap:  2096440k total,        4k used,  2096436k free,   258384k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
28581 munin     33  10 33172 8440  26m R  2.0  0.4   0:00.31 munin-html
28584 munin     30  10 36152 8680  29m R  1.7  0.4   0:00.15 munin-graph
28611 root      16   0  9660 1528 9164 R  1.0  0.1   0:00.07 top
    1 root      16   0  2572  480 2412 S  0.0  0.0   0:03.71 init
    2 root      34  19     0    0    0 R  0.0  0.0   0:00.77 ksoftirqd/0
    3 root       5 -10     0    0    0 S  0.0  0.0   0:00.04 events/0
    4 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 khelper
    5 root      14 -10     0    0    0 S  0.0  0.0   0:00.00 kacpid
   29 root       5 -10     0    0    0 S  0.0  0.0   3:29.50 kblockd/0
   30 root      15   0     0    0    0 S  0.0  0.0   0:00.00 khubd
   45 root      11 -10     0    0    0 S  0.0  0.0   0:00.00 aio/0
   44 root      15   0     0    0    0 S  0.0  0.0   3:28.14 kswapd0
  180 root      25   0     0    0    0 S  0.0  0.0   0:00.00 kseriod
  198 root       6 -10     0    0    0 S  0.0  0.0   0:00.00 xfslogd/0
  199 root       6 -10     0    0    0 S  0.0  0.0   0:00.00 xfsdatad/0
  200 root      15   0     0    0    0 S  0.0  0.0   0:01.99 xfsbufd
  204 root       6 -10     0    0    0 S  0.0  0.0   0:00.00 ata/0
  205 root      25   0     0    0    0 S  0.0  0.0   0:00.00 scsi_eh_0
  206 root      25   0     0    0    0 S  0.0  0.0   0:00.00 scsi_eh_1
  310 root      15   0     0    0    0 S  0.0  0.0   5:44.85 kjournald
 1382 daemon    16   0  4732  572 4552 S  0.0  0.0   0:00.19 portmap
 1730 root      16   0  3648  680 3472 S  0.0  0.0   1:14.62 syslogd
 1733 root      16   0  3832 1920 2400 S  0.0  0.1   0:00.07 klogd
 1742 root      16   0  3788  496 3432 S  0.0  0.0   0:00.00 courierlogger
 1743 root      16   0 12112  736  11m S  0.0  0.0   0:00.01 authdaemond.mys
 1749 root      16   0  5944  596 5588 S  0.0  0.0   0:00.79 couriertcpd
 1752 root      16   0 13176  952  12m S  0.0  0.0   0:00.52 authdaemond.mys
 1753 root      16   0 13176  952  12m S  0.0  0.0   0:00.63 authdaemond.mys
 1754 root      16   0 13176  952  12m S  0.0  0.0   0:00.60 authdaemond.mys
 1755 root      16   0 13176  952  12m S  0.0  0.0   0:00.57 authdaemond.mys
 1756 root      16   0 13176  952  12m S  0.0  0.0   0:00.63 authdaemond.mys
 1760 root      16   0  3788  484 3432 S  0.0  0.0   0:00.46 courierlogger
 1779 root      22   0  5944  592 5588 S  0.0  0.0   0:00.00 couriertcpd
 1781 root      22   0  3656  348 3432 S  0.0  0.0   0:00.00 courierlogger
 1792 root      16   0  5944  596 5588 S  0.0  0.0   0:01.60 couriertcpd
 1794 root      15   0  3788  484 3432 S  0.0  0.0   0:01.23 courierlogger
 1805 root      18   0  5944  592 5588 S  0.0  0.0   0:00.00 couriertcpd
 1807 root      18   0  3656  348 3432 S  0.0  0.0   0:00.00 courierlogger
 1812 root      21   0  2560  444 2400 S  0.0  0.0   0:00.00 inetd
 1816 root      16   0 16128 8904 7752 S  0.0  0.4   0:01.02 memcached
 2016 root      18   0  3784  424 3432 S  0.0  0.0   0:00.00 courierlogger
 2017 root      16   0 11984 1012  11m S  0.0  0.0   0:00.03 sqwebmaild
 2020 root      16   0 11984 1012  11m S  0.0  0.0   0:00.00 sqwebmaild
 2022 root      16   0 11984 1016  11m S  0.0  0.0   0:00.00 sqwebmaild
 2024 root      16   0 11984 1016  11m S  0.0  0.0   0:00.00 sqwebmaild
 2035 root      16   0 18208 1824  17m S  0.0  0.1   0:11.88 sshd
 2044 root      16   0 11552 1376  11m S  0.0  0.1   0:01.10 famd
 2057 daemon    16   0  6856  692 6680 S  0.0  0.0   0:00.00 atd
 2062 root      16   0  8992  912 8792 S  0.0  0.0   0:02.01 cron
 2072 root      16   0 35548 9200  28m S  0.0  0.5   0:03.47 miniserv.pl
 2125 root      16   0 25864 7632  19m S  0.0  0.4   0:12.59 munin-node
 2133 root      16   0  2568  496 2392 S  0.0  0.0   0:00.02 getty
Irgend wie bekam ich nicht mehr drauf :/
rstrub
Posts: 4
Joined: 2006-09-04 14:45

Re: Apache extrem langsam (grosse Last)

Post by rstrub »

die Lage hat sich halbwegs entschärft ...

nach einem kompletten beenden von apache (erst via inet.d, anschliessend mit killall und zuletzt mit kill 9) musste ich feststellen, dass die la noch immer über 100 lag.

nach einem beenden der DB (mysql) kam diese auf 0.3 runter, was doch schon wesentlich angenehmer ist.

nun fiel mir ein, dass ich vor kurzem die hier vorgeschlagene my.cnf eingerichtet habe ...

kurzerhand umbenannt und die alte wieder vom BU eingespielt ... und der server läuft wieder mit ner la von 1.5-1.9 und 10-30% CPU-Last.

Weiss jemand, was an der Konfig nicht gut ist?
r. u. serious
Posts: 88
Joined: 2006-06-10 14:17

Re: Apache extrem langsam (grosse Last)

Post by r. u. serious »

apache2─┬─226*[apache2]
Du hast insgesamt 2 GB RAM. Wenn ein Apache-Prozess schätzungsweise 10 MB gehabt hätte (was wohl recht konservativ geschätzt ist), dann wären 226 x 10 MB schon mehr als 2GB. Ich denke also, der Server ist wegen swappen in die Bedrouille geraten. Du solltest also einfach in deiner Config sicherstellen, dass eben das nicht mehr passiert - die Apache-Prozesse entschlacken, falls nicht schon geschehen, und die Maximalwerte entsprechend anpassen (ggf. Keepalives runtersetzen).

(Und wie vorgeschlagen lighttpd+fcgi zu nutzen, wäre eine sehr gute Möglichkeit den Speicherverbrauch dramatisch du reduzieren).
rootsvr
Posts: 538
Joined: 2005-09-02 11:12

Re: Apache extrem langsam (grosse Last)

Post by rootsvr »

Wobei es bei 450 wbb Foren egal ist ob man fcgi oder mod_php hat..

Bei fcgi hat man mindestens eine Instanz pro Domain (Forum) und dann wird es auch bald knapp weil eine normalerweise nicht reicht.

Ich würde sagen bei 450 Foren ist es schon Zeit nen neuen Server zu holen..
r. u. serious
Posts: 88
Joined: 2006-06-10 14:17

Re: Apache extrem langsam (grosse Last)

Post by r. u. serious »

rootsvr wrote:Bei fcgi hat man mindestens eine Instanz pro Domain (Forum) und dann wird es auch bald knapp weil eine normalerweise nicht reicht.
Muß ja nicht sein, wenn die Leute keinen direkten Zugriff auf die Dateien auf dem Server haben. Und wenn bisher eh alle mit demselben User (www) liefen...

Falls die Zugriffszahlen sich stark unterscheiden bei den Foren, könnte man natürlich auch für die am stärksten genutzten 50 Foren fcgi einrichten, und für den Rest (falls es nur wenige Besucher sind) nur CGI.
rootsvr
Posts: 538
Joined: 2005-09-02 11:12

Re: Apache extrem langsam (grosse Last)

Post by rootsvr »

Stimmt sorry.. ging von fcgi/suexec nach howto aus..
rstrub
Posts: 4
Joined: 2006-09-04 14:45

Re: Apache extrem langsam (grosse Last)

Post by rstrub »

Also bei den Foren handelt es sich um reines Hosting ... Die user haben keinerlei Zugang zu den Danten oder zur DB.

Es wurden einige anpassungen gemacht, um diese zentral zu verwalten, jedoch nicht das System umgeschrieben.

Zurzeit läuft noch ein anderes Projekt auf dem Rechner ... dieses kommt nun erstmal runter auf einen andern Server, dann schau ich mal weiter, was ich noch so unternehmen kann ;) Will ja alles bezahlt sein ^^

Danke euch mal allen für die Hilfe.