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
Run Code Online (Sandbox Code Playgroud)
有没有办法知道正在写入哪些文件?457 KB/秒
这台其他 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
Run Code Online (Sandbox Code Playgroud)
对于不托管任何内容的服务器,每秒 1200 次写入请求
小智 10
好吧,您可以尝试以下在 RHEL6 中对我有用的命令:
1) 无论您在“iostat”输出中看到执行更多 I/O 的设备,请使用fuser如下命令:
fuser -uvm device
Run Code Online (Sandbox Code Playgroud)
2) 您将获得一个包含导致更多 I/O 的用户名的进程列表。选择这些 PIDS 并在lsof命令中使用它,如下所示:
lsof -p PID | more
Run Code Online (Sandbox Code Playgroud)
3) 您将获得文件/目录列表以及执行最大 I/O 的用户。
除了使用文件的进程外,似乎没有工具可以找出每个文件的 I/O 吞吐量。但是有一些方法可以找出进程 I/O 吞吐量。
iotop - 它是一个类似于 top/iftop 的实用程序,用于显示进程 I/O 吞吐量。
在指出哪个进程有大量 I/O 后,使用以下内容找出正在使用的文件
lsof -c <process name>
Run Code Online (Sandbox Code Playgroud)
这应该缩小范围并帮助确定来源。