У меня есть высокий стат. Хай пишет. Но какие файлы пишутся?

14
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          11.50    0.02    5.38    0.07    0.00   83.04

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sdc               0.01    89.92    0.26   41.59     3.36   457.19    22.01     0.23    5.60   0.09   0.38
sdb               0.10    15.59    0.40   14.55     8.96   120.57    17.33     0.04    2.91   0.07   0.11
sda               0.13    45.37    0.96    8.09    20.06   213.56    51.63     0.02    2.64   0.16   0.14
sde               0.01    31.83    0.09   11.34     0.94   103.56    18.29     0.04    3.52   0.14   0.16
sdd               0.01    48.01    0.13   19.81     1.58   202.16    20.44     0.11    5.62   0.13   0.25

Есть ли способ узнать, какие файлы пишутся? 457 кБ / с

Также эта другая машина Linux имеет ту же проблему.

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          20.50    0.00   46.48   20.74    0.00   12.28

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.17    11.61    0.99    3.51    36.65    59.43    42.70     0.10   23.20   3.84   1.73
sdb               0.55   224.18   24.30   97.45   246.48  1287.12    25.19     3.96   32.53   7.88  95.91
sdd               0.53   226.75   25.56   90.96   283.50  1271.69    26.69     3.43   29.44   8.22  95.75
sdc               0.00     1.76    0.28    0.06     4.73     7.26    70.41     0.00   12.00   2.12   0.07
dm-0              0.00     0.00    1.11   14.77    36.41    58.92    12.01     1.00   62.86   1.09   1.74
dm-1              0.00     0.00    0.04    0.12     0.17     0.49     8.00     0.00   21.79   2.47   0.04
dm-2              0.00     0.00    0.01    0.00     0.05     0.01     8.50     0.00    7.90   2.08   0.00

1200 запросов на запись в секунду для сервера, на котором ничего нет

user4951
источник

Ответы:

8

Ну, вы можете попробовать следующие команды, которые работали для меня в RHEL6:

1) Независимо от того, какое устройство вы видите в выводе «iostat» и выполняет больше операций ввода-вывода, используйте его с fuserкомандой следующим образом:

fuser -uvm device

2) Вы получите список процессов с именем пользователя, вызывающим больше операций ввода-вывода. Выберите эти PIDS и используйте его в lsofкоманде следующим образом:

lsof -p PID | more

3) Вы получите список файлов / каталогов вместе с пользователем, выполняющим максимальный ввод-вывод.

Рави Триведи
источник
root @ host [~] # fuser -uv / home4 root @ host [~] # fuser -uvm / home4 КОМАНДА ДОСТУПА ПОЛЬЗОВАТЕЛЯ PID / home4: newgames 18297 ..c .. (newgames) php cuntschi 18407 ..c .. ( cuntschi) php newgames 18457 ..c .. (newgames) php
user4951
5

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

iotop - это утилита top / iftop, которая показывает пропускную способность ввода / вывода процесса.

После указания, какой процесс имеет тяжелый ввод / вывод, используйте следующую команду, чтобы узнать, какой файл используется

lsof -c <process name>

Это должно сузить область и помочь точно определить источник.

Джон Сиу
источник
как получить процесс? Кроме того, ничего не производит. Что-то пишет так много вещей, и я не знаю, что
user4951
Извините, я поставил неправильную утилиту io. Должно быть iotop, нет iostat. Я исправил свой ответ.
Джон Сиу
(1) Можете ли вы также обновить, какой дистрибутив (redhat / centos / ubuntu ...) вы используете? (2) Это свежая установка? (3) Есть ли общий доступ к файлам, например, samba?
Джон Сиу
3

Вы можете использовать inotifywaitиз, inotify-toolsчтобы узнать, в какой именно файл записывается. Это не скажет вам, сколько данных записывается, но, по крайней мере, скажет вам, в какие файлы записывается, как это происходит.

Например, эта команда напечатает имя файла, как только оно будет создано, изменено или удалено в /tmp:

$ sudo inotifywait -e modify -e attrib -e move -e create -e delete -m -r /tmp
Setting up watches.  Beware: since -r was given, this may take a while!
Watches established.
/tmp/ CREATE test
/tmp/ MODIFY test

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

$ sudo inotifywait -e modify -e attrib -e move -e create -e delete -m -r /
Setting up watches.  Beware: since -r was given, this may take a while!
Failed to watch /; upper limit on inotify watches reached!
Please increase the amount of inotify watches allowed per user via `/proc/sys/fs/inotify/max_user_watches'.
adittes
источник
2

Используйте systemtap для мониторинга каждого системного вызова write / pwrite. Вы можете сделать некоторые учетные записи, и вы увидите, какой файл / fd получает больше байтов.

Эрбен Мо
источник