Ho un alto io stat. Scrive in alto. Ma quali file vengono scritti?


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

C'è un modo per sapere quali file vengono scritti? 457 kB / s

Anche quest'altra macchina Linux ha lo stesso problema.

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 richieste di scrittura al secondo per un server che non ospita nulla

Risposte:


8

Bene, potresti provare i seguenti comandi che hanno funzionato per me in RHEL6:

1) Qualunque dispositivo si veda nell'uscita "iostat" che esegue più I / O, utilizzarlo con il fusercomando come segue:

fuser -uvm device

2) Verrà visualizzato un elenco di processi con il nome utente che causa più I / O. Seleziona quei PIDS e usali nel lsofcomando come segue:

lsof -p PID | more

3) Verrà visualizzato un elenco di file / directory insieme all'utente che esegue l'I / O massimo.


root @ host [~] # fuser -uv / home4 root @ host [~] # fuser -uvm / home4 COMANDO ACCESSO PID UTENTE / home4: newgames 18297 ..c .. (newgames) php cuntschi 18407 ..c .. ( cuntschi) php newgames 18457 ..c .. (newgames) php
user4951

5

Sembra che non ci siano strumenti per scoprire il throughput I / O per file se non all'interno del processo usando il file. Ma ci sono modi per scoprire il throughput I / O del processo.

iotop - È un'utilità top / iftop che mostra il throughput I / O del processo.

Dopo aver puntato il pin su quale processo ha un I / O pesante, usare il seguito per scoprire quale file viene utilizzato

lsof -c <process name>

Ciò dovrebbe restringere l'ambito e aiutare a individuare la fonte.


come ottenere il processo? Inoltre non produce nulla. Qualcosa sta scrivendo così tante cose e non so cosa
user4951

Scusa, ho inserito l'utilità io sbagliata. Dovrebbe essere iotop, no iostat. Ho corretto la mia risposta.
John Siu,

(1) Puoi anche aggiornare quale distro (redhat / centos / ubuntu ...) stai eseguendo? (2) È una nuova installazione? (3) Qualche condivisione di file come samba in esecuzione?
John Siu,

3

Puoi usare inotifywaitda inotify-toolsper scoprire esattamente su quale file è stato scritto. Questo non ti dirà quanti dati vengono scritti, ma ti dirà almeno su quali file vengono scritti mentre si verificano.

Ad esempio, questo comando stampa il nome del file non appena ne viene creato, modificato o eliminato qualsiasi /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

Sfortunatamente dovrai indovinare quale directory contiene i file su cui stai scrivendo. Questo non riesce se si tenta di utilizzarlo nella directory principale, sebbene apparentemente ciò possa essere sovrascritto:

$ 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

Utilizzare systemtap per monitorare ogni syscall di scrittura / scrittura. Puoi fare un po 'di contabilità e vedrai quale file / fd ottiene il maggior numero di byte.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.