Есть ли способ зарегистрировать причину (или целевой файл) операций записи на диск в Linux (RHEL6.1)?

Есть ли способ зарегистрировать причину (или целевой файл) операций записи на диск в Linux (RHEL6.1)?

У меня есть виртуальная машина с приложением на основе PHP (в Apache). Если посмотреть на активность диска, то можно увидеть постоянную скорость записи 170 Кбит/с при работающем Apache.

Когда мы применяем нагрузку, производительность сервера ограничена процессором, но это, по-видимому, напрямую связано с прыжками ввода-вывода записи на диск в 20-30 раз. График использования процессора отражает график доступа к записи на диск.

Есть идеи?

решение1

Две рекомендации:

иотоп— удобная программа, которая показывает вам использование ввода-вывода в реальном времени в формате, подобном topкоманде. Это должно помочь вам определить скрипт/бинарный файл, который выполняет весь ввод-вывод. Я думаю, что это может быть уже установлено в новых ядрах, но yum может предоставить это в RHEL, если вы этого не видите.

lsofтакже полезен при устранении неполадок ввода-вывода; он выводит список всех открытых файлов.

ОБНОВЛЯТЬ

Если есть "постоянная" активность диска, то это iotopдолжно сказать вам, какой процесс(ы) является виновником. Что касается истории транзакций ввода-вывода: я не думаю, что история ввода-вывода где-либо регистрируется в большинстве дистрибутивов Linux, но вы можете добавить задание cron.

Как пользователь root откройте crontab crontab -eи добавьте следующие две строки:

* * * * * /bin/date >> /var/log/iotop; /usr/local/bin/iotop -bot --iter=3 -q >> /var/log/iotop
* * * * * /bin/date >> /var/log/lsof; /usr/bin/lsof -b -w >> /var/log/lsof

Это делает дампы iotopи lsofвыводит в журнал каждую минуту. Добавьте скрипт logrotate для каждого, чтобы файлы не занимали все ваше пространство, например:

someuser@myhost:~> cat /etc/logrotate.d/lsof
/var/log/lsof {
  rotate 3
  weekly
  compress
  missingok
  notifempty
}

решение2

Похоже, что несвязанная фоновая задача удаляла содержимое каталога /tmp, куда предварительно компилировался php. В результате процесс предварительной компиляции php начался снова, что привело к постоянной активности диска.

Связанный контент