转:查看占io的进程

查找是那个进程的io高,一直cpu等待。切换到root权限用户。执行脚本a.sh

#!/bin/sh

/etc/init.d/syslog stop

echo 1 > /proc/sys/vm/block_dump

sleep 60

dmesg | awk '/(READ|WRITE|dirtied)/ {process[$2]++} END {for (x in process) \

print process[x],x}' |sort -nr |awk '{print $2 " " $1}' | \

head -n 10

echo 0 > /proc/sys/vm/block_dump

/etc/init.d/syslog start

##########end###########

显示结果如下:

Shutting down kernel logger: [  OK  ]
Shutting down system logger: [  OK  ]
kjournald(1039): 372
java(16517): 200  // 进程名(线程号):io量
java(13590): 157
java(4126): 150
java(16486): 148
java(13620): 113
java(13602): 95
java(4214): 90
java(3611): 90
java(16497): 81
Starting system logger: [  OK  ]
Starting kernel logger: [  OK  ]

 

显示的编号是线程号(thread) ,不是进程号(pid)

需要通thread id 找到 pid ,方法如下:需要加入-L参数

ps -Lef|grep  tid

 

这样就可以查看出是那个应用在大量的操作磁盘了

 

简化操作步骤:
echo 1 > /proc/sys/vm/block_dump;
sleep 60

dmesg | awk '/(READ|WRITE|dirtied)/ {process[$2]++} END {for (x in process) \

print process[x],x}' |sort -nr |awk '{print $2 " " $1}' | \

head -n 10;

echo 0 > /proc/sys/vm/block_dump;


找出进程
ps -Lef|grep  tid

 

 

iostat -x 1  第一行是统计信息,是没用的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值