Extreme Speicherbelastung -> Server down.

Apache, Lighttpd, nginx, Cherokee
Anonymous

Extreme Speicherbelastung -> Server down.

Post by Anonymous » 2007-11-23 18:24

Moin,

ich habe einen Root bei S4Y mit 1 GB Arbeitsspeicher.
Auf diesem Server betreibe ich einen Paidmailer. Die Seite hat etwas über 10.000 Besucher im Durchschnitt täglich, wodurch die meisten durch eine Bettelrally auf die Seite kommen.

Vorher lag die Seite bei zwei anderen Hostern, auf einem Shared-Server, die auch nur 1 GB Ram hatten.
Auf dem System sind Debian4, APache2 und Confixx 3.3.1 Pro.

Nunja, bis vorgestern lief der Server Problemlos. Dann habe ich die Seite allerdings auf den Server geladen und Schwupps traten erste Probleme auf. Der Server ist grundsätzlich nachts und morgends down und ab und zu am Tag auch. Nur ein Neustart hilft ihm wieder auf die Beine.

Daran verwunderlich ist aber, dass die Speicherauslastung eigentlich immer so bei 60% liegt (laut phpsysinfo).
Ab und zu schnellt diese aber auf 80% hoch - und manchmal auch auf 99%. Und das immer dann, bevor der Server down geht.
In den Logs tauchen dann owas auf:

Code: Select all

[Thu Nov 22 01:57:31 2007] [error] (12)Cannot allocate memory: fork: Unable to fork new process

Und dann bleibt er down bis ich ihn neustarten lasse.

Code: Select all

top - 18:22:40 up  2:59,  1 user,  load average: 0.40, 1.30, 1.30
Tasks: 172 total,   1 running, 170 sleeping,   0 stopped,   1 zombie
Cpu(s):  2.0%us,  0.5%sy,  0.0%ni, 97.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1011496k total,   663980k used,   347516k free,    79288k buffers
Swap:   999992k total,       24k used,   999968k free,   229788k cached


28856 root      15   0 10732 1460  960 R   33  0.1   0:00.89 top
    1 root      18   0  6120  676  560 S    0  0.1   0:01.79 init
    2 root      RT   0     0    0    0 S    0  0.0   0:00.06 migration/0
    3 root      34  19     0    0    0 S    0  0.0   0:00.00 ksoftirqd/0
    4 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/0
    5 root      RT   0     0    0    0 S    0  0.0   0:00.06 migration/1
    6 root      34  19     0    0    0 S    0  0.0   0:00.00 ksoftirqd/1
    7 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/1
    8 root      10  -5     0    0    0 S    0  0.0   0:00.00 events/0
    9 root      10  -5     0    0    0 S    0  0.0   0:00.00 events/1
   10 root      10  -5     0    0    0 S    0  0.0   0:00.01 khelper
   11 root      10  -5     0    0    0 S    0  0.0   0:00.00 kthread
   16 root      10  -5     0    0    0 S    0  0.0   0:00.04 kblockd/0
   17 root      10  -5     0    0    0 S    0  0.0   0:00.06 kblockd/1
   20 root      10  -5     0    0    0 S    0  0.0   0:00.00 khubd
   22 root      10  -5     0    0    0 S    0  0.0   0:00.00 kseriod
   97 root      21   0     0    0    0 S    0  0.0   0:00.00 pdflush
   98 root      15   0     0    0    0 S    0  0.0   0:00.00 pdflush
   99 root      10  -5     0    0    0 S    0  0.0   0:00.40 kswapd0
  100 root      16  -5     0    0    0 S    0  0.0   0:00.00 aio/0
  101 root      16  -5     0    0    0 S    0  0.0   0:00.00 aio/1
  335 root      19  -5     0    0    0 S    0  0.0   0:00.00 ata/0
  336 root      20  -5     0    0    0 S    0  0.0   0:00.00 ata/1
  337 root      20  -5     0    0    0 S    0  0.0   0:00.00 ata_aux
  379 root      16  -5     0    0    0 S    0  0.0   0:00.00 scsi_eh_0
  380 root      13  -5     0    0    0 S    0  0.0   0:00.00 scsi_eh_1
  927 root      10  -5     0    0    0 S    0  0.0   0:03.35 kjournald
 1105 root      19  -4 10592  696  328 S    0  0.1   0:00.06 udevd
 1384 root      13  -5     0    0    0 S    0  0.0   0:00.00 kpsmoused
 1537 root      16  -5     0    0    0 S    0  0.0   0:00.00 kmirrord
 1790 root      15   0  3728  596  460 S    0  0.1   0:02.39 syslogd
 1796 root      18   0  2656  392  312 S    0  0.0   0:00.00 klogd
 1842 amavis    18   0 78564  34m 2276 S    0  3.5   0:00.02 amavisd-new
 1865 amavis    18   0 79548  33m 1824 S    0  3.4   0:00.00 amavisd-new
 1868 amavis    20   0 79548  33m 1808 S    0  3.4   0:00.00 amavisd-new
 1869 root      22   0 10112 1524 1196 S    0  0.2   0:00.00 mysqld_safe
 1906 mysql     15   0  158m  40m 5672 S    0  4.1  22:45.43 mysqld
 1907 root      18   0  2640  536  452 S    0  0.1   0:00.00 logger
 1965 root      15   0 72244  40m 2272 S    0  4.1   0:00.86 spamd
 1984 clamav    18   0 60672  45m  888 S    0  4.6   0:01.80 clamd
 2071 clamav    15   0 14356  864  604 S    0  0.1   0:00.00 freshclam
 2079 root      22   0  3880  420  324 S    0  0.0   0:00.00 courierlogger
 2080 root      18   0 10168  636  500 S    0  0.1   0:00.00 authdaemond
 2087 root      18   0 10168  252  116 S    0  0.0   0:00.00 authdaemond
 2088 root      18   0 10168  252  116 S    0  0.0   0:00.00 authdaemond
 2089 root      18   0 10168  252  116 S    0  0.0   0:00.00 authdaemond
 2090 root      18   0 10168  252  116 S    0  0.0   0:00.00 authdaemond
 2091 root      18   0 10168  252  116 S    0  0.0   0:00.00 authdaemond
 2094 root      21   0  3880  348  260 S    0  0.0   0:00.00 courierlogger
 2095 root      22   0  6028  608  500 S    0  0.1   0:00.00 couriertcpd
 2108 root      22   0  3880  348  260 S    0  0.0   0:00.00 courierlogger
 2109 root      18   0  6024  608  500 S    0  0.1   0:00.00 couriertcpd
 2117 root      15   0 80156  44m 3048 S    0  4.5   0:04.80 spamd

Das kommt bei top.
Da ich mich nicht so mit Linux auskenne kann ich dazu nicht wirklich viel sagen. Ich weiß nur, dass die Seite auf anderen Servern, die schwächer waren, einwandfrei lief. Bei S4U meinte der Support, dass ich mehr Ram brauche.

Danke schonmal für eure Hilfe!
gruß
Tobi

tomek
Posts: 243
Joined: 2003-08-05 09:44
Location: Paderborn

Re: Extreme Speicherbelastung -> Server down.

Post by tomek » 2007-11-24 08:26

Ich habe seit Debian Etch das gleiche Problem auf 2 eigenen Internetservern (Apache2, PHP5). Ein oder mehrere Apache-Childs flippen plötzlich aus und ziehen sich Hunderte MByte an Speicher, bis Swap voll ist. Dann steigt die Load in unbekannte Höhen und irgendwann fängt der Kernel an die Prozesse zu töten. Ich habe schon alles mögliche versucht, Module deaktivieren, Prefork und KeepAlive-Einstellungen ändern, aber hat alles nichts gebracht.

Das sieht im Kernel-Log dann so aus:

Code: Select all


oom-killer: gfp_mask=0xd0, order=0

Call Trace:
 [<ffffffff802a6612>] out_of_memory+0x33/0x216
 [<ffffffff8020e00e>] __alloc_pages+0x220/0x2a9
 [<ffffffff80246b97>] try_to_del_timer_sync+0x51/0x5a
 [<ffffffff80239c86>] __get_free_pages+0xe/0x33
 [<ffffffff8021c771>] __pollwait+0x58/0xe0
 [<ffffffff8022e170>] unix_poll+0x21/0xa4
 [<ffffffff8020f888>] do_select+0x282/0x45c
 [<ffffffff8021c719>] __pollwait+0x0/0xe0
 [<ffffffff8027c917>] default_wake_function+0x0/0xe
 [<ffffffff8027c917>] default_wake_function+0x0/0xe
 [<ffffffff8027c917>] default_wake_function+0x0/0xe
 [<ffffffff8027c917>] default_wake_function+0x0/0xe
 [<ffffffff8027c917>] default_wake_function+0x0/0xe
 [<ffffffff8027c917>] default_wake_function+0x0/0xe
 [<ffffffff8027c917>] default_wake_function+0x0/0xe
 [<ffffffff8027c917>] default_wake_function+0x0/0xe
 [<ffffffff8027c917>] default_wake_function+0x0/0xe
 [<ffffffff8027c917>] default_wake_function+0x0/0xe
 [<ffffffff802146fc>] sys_select+0x26d/0x3d4
 [<ffffffff80220100>] __up_read+0x13/0x8a
 [<ffffffff8020a6d0>] do_page_fault+0x3d1/0x706
 [<ffffffff80231467>] do_setitimer+0x16d/0x4bf
 [<ffffffff8025c2be>] thread_return+0x0/0xe7
 [<ffffffff80257b56>] system_call+0x7e/0x83

Mem-info:
Node 0 DMA per-cpu:
cpu 0 hot: high 0, batch 1 used:0
cpu 0 cold: high 0, batch 1 used:0
Node 0 DMA32 per-cpu:
cpu 0 hot: high 186, batch 31 used:12
cpu 0 cold: high 62, batch 15 used:56
Node 0 Normal per-cpu: empty
Node 0 HighMem per-cpu: empty
Free pages:        5820kB (0kB HighMem)
Active:162415 inactive:81904 dirty:0 writeback:0 unstable:0 free:1455 slab:4986 mapped:1073 pagetables:3432
Node 0 DMA free:1812kB min:48kB low:60kB high:72kB active:0kB inactive:0kB present:12228kB pages_scanned:0 all_unreclaimable? yes
lowmem_reserve[]: 0 994 994 994
Node 0 DMA32 free:4008kB min:4008kB low:5008kB high:6012kB active:649660kB inactive:327616kB present:1018020kB pages_scanned:124480 all_unreclaimable? no
lowmem_reserve[]: 0 0 0 0
Node 0 Normal free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0 0
Node 0 HighMem free:0kB min:128kB low:128kB high:128kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0 0
Node 0 DMA: 5*4kB 4*8kB 4*16kB 3*32kB 3*64kB 3*128kB 2*256kB 1*512kB 0*1024kB 0*2048kB 0*4096kB = 1812kB
Node 0 DMA32: 6*4kB 6*8kB 32*16kB 1*32kB 3*64kB 1*128kB 0*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 4008kB
Node 0 Normal: empty
Node 0 HighMem: empty
Swap cache: add 341001, delete 340731, find 27559/35170, race 0+0
Free swap  = 0kB
Total swap = 1036088kB
Free swap:            0kB
262128 pages of RAM
4930 reserved pages
31524 pages shared
270 pages swap cached
Out of Memory: Kill process 31742 (apache2) score 70928 and children.
Out of memory: Killed process 31742 (apache2).


Vor einigen Wochen habe ich mir dann Backports aus sid gebaut mit Apache 2.2.6 und PHP 5.2.4. Das Problem tritt nun wesentlich seltener auf, aber es passiert weiterhin.

Folgende Einträge im Debian-BTS könnten damit zusammenhängen:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=399776
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=421557

In unserer Firma läuft openSUSE, auch mit Apache 2.2 und PHP 5. Aber dort habe ich so ein Problem nocht nie gesehen. Ich denke das Problem ist leider Debian-spezifisch.