Как диагностировать ошибочное поведение диска?

У меня есть веб-сайт с пользователями lighttpd и CGI скриптами.

После обновления до Fedora 11 (ext4) доступ к диску стал нестабильным. Сроки python -c 'import cgi' варьируется от 0,1 до почти 10 секунд:график

Как я могу диагностировать проблему? (Инструменты, методы, лучшие практики...)

Обновление 30 июля 2009 г.:
Обнаружил, что несколько процессов CGI занимают диск. После их убийства график стабилен между 0,02 и 0,03. До сих пор не получил ответ о том, как диагностировать такие проблемы.

3 ответа

Решение

Единственный способ диагностировать проблему, подобную этой, заключается в большом количестве данных. Ознакомьтесь с vmstat а также iostat, Инструмент, о котором я недавно узнал в этой теме: dstat который эффективно сочетает в себе два.

Для проблем, подобных описываемой вами, эта команда, вероятно, будет полезна:

$ dstat -M app -cdnygl

Он будет сообщать о ЦП, IO (диск и сеть), прерываниях, обмене и средней загрузке. В качестве приятного небольшого бонуса он будет включать название любого процесса, который был "самым дорогим" во время создания снимка. К сожалению, эта конкретная команда производит слишком широкий вывод для вставки, так что вот немного более консервативная версия:

$ dstat -M app -cdn
- самый дорогой-- ---- общее использование процессора ---- -дск / всего- -нет / всего-
     процесс |usr sys idl wai hiq siq| читать запись | recv  send
bacula-fd        0|  1   0  98   0   0   0| 426К 108К | 0 0 
Баш 1|  2   2  96   0   0   0|   0    20k|1460B 1804B
apache2          8|  4   2  94   0   0   0|   0     0 |  76k   15k
                  |  1   3  96   0   0   0|   0     0 |1132B 1034B
apache2          1|  2   2  96   0   0   0|   0  8192B|  11k 3895B
                  |  2   1  96   0   0   0|   0    32k|3322B 1338B
kipmi0           1|  2   2  96   0   0   0|   0     0 |1309B 1146B

Если это только что установленная версия, то такие инструменты, как makewhatis, которые используются, кстати, могут стать причиной интенсивного использования диска. Подождите несколько дней, чтобы все стабилизировалось (updatedb, prelink, makewhatis и т. Д.), Тогда время может быть согласованным.

Это также будет зависеть от того, что вы делаете на сервере, и от того, что на самом деле делает скрипт cgi, откуда он принимает данные, от размера ввода и т. Д.

Также, если диск очень старый, используйте диагностические инструменты (такие как Seagate Seatools) для поиска проблем с контроллером / неисправным сектором. Инструменты также позволят вам при необходимости отремонтировать сектор, если диск на самом деле от Seagate.

Вы действительно хотите / хотите ext4 на производственном сервере? На мой вкус к серверу это все еще немного зеленовато.

Другие вопросы по тегам