Очень высокая нагрузка, по-видимому, вызванная pdflush
У меня есть сервер, на котором работает CentOS 5, и он будет периодически (пару раз в день) иметь огромные скачки нагрузки, и весь сервер остановится. Через пару минут нагрузка вернется вниз и все вернется в норму.
Я подозреваю, что это как-то связано с вводом-выводом и, возможно, с плохим диском, но, поскольку диски используют аппаратный RAID, я не уверен, как выяснить, что происходит не так (smartctl просто говорит: "Устройство не поддерживает SMART").
Так или иначе, что я вижу из top
является:
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
Как видите, нагрузка смехотворно высока. А также vmstat
показывает:
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
Это действительно высокое значение "ва", которое кажется мне очень далеким. Также, iotop
дает:
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
Наконец, я получаю следующее от 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
Это произошло только недавно (по крайней мере, я заметил это только недавно), и на сервере ничего не изменилось, поэтому я подозреваю, что может быть какой-то сбой оборудования, но я не уверен, с чего начать.
Обновить
Благодаря подсказке Марка Вагнера, я сделал strace
одного из процессов, который делал МБ / с ввода-вывода и обнаружил, что он записывает в файлы с именем "/tmp/magick-XXXXXXX". Вот вывод `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
Вот Это Да! Эти файлы были сделаны пару дней назад, но сегодня есть и файлы такого же размера. Мой код динамически генерирует миниатюры изображений, используя ImageMagick, так что, возможно, где-то есть поврежденное изображение, что приводит к тому, что ImageMagick выходит из себя и записывает файлы объемом 1,6 ТБ в /tmp.
Я сделаю еще кое-что и выложу обновление, когда найду больше. Спасибо всем за подсказки.
2 ответа
Комментарий конвертируется в ответ.
Apache PID 24801 и 25281 делают на сегодняшний день больше всего операций ввода-вывода: 5,84 М / с и 5,75 М / с соответственно. я использую iotop -o
исключить процессы, не делающие ввод / вывод.
Я не уверен, что вы можете доверять iotop, поскольку вы не на уровне ядра, с которым он совместим.
Я нахожусь на том же ядре (2.6.18), что и вы, и я не могу заставить iotop -o даже работать... он не показывает мне только процессы, производящие IO.