PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Swap space 0k free



Andislack
23.10.07, 15:35
Hi,

habe das Problem, dass unser Server am Woe nicht mehr erreichbar war (werder remote noch lokal). Erst ein reset war erfolgreich.
Jetzt läuft die Kiste wieder, und mir ist aufgefallen, dass der Swap 0k free ist. Es ändert sich mal auf 40k oder 70k, aber prinzipiell liegt es in diesem Bereich - also kein Swapspeicher verfügbar.

Das kommt dann im "Ernstfall" im syslog:

Oct 23 04:06:19 fred kernel: oom-killer: gfp_mask=0x201d2, order=0
Oct 23 04:06:19 fred kernel: DMA per-cpu:
Oct 23 04:06:19 fred kernel: cpu 0 hot: low 0, high 0, batch 1 used:0
Oct 23 04:06:19 fred kernel: cpu 0 cold: low 0, high 0, batch 1 used:0
Oct 23 04:06:19 fred kernel: DMA32 per-cpu: empty
Oct 23 04:06:19 fred kernel: Normal per-cpu:
Oct 23 04:06:19 fred kernel: cpu 0 hot: low 0, high 186, batch 31 used:73
Oct 23 04:06:19 fred kernel: cpu 0 cold: low 0, high 62, batch 15 used:31
Oct 23 04:06:19 fred kernel: HighMem per-cpu:
Oct 23 04:06:19 fred kernel: cpu 0 hot: low 0, high 42, batch 7 used:7
Oct 23 04:06:19 fred kernel: cpu 0 cold: low 0, high 14, batch 3 used:1
Oct 23 04:06:19 fred kernel: Free pages: 11908kB (252kB HighMem)
Oct 23 04:06:19 fred kernel: Active:124317 inactive:124924 dirty:0 writeback:0 unstable:0 free:2977 slab:2788 mapped:246976 pagetables:788
Oct 23 04:06:19 fred kernel: DMA free:4068kB min:68kB low:84kB high:100kB active:4868kB inactive:3480kB present:16384kB pages_scanned:8522 all_unreclaimable? yes
Oct 23 04:06:19 fred kernel: lowmem_reserve[]: 0 0 880 1000
Oct 23 04:06:20 fred kernel: DMA32 free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no
Oct 23 04:06:20 fred kernel: lowmem_reserve[]: 0 0 880 1000
Oct 23 04:06:20 fred kernel: Normal free:7588kB min:3756kB low:4692kB high:5632kB active:428136kB inactive:439132kB present:901120kB pages_scanned:1168506 all_unreclaima
Oct 23 04:06:20 fred kernel: lowmem_reserve[]: 0 0 0 960
Oct 23 04:06:20 fred kernel: HighMem free:252kB min:128kB low:256kB high:384kB active:64264kB inactive:57084kB present:122880kB pages_scanned:124702 all_unreclaimable? n
Oct 23 04:06:20 fred kernel: lowmem_reserve[]: 0 0 0 0
Oct 23 04:06:20 fred kernel: DMA: 1*4kB 0*8kB 0*16kB 1*32kB 1*64kB 1*128kB 1*256kB 1*512kB 1*1024kB 1*2048kB 0*4096kB = 4068kB
Oct 23 04:06:20 fred kernel: DMA32: empty
Oct 23 04:06:20 fred kernel: Normal: 27*4kB 69*8kB 9*16kB 0*32kB 0*64kB 1*128kB 0*256kB 1*512kB 0*1024kB 1*2048kB 1*4096kB = 7588kB
Oct 23 04:06:20 fred kernel: HighMem: 35*4kB 2*8kB 2*16kB 0*32kB 1*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 252kB
Oct 23 04:06:20 fred kernel: Swap cache: add 361569, delete 361524, find 166889/189212, race 0+46
Oct 23 04:06:20 fred kernel: Free swap = 0kB
Oct 23 04:06:20 fred kernel: Total swap = 497972kB
Oct 23 04:06:27 fred kernel: Out of Memory: Killed process 1582 (httpd).

Gibts ne Möglichkeit den Prozess ausfindig zu machen, der das Problem verursacht, denn der Server läuft schon sehr lange ohne Probleme und Änderungen, sodass wohl ein Programm/Prozess den Fehler verursacht?

1Gig Ram und free sagt:

total used free shared buffers cached
Mem: 1027432 985368 42064 0 3440 78084
-/+ buffers/cache: 903844 123588
Swap: 497972 497912 60

Swap wurde bei Installation auf 500 MB eingestellt und da waren erst nur 512 MB ram drin, ist dann auf 1 Gig aufgestockt worden.

Ich habe schon alles abgeschaltet, was nicht dringend notwendig ist, aber es hat sich nichts geändert.
Ansonsten laufen sendmail, milter-greylist, qpopper, apache, mysql, firebird, ntp

Kernel 2.6.15.4 selber kompiliert auf einem Slackware System.

Hat da jemand eine Idee?
Andi

zeus.mclane
23.10.07, 18:10
Hi

Da Swap ja nur eine ausgelagerte Form von RAM ist müsstest du doch mit top den RAM-Fresser auswendig machen können, korigiert micht wenn ich falsch denke.

mfg zeus.mclane

Andislack
30.10.07, 09:20
hi,

sorry dass ich mich so lange nicht gemeldet habe.
Das Problem konnte ich mit top zumindest eingrenzen, aber nicht lösen.

top nach RES sortiert ergibt folgendes:

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1181 apache 15 0 54900 21m 4892 S 0.0 2.1 0:00.33 httpd
1178 apache 16 0 53960 19m 4148 S 0.0 2.0 0:00.13 httpd
1177 apache 15 0 53836 19m 3920 S 0.3 1.9 0:00.24 httpd
1206 apache 16 0 53620 18m 3500 S 0.0 1.9 0:00.09 httpd
1179 apache 15 0 53408 18m 3316 S 0.0 1.8 0:00.06 httpd
1180 apache 15 0 53224 17m 3128 S 0.0 1.8 0:00.02 httpd
1205 apache 16 0 53224 17m 3108 S 0.0 1.8 0:00.02 httpd
1176 root 16 0 53092 17m 2856 S 0.0 1.7 0:00.32 httpd
1188 apache 16 0 53092 16m 2364 S 0.0 1.7 0:00.00 httpd
1154 root 15 0 31612 7404 1924 S 0.0 0.7 0:00.06 ibserver
1155 root 16 0 31612 7404 1924 S 0.0 0.7 0:00.00 ibserver
1161 root 15 0 31612 7404 1924 S 0.0 0.7 0:00.09 ibserver
1162 root 16 0 31612 7404 1924 S 0.0 0.7 0:00.00 ibserver
1165 root 16 0 31612 7404 1924 S 0.0 0.7 0:00.00 ibserver
1202 root 15 0 31612 7404 1924 S 0.3 0.7 0:00.22 ibserver
1207 root 16 0 31612 7404 1924 S 0.0 0.7 0:00.00 ibserver
1208 root 15 0 31612 7404 1924 S 0.0 0.7 0:00.04 ibserver
1212 root 16 0 31612 7404 1924 S 0.0 0.7 0:00.00 ibserver

Das ist nachdem ich die beiden Dienste httpd und ibserver neu gestartet habe.
Beide Dienste fressen mit längerer Laufzeit allen RAM und Swap-Speicher auf, nur ein Neustart der Dienste regelt es wieder.

top - 09:02:34 up 19:26, 1 user, load average: 10.96, 7.29, 3.70
Tasks: 173 total, 1 running, 170 sleeping, 0 stopped, 2 zombie
Cpu(s): 6.4% us, 5.9% sy, 0.0% ni, 80.7% id, 6.7% wa, 0.0% hi, 0.2% si
Mem: 1027436k total, 1010704k used, 16732k free, 1376k buffers
Swap: 497972k total, 497972k used, 0k free, 24968k cached

So sieht es aus, wenn das Problem aktuell besteht.
Momentan starte ich beide Dienste min. einmal am Tag manuell neu, damit der Server nicht hängen bleibt.

Eine Idee?

Andi

marce
30.10.07, 09:25
schau mal, auf welche Dateien die Serverprozesse zugreifen - evtl. findet sich da was...

SecUpdates und ähnliches hast Du immer gemacht?

Andislack
30.10.07, 09:45
hi,



lsof | grep httpd
und
lsof | grep ibserver

liefern natürlich mächtig viele Dateizugriffe - kann man das irgendwie genauer abfragen?
Bei einem groben Überfliegen kann ich da nix unnormales erkennen.

Security Updates für das gesamte System hab ich immer eingespielt.
Der Firebirdserver und Apache laufen nicht in der neuesten Versionen, bedingt durch spezielle Anwendungen. Das kann aber eigentlich nicht das Problem sein, denn alles lief bestimmt fast 1 Jahr ohne großartige Änderungen am System.

Zu dem Zeitpunkt wo das Problem aufgetreten ist, sind schon länger keinerlei Installationen oder sonstiges eingespielt worden.
Ein paar Tage vorher (vielleicht 7-9 Tage) ist mal der nacctd abgeschmiert, was auch das erste Mal war. Den neugestartet und alles lief wieder - bis zu dem Totalchrash.

Andi

nur mal so zur Info - seit dem letzten Post sieht das System jetzt schon so aus und das geht immer weiter nach oben:


1188 apache 16 0 57776 28m 9820 S 0.0 2.9 0:00.71 httpd
1181 apache 16 0 54996 22m 5560 S 0.0 2.2 0:00.79 httpd
1177 apache 16 0 54152 21m 6028 S 0.0 2.2 0:00.99 httpd
1178 apache 16 0 54148 21m 5948 S 0.0 2.2 0:00.39 httpd
1205 apache 16 0 54096 21m 5372 S 0.0 2.1 0:00.70 httpd
1179 apache 16 0 54368 20m 5012 S 0.0 2.1 0:00.74 httpd
1206 apache 15 0 53960 20m 5012 S 3.3 2.0 0:01.47 httpd
1180 apache 16 0 53940 20m 4792 S 0.0 2.0 0:00.48 httpd
2913 apache 16 0 53828 19m 4328 S 0.0 2.0 0:00.14 httpd
2931 apache 16 0 53692 19m 4432 S 0.0 2.0 0:00.29 httpd
1176 root 16 0 53092 17m 2856 S 0.0 1.7 0:00.32 httpd
1154 root 16 0 31852 16m 1976 S 0.7 1.6 0:00.47 ibserver
1155 root 16 0 31852 16m 1976 S 0.0 1.6 0:00.02 ibserver
1162 root 16 0 31852 16m 1976 S 0.0 1.6 0:00.06 ibserver
1165 root 16 0 31852 16m 1976 S 0.0 1.6 0:00.27 ibserver
1207 root 16 0 31852 16m 1976 S 0.0 1.6 0:00.00 ibserver
1212 root 16 0 31852 16m 1976 S 0.0 1.6 0:00.00 ibserver
3808 root 16 0 31852 16m 1976 S 1.3 1.6 0:00.35 ibserver
3901 root 16 0 31852 16m 1976 S 1.7 1.6 0:00.05 ibserver
904 mysql 16 0 64244 7052 1576 S 0.0 0.7 0:18.15 mysqld

marce
30.10.07, 10:08
irgendwie sieht das aus nach tmp. Speicher von irgendwelchen DB-Abfragen oder sonstigen Speicherlecks in der Applikation - aber wenn Du sagst, dass da nichts geändert wurde...?

Evtl. irgendwelche Indices oder sonstige DB-Geschichten geändert?

Andislack
30.10.07, 10:34
hmm - indices in der db sind schon geändert worden, aber die applicationen die auf die db zugreifen, haben nichts mit den Tabellen zu tun, wo die Indices geändert wurden.
Da läuft eine selbst programmierte Replicationsengine für zwei Firebirddatenbanken. Die hatte ich aber auch schonmal abgeschaltet - ohne Resultat.

Das komische ist, dass der Apache gleich mit soviel RES startet, das dürfte doch eigentlich nicht sein. Starte ich testweise auf einem anderen Server den httpd neu, ist RES z.B. 3692 auf dem Problemserver startet der httpd mit 19m und mehr.

Der ibserver startet normal und kommt erst mit der Zeit auf hohe RES Werte.

Hier nochmal ein Zwischenstand von top mit mysqld zum Vergleich noch dabei:


top - 10:33:06 up 20:56, 1 user, load average: 0.28, 0.21, 0.18
Tasks: 124 total, 1 running, 122 sleeping, 0 stopped, 1 zombie
Cpu(s): 0.3% us, 0.3% sy, 0.0% ni, 97.7% id, 1.7% wa, 0.0% hi, 0.0% si
Mem: 1027436k total, 394888k used, 632548k free, 26568k buffers
Swap: 497972k total, 23364k used, 474608k free, 270980k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1188 apache 16 0 57796 29m 10m S 0.0 3.0 0:01.53 httpd
1178 apache 16 0 54328 24m 9204 S 0.0 2.5 0:01.04 httpd
1179 apache 16 0 55060 24m 8456 S 0.0 2.5 0:01.34 httpd
1206 apache 16 0 54344 24m 8508 S 0.0 2.4 0:02.07 httpd
1181 apache 16 0 54996 22m 6028 S 0.0 2.2 0:01.32 httpd
1177 apache 16 0 54252 21m 6132 S 0.0 2.2 0:01.67 httpd
1205 apache 16 0 54124 21m 6008 S 0.0 2.2 0:01.27 httpd
2913 apache 16 0 54156 21m 5544 S 0.0 2.1 0:01.17 httpd
2931 apache 16 0 54096 21m 5548 S 0.0 2.1 0:01.04 httpd
1180 apache 16 0 54168 21m 5492 S 0.0 2.1 0:01.26 httpd
1176 root 16 0 53092 17m 2856 S 0.0 1.7 0:00.32 httpd
1154 root 16 0 36572 17m 1976 S 0.0 1.7 0:00.90 ibserver
1155 root 16 0 36572 17m 1976 S 0.0 1.7 0:00.05 ibserver
1162 root 16 0 36572 17m 1976 S 0.0 1.7 0:00.06 ibserver
1165 root 16 0 36572 17m 1976 S 0.0 1.7 0:00.27 ibserver
1207 root 16 0 36572 17m 1976 S 0.0 1.7 0:00.00 ibserver
1212 root 16 0 36572 17m 1976 S 0.0 1.7 0:00.00 ibserver
7233 root 16 0 36572 17m 1976 S 0.0 1.7 0:00.03 ibserver
7237 root 16 0 36572 17m 1976 S 0.0 1.7 0:00.01 ibserver
7361 root 16 0 36572 17m 1976 S 0.0 1.7 0:00.00 ibserver
7386 root 16 0 36572 17m 1976 S 0.0 1.7 0:00.00 ibserver
904 mysql 16 0 64636 7288 1616 S 0.0 0.7 0:18.34 mysqld
915 mysql 16 0 64636 7288 1616 S 0.0 0.7 0:13.70 mysqld
916 mysql 20 0 64636 7288 1616 S 0.0 0.7 0:00.00 mysqld
917 mysql 17 0 64636 7288 1616 S 0.0 0.7 0:00.00 mysqld
918 mysql 16 0 64636 7288 1616 S 0.0 0.7 0:00.00 mysqld
919 mysql 16 0 64636 7288 1616 S 0.0 0.7 0:00.00 mysqld
927 mysql 16 0 64636 7288 1616 S 0.0 0.7 0:32.00 mysqld
928 mysql 16 0 64636 7288 1616 S 0.0 0.7 0:59.94 mysqld
929 mysql 16 0 64636 7288 1616 S 0.0 0.7 0:00.00 mysqld
930 mysql 16 0 64636 7288 1616 S 0.0 0.7 0:07.38 mysqld
1187 mysql 18 0 64636 7288 1616 S 0.0 0.7 0:45.51 mysqld
1213 mysql 16 0 64636 7288 1616 S 0.0 0.7 0:02.17 mysqld
1215 mysql 18 0 64636 7288 1616 S 0.0 0.7 0:12.44 mysqld
1262 mysql 18 0 64636 7288 1616 S 0.0 0.7 0:21.66 mysqld
1290 mysql 16 0 64636 7288 1616 S 0.0 0.7 0:04.26 mysqld
1317 mysql 18 0 64636 7288 1616 S 0.0 0.7 0:46.87 mysqld
1323 mysql 19 0 64636 7288 1616 S 0.0 0.7 0:04.66 mysqld
1355 mysql 16 0 64636 7288 1616 S 0.0 0.7 0:03.30 mysqld
1427 mysql 18 0 64636 7288 1616 S 0.0 0.7 0:03.47 mysqld
1604 mysql 16 0 64636 7288 1616 S 0.0 0.7 0:00.00 mysqld
1672 mysql 16 0 64636 7288 1616 S 0.0 0.7 0:02.13 mysqld
1930 mysql 16 0 64636 7288 1616 S 0.0 0.7 0:00.02 mysqld

marce
30.10.07, 10:37
könntest Du bitte die Postings noch editieren und die Ausgaben in code-Tags stellen? Das erhöht die Lesbarkeit ungemein...

Andislack
30.10.07, 10:47
sorry - hast recht, schon geschehen.

marce
30.10.07, 10:58
Was mir auffällt - obwohl schon recht viel Swap benutzt ist ist immer noch massiv viel Speicher als frei / Cache deklariert - das System sollte da eigentlich anders reagieren...

Könnte das mit dem selbst gebauten Kernel zusammenhängen? Swappiness?

Andislack
30.10.07, 11:16
genau das ist mir auch aufgefallen und schleierhaft.


uname -a
Linux fred 2.6.15.4 #1 Fri Feb 17 23:13:06 CET 2006 i686 unknown

Seitdem hab ich am Kernel nix geändert. Seitdem sind auch nur minimale reboots gelaufen, vielleicht 3 oder so.


cat /proc/sys/vm/swappiness
60

#das hab ich jetzt mal geändert auf 30
echo 30 > /proc/sys/vm/swappiness
cat /proc/sys/vm/swappiness
30

Mal schauen ob sich da was ändert.

Andi

Andislack
31.10.07, 09:48
Hi,

leider hat die swappiness Änderung nix gebracht, das sagt das system:

top - 09:42:08 up 1 day, 20:05, 1 user, load average: 11.63, 5.96, 3.94
Tasks: 168 total, 3 running, 165 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 55.9% sy, 0.0% ni, 0.0% id, 43.4% wa, 0.0% hi, 0.4% si
Mem: 1027436k total, 1014940k used, 12496k free, 128k buffers
Swap: 497972k total, 497972k used, 0k free, 11748k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1154 root 15 0 295m 181m 744 S 0.0 18.1 1:43.18 ibserver
1155 root 17 0 295m 181m 744 S 0.2 18.1 0:00.98 ibserver
1162 root 15 0 295m 181m 744 S 0.0 18.1 0:02.27 ibserver
1165 root 16 0 295m 181m 744 S 0.0 18.1 0:03.20 ibserver
1207 root 15 0 295m 181m 744 S 0.0 18.1 0:02.35 ibserver
1212 root 15 0 295m 181m 744 S 0.0 18.1 0:03.28 ibserver
5272 root 15 0 295m 181m 744 S 0.0 18.1 0:00.21 ibserver
5476 root 15 0 295m 181m 744 S 0.0 18.1 0:00.04 ibserver
5665 root 15 0 295m 181m 744 S 0.2 18.1 0:00.03 ibserver
5666 root 15 0 295m 181m 744 S 0.0 18.1 0:00.00 ibserver
5754 root 15 0 295m 181m 744 S 0.0 18.1 0:00.00 ibserver
5762 root 15 0 295m 181m 744 S 0.0 18.1 0:00.00 ibserver
5763 root 15 0 295m 181m 744 S 0.0 18.1 0:00.03 ibserver
5765 root 15 0 295m 181m 744 S 0.0 18.1 0:00.01 ibserver
5766 root 15 0 295m 181m 744 S 0.0 18.1 0:00.01 ibserver
5831 root 15 0 295m 181m 744 S 0.0 18.1 0:00.00 ibserver
5832 root 15 0 295m 181m 744 S 0.0 18.1 0:00.00 ibserver
5886 root 18 0 295m 181m 744 S 0.0 18.1 0:00.00 ibserver
5887 root 16 0 295m 181m 744 S 0.0 18.1 0:00.00 ibserver
1181 apache 15 0 142m 83m 628 S 0.0 8.4 1:23.58 httpd
2913 apache 16 0 142m 83m 604 S 0.0 8.3 1:11.03 httpd
23825 apache 16 0 142m 80m 576 S 0.0 8.1 0:55.84 httpd
26656 apache 16 0 142m 77m 576 S 0.0 7.8 0:56.94 httpd
2931 apache 16 0 142m 75m 592 S 0.0 7.6 1:18.20 httpd
10280 apache 16 0 142m 71m 576 S 0.0 7.2 0:56.61 httpd
1188 apache 16 0 142m 70m 588 S 0.0 7.0 1:11.02 httpd
1180 apache 22 0 142m 65m 588 S 0.0 6.6 1:09.85 httpd
10024 apache 16 0 142m 60m 576 S 0.0 6.0 0:56.26 httpd
1179 apache 18 0 142m 42m 588 S 0.0 4.2 1:09.15 httpd
1206 apache 22 0 142m 38m 588 S 0.0 3.8 1:15.10 httpd
1177 apache 25 0 142m 32m 576 S 0.0 3.2 1:10.44 httpd
1178 apache 25 0 142m 16m 588 S 0.0 1.6 1:13.69 httpd
1205 apache 25 0 142m 11m 588 S 0.0 1.2 1:11.27 httpd
19503 apache 15 0 55164 9236 612 S 0.0 0.9 0:04.33 httpd
27115 apache 16 0 54948 9048 616 S 0.0 0.9 0:02.55 httpd
27137 apache 16 0 54712 8844 616 S 0.0 0.9 0:02.61 httpd

Nur ein Neustart der Dienste httpd und ibserver bringt Entspannung.
Aber der httpd startet gleich so:

6024 apache 15 0 53892 18m 3548 S 0.0 1.9 0:00.09 httpd
6025 apache 15 0 53600 18m 3228 S 0.0 1.8 0:00.06 httpd
6019 root 18 0 53092 17m 2856 S 0.7 1.7 0:00.34 httpd
6051 apache 15 0 53128 17m 2396 S 0.0 1.7 0:00.00 httpd
6065 apache 17 0 53128 17m 2396 S 0.0 1.7 0:00.00 httpd
6066 apache 16 0 53128 17m 2396 S 0.0 1.7 0:00.00 httpd
6067 apache 16 0 53128 17m 2396 S 0.0 1.7 0:00.00 httpd
6080 apache 15 0 53128 17m 2396 S 0.0 1.7 0:00.00 httpd
6081 apache 15 0 53128 17m 2396 S 0.0 1.7 0:00.00 httpd
6027 apache 15 0 53128 16m 2396 S 0.0 1.7 0:00.00 httpd
6028 apache 15 0 53128 16m 2396 S 0.0 1.7 0:00.00 httpd
6026 apache 15 0 53096 16m 2416 S 0.0 1.7 0:00.00 httpd
6082 apache 15 0 53092 16m 2044 S 0.0 1.7 0:00.00 httpd
6083 apache 18 0 53092 16m 2040 S 0.0 1.7 0:00.00 httpd

Das ist doch vielzuviel RES gleich zu Beginn...

Andi