Я устраняю проблемы, связанные с ухудшением производительности 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
, чтобы перечислить все открытые файловые дескрипторы, открытые процессом. Или вы можете выполнить процесс 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