高いioスタットがあります。高い書き込み。しかし、どのファイルが書き込まれていますか?


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 kB / s

また、この他の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

何もホストしないサーバーの場合、1秒あたり1200の書き込み要求

回答:


8

さて、あなたはRHEL6で私のために働いた次のコマンドを試すことができます:

1)より多くのI / Oを実行する「iostat」出力に表示されるデバイスは、fuser次のようにコマンドで使用します。

fuser -uvm device

2)より多くのI / Oを引き起こすユーザー名を持つプロセスのリストを取得します。それらのPIDSを選択し、lsofコマンドで次のように使用します。

lsof -p PID | more

3)最大I / Oを実行しているユーザーとともにファイル/ディレクトリのリストを取得します。


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

ファイルを使用するプロセス内以外に、ファイルごとのI / Oスループットを検出するツールはないようです。しかし、プロセスI / Oスループットを見つける方法があります。

iotop-プロセスI / Oスループットを表示するtop / iftopのようなユーティリティです。

I / Oの負荷が高いプロセスを特定した後、次のコマンドを使用して、どのファイルが使用されているかを調べます。

lsof -c <process name>

これにより、範囲が絞り込まれ、ソースの特定が容易になります。


プロセスを取得する方法?lsofも何も生成しません。何かが非常に多くのことを書いており、私は何を知らない
-user4951

申し訳ありませんが、間違ったioユーティリティを配置しました。そうiotopではないはずiostatです。答えを修正しました。
ジョン・シウ

(1)実行しているディストリビューション(redhat / centos / ubuntu ...)も更新できますか?(2)これは新規インストールですか?(3)実行中のSambaのようなファイル共有はありますか?
ジョン・シウ

3

inotifywaitfrom 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を使用して、各write / pwrite syscallを監視します。何らかのアカウンティングを行うことができ、どのファイル/ fdが最も多くのバイトを取得するかがわかります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.