我在一台服务器上的 IO 读取速度稳定在 1.4 兆字节/秒(见下面的 iostat 输出)。我该怎么做才能找出导致此问题的过程?我已经尝试过 iotop 和 htop,但无法用它们查明问题所在:
Linux 2.6.35.4-x86_64-linode16 (la-machine) 02/16/11 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.16 0.01 0.11 0.68 0.01 99.03
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
xvda 42.29 1.39 0.08 568159 30959
xvdb 0.45 0.00 0.00 988 1202
有没有关于使用 htop/iotop 或其他工具来帮助我找出哪个进程正在占用磁盘的提示?(这是当前流量为 0 的服务器)。
谢谢你!
答案1
http://www.linuxinsight.com/proc_sys_vm_block_dump.html
设置vm.block_dump
一秒钟,然后立即关闭(sysctl -w ... ; sleep 1; sysctl -w ...
)。dmesg
然后显示所有细节。
答案2
由于您已经使用过 iotop,我不确定它有多大用处,但您可以使用 systemtap
stap-v iotop.stp
它会给你输出
Process KB Read KB Written
Xorg 21 0
crond 10 0
wfica 2 0
答案3
尝试使用流程会计。
像 atop 这样的工具与进程记帐结合使用将能够向您显示哪些进程使用磁盘 I/O 最多。
您还可以检查“sa”命令行工具来解释进程记帐信息并按(平均)I / O操作数对进程进行排序
答案4
好吧,您可以先运行 lsof 来缩小哪些进程在 /dev/xvda 上的文件系统上打开了文件的范围。检查您的/etc/fstab
文件系统以确定是哪个文件系统。