Sehr hohe Belastung, anscheinend verursacht durch pdflush

Sehr hohe Belastung, anscheinend verursacht durch pdflush

Ich habe einen Server, auf dem CentOS 5 läuft. In regelmäßigen Abständen (mehrmals am Tag) kommt es zu enormen Lastspitzen, und der gesamte Server kommt zum Stillstand. Nach ein paar Minuten geht die Last wieder zurück und alles normalisiert sich wieder.

ICHverdächtiges hat etwas mit E/A und möglicherweise einer fehlerhaften Festplatte zu tun, aber da die Festplatten Hardware-RAID verwenden, weiß ich nicht genau, wie ich herausfinden soll, was schief läuft (smartctl sagt nur „Gerät unterstützt SMART nicht“).

Wie dem auch sei, was ich sehe topist:

top - 08:51:03 up 73 days,  7:45,  1 user,  load average: 69.00, 58.31, 46.89
Tasks: 316 total,   2 running, 314 sleeping,   0 stopped,   0 zombie
Cpu(s): 11.0%us,  1.3%sy,  0.0%ni, 15.2%id, 72.0%wa,  0.0%hi,  0.5%si,  0.0%st
Mem:   8299364k total,  7998520k used,   300844k free,    15480k buffers
Swap: 16779884k total,     4788k used, 16775096k free,  6547860k cached

Wie man sieht, ist die Belastung lächerlich hoch. Und vmstatzeigt:

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
24 16   5632 296080  23392 6317688    0    0     3    28    0    0  7  1 89  3  0
 0 22   5632 292644  23600 6325372    0    0    69 18781 1985 2318  9  2 14 75  0
 1 23   5656 299472  23756 6299140    0    0    44 18667 2075 3382 14  2 13 71  0
 0 23   5656 304756  24152 6295696    0    0    88 17002 1880 1445  4  1 16 78  0
 0 24   5656 296736  24488 6356564    0    0    60 17967 1841  990  2  1 20 76  0
 0 21   5672 302248  24764 6388424    0    0    66 17216 1820  749  2  1 24 73  0

Es ist der wirklich hohe „wa“-Wert, der mir völlig daneben erscheint. Außerdem iotopergibt sich:

Total DISK READ: 77.37 K/s | Total DISK WRITE: 15.81 M/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                                      
25647 be/4 apache     73.50 K/s    0.00 B/s  0.00 % 99.99 % httpd
24387 be/4 root        0.00 B/s    0.00 B/s 99.99 % 99.99 % [pdflush]
23813 be/4 root        0.00 B/s    0.00 B/s  0.00 % 99.99 % [pdflush]
25094 be/4 root        0.00 B/s    0.00 B/s 96.72 % 99.99 % [pdflush]
25093 be/4 root        0.00 B/s    0.00 B/s 99.99 % 99.99 % [pdflush]
25095 be/4 root        0.00 B/s    0.00 B/s 99.99 % 99.99 % [pdflush]
25091 be/4 root        0.00 B/s    0.00 B/s  0.00 % 99.99 % [pdflush]
24389 be/4 root        0.00 B/s    0.00 B/s 99.99 % 99.99 % [pdflush]
24563 be/4 root        0.00 B/s    0.00 B/s 99.99 % 99.99 % [pdflush]
24390 be/4 apache      0.00 B/s   23.21 K/s 96.71 % 99.99 % httpd
24148 be/4 apache      0.00 B/s    0.00 B/s 96.71 % 99.99 % httpd
24699 be/4 apache      0.00 B/s    0.00 B/s 99.99 % 99.99 % httpd
23973 be/4 apache      0.00 B/s    0.00 B/s 99.99 % 99.99 % httpd
24270 be/4 apache      0.00 B/s    0.00 B/s 99.99 % 99.99 % httpd
24298 be/4 apache      0.00 B/s 1918.82 K/s 96.71 % 99.02 % httpd
  628 be/3 root        0.00 B/s    0.00 B/s  0.00 % 97.51 % [kjournald]
25092 be/4 root        0.00 B/s    0.00 B/s  0.00 % 96.72 % [pdflush]
24258 be/4 root        0.00 B/s    0.00 B/s 99.99 % 96.71 % [pdflush]
23814 be/4 root        0.00 B/s    0.00 B/s  0.00 % 96.71 % [pdflush]
24388 be/4 root        0.00 B/s    0.00 B/s 99.02 % 96.71 % [pdflush]
25545 be/4 apache      0.00 B/s    0.00 B/s  0.19 % 92.73 % httpd
25274 be/4 apache      0.00 B/s    0.00 B/s  0.00 % 92.38 % httpd
24801 be/4 apache      0.00 B/s    5.84 M/s 99.99 % 91.63 % httpd
25281 be/4 apache      0.00 B/s    5.75 M/s  0.00 % 91.33 % httpd
26115 be/4 apache      0.00 B/s    0.00 B/s  9.60 % 19.26 % httpd
25561 be/4 apache      0.00 B/s    3.87 K/s  0.00 %  9.66 % httpd
26035 be/4 apache      0.00 B/s    0.00 B/s  0.00 %  9.63 % httpd

Schließlich erhalte ich Folgendes von sar -d 5 0:

Linux 2.6.18-308.1.1.el5PAE (ausbt.com.au)  23/08/12

08:55:45          DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
08:55:50       dev8-0    877.25    103.79  29306.19     33.53    158.81    179.28      1.14     99.84
08:55:50       dev8-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
08:55:50       dev8-2      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
08:55:50       dev8-3    877.25    103.79  29306.19     33.53    158.81    179.28      1.14     99.84

Dies ist erst vor Kurzem passiert (zumindest ist es mir erst vor Kurzem aufgefallen) und auf dem Server hat sich nichts geändert. Deshalb vermute ich, dass möglicherweise eine Art Hardwarefehler vorliegt, weiß aber nicht genau, wo ich mit der Suche beginnen soll.

Aktualisieren

Dank Mark Wagners Hinweis habe ich einen straceder Prozesse, der MB/s an I/O durchführte, überprüft und festgestellt, dass er in Dateien mit dem Namen "/tmp/magick-XXXXXXX" schrieb. Hier ist die Ausgabe von `ls -l /tmp/magick-XX*":

-rw------- 1 apache apache 1854881318400 Aug 20 04:26 /tmp/magick-XXrQahSe
-rw------- 1 apache apache 1854881318400 Aug 20 04:26 /tmp/magick-XXTaXatz
-rw------- 1 apache apache 1854881318400 Aug 20 04:26 /tmp/magick-XXtf25pe

Wow! Diese Dateien sind von vor ein paar Tagen, aber es gibt auch Dateien von heute, die eine ähnliche Größe haben. Mein Code generiert dynamisch Miniaturansichten von Bildern mit ImageMagick. Vielleicht gibt es also irgendwo ein beschädigtes Bild, das ImageMagick ausrasten lässt und 1,6 Terrabyte große Dateien nach /tmp schreibt.

Ich werde noch ein bisschen herumstöbern und ein Update posten, wenn ich mehr finde. Vielen Dank an alle für die bisherigen Hinweise.

Antwort1

Kommentar in Antwort umgewandelt.

Die Apache-PIDs 24801 und 25281 führen mit Abstand die meisten I/O-Vorgänge aus: 5,84 M/s bzw. 5,75 M/s. Normalerweise schließe ich iotop -oProzesse aus, die keine I/O-Vorgänge durchführen.

Antwort2

Ich bin nicht sicher, ob Sie iotop vertrauen können, da Sie sich nicht auf einer Kernelebene befinden, mit der es kompatibel ist.

Ich verwende den gleichen Kernel (2.6.18) wie Sie, und ich schaffe es nicht, dass iotop -o funktioniert. Es zeigt mir nicht nur die Prozesse an, die IO erzeugen.

verwandte Informationen