Назад | Перейти на главную страницу

Почему показатели / proc / diskstats неожиданно стали невероятно низкими?

У меня есть сервер Debian jessie с двумя твердотельными накопителями Intel DC S3610 в RAID-10. Он достаточно загружен для ввода-вывода, и последние несколько недель я строил графики операций ввода-вывода в секунду:

Как вы можете видеть, большую часть времени он успешно выполнял в среднем около 1 тыс. Операций чтения, достигая пика около 5,5 тыс., До тех пор, пока в полночь по всемирному координированному времени в пятницу не происходило внезапной остановки, и количество операций чтения упало почти до нуля.

На самом деле я заметил это только задним числом, потому что дело в том, что сервер все еще работает так, как должен. То есть я считаю, что нарушен мониторинг, а не количество операций ввода-вывода в секунду, которое может выполнить установка. Если бы фактическое количество операций ввода-вывода в секунду упало до отображаемого уровня, я бы знал, потому что все остальное очень заметно сломалось бы.

При дальнейшем исследовании графики чтения / записи килобайт также будут разбиты в этой же точке. Однако графики задержки запроса в порядке.

В попытке исключить конкретное решение для построения графиков, используемое здесь (cacti и SNMP), я взглянул на iostat. Его результат соответствует тому, что отображается на графиках.

Насколько я знаю iostat получает информацию от / proc / diskstats. В соответствии с https://www.kernel.org/doc/Documentation/iostats.txt там будет главное, второстепенное имя устройства, а затем набор полей, первое из которых - это количество завершенных чтений. Так:

$ for i in {1..10}; do awk '/sda / { print $4 }' /proc/diskstats; sleep 1; done
3752035479
3752035484
3752035484
3752035486
3752035486
3752035519
3752035594
3752035631
3752036016
3752036374

Невероятно, что такое небольшое количество чтений было выполнено за эти 10 секунд.

Но если / proc / diskstats лжет мне, тогда в чем может быть проблема и как я могу ее исправить?

Также интересен тот факт, что все, что изменилось, изменилось ровно в полночь, что, скорее, является совпадением.

На сервере довольно много блочных устройств. 187 из них - LVM LV, еще 18 - обычные разделы и устройства MD.

Я регулярно добавляю новые LV, поэтому вполне возможно, что в четверг я достиг какого-то предела, хотя я не добавил ни одного около полуночи, поэтому все еще странно, что все, что пошло не так, произошло в полночь.

я знаю это / proc / diskstats может переполняться, но когда это происходит, числа обычно ошибочно огромны.

Посмотрев на график немного внимательнее, мы можем увидеть, что в четверг он кажется более резким, чем раньше, за неделю (и недели) до него. Увеличивая результаты только за этот период, мы видим:

Эти пробелы в нулевом или близком к нулю показаниях являются ненормальными, и я не верю, что они отражают реальность. Возможно, количество запросов превысило какой-то порог, поскольку я добавил дополнительную нагрузку, так что она начала проявляться в четверг, а к пятнице большинство показаний теперь нулевые?

Есть ли у кого-нибудь идеи относительно того, что здесь происходит?

Версия ядра 3.16.7-ckt11-1 + deb8u3.