У мене високий йо-стат. Високий пише. Але які файли записуються?


15
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 запитів на секунду для сервера, на якому нічого не розміщено

Відповіді:


8

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

1) Який би пристрій ви не бачили у "іостатовому" виході, який виконує більше вводу / виводу, використовуйте його з fuserнаступною командою:

fuser -uvm device

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

lsof -p PID | more

3) Ви отримаєте список файлів / каталогів разом із користувачем, який виконує максимальний ввід / вивід.


root @ host [~] # fuser -uv / home4 root @ host [~] # fuser -uvm / home4 КОМАНДА ДОСТУПНОГО ДОСТУПУ / home4: newgames 18297 ..c .. (newgames) php cuntschi 18407 ..c .. ( cuntschi) php newgames 18457 ..c .. (newgames) php
користувач4951

5

Здається, немає інструментів для визначення пропускної здатності вводу-виводу на файл, крім того, що відбувається в процесі роботи з файлом. Але є способи з'ясувати пропускну здатність процесу вводу / виводу.

iotop - Це утиліта типу top / iftop, яка показує пропускну здатність процесу вводу / виводу.

Після того, як вкажіть штифт, який процес має великі введення / виведення, скористайтеся наступним, щоб дізнатися, який файл використовується

lsof -c <process name>

Це повинно звузити область та допомогти вказувати джерело.


як отримати процес? lsof також нічого не виробляє. Щось пише так багато речей, і я не знаю чого
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'.

2

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.