Я устраняю проблемы, связанные с падением производительности Linux-сервера вчера вечером. У меня на сервере установлен sysstat, и он опрашивает каждые 2 минуты. Примерно в то время, когда произошло событие, была большая активность диска (с использованием sar -b и sar -d):
05:46:01 PM tps rtps wtps bread/s bwrtn/s
05:46:01 PM 246.26 1.85 244.41 141.65 10524.53
05:58:01 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
05:46:01 PM dev8-0 246.26 141.65 10524.53 43.31 0.09 0.38 0.16 3.92
Как видите, по большей части это доступ для записи. Я хотел бы узнать, в какой файл (ы) велась запись в это время. Не похоже, что sar поддерживает эти данные, поэтому мне было интересно, есть ли какие-нибудь другие утилиты, которые будут отслеживать этот тип активности. Я сомневаюсь, что есть какой-то способ получить что-нибудь историческое, но если бы я смог установить что-то сейчас, это могло бы помочь в следующем инциденте.
iotop
- это поможет вам определить процесс, а затем вы сможете использовать lsof -c <process>
чтобы перечислить все открытые файловые дескрипторы, открытые процессом. Или вы можете strace
процесс, чтобы увидеть все текущие системные вызовы низкого уровня.
Эти утилиты предназначены не для мониторинга, а для расследования в реальном времени. Вам нужно будет реализовать надлежащий мониторинг, если вам нужно увидеть также некоторые исторические ценности.
Персональная рекомендация:
Sysdig (облако) - https://github.com/draios/sysdig/wiki/Sysdig-Examples#disk:
См. Основные процессы с точки зрения использования пропускной способности диска
sysdig -c topprocs_file
Перечислите процессы, использующие большое количество файлов
sysdig -c fdcount_by proc.name "fd.type=file"
Посмотрите на самые популярные файлы по количеству байтов чтения + записи
sysdig -c topfiles_bytes
Распечатайте самые популярные файлы, которые apache читал или записывал в
sysdig -c topfiles_bytes proc.name=httpd