五种方法top命令、vmstat命令、iostat命令、iotop命令、ptioprofile命令(附安装包和使用方法)一、top命令 top11:41:22up51min,2users,loadaverage:0。01,0。04,0。01 Tasks:130total,1running,129sleeping,0stopped,0zombie Cpu(s):0。2us,0。1sy,0。0ni,99。2id,0。4wa,0。0hi,0。0si,0。0st Mem:4151760ktotal,2284628kused,1867132kfree,47892kbuffers Swap:4192956ktotal,0kused,4192956kfree,2145020kcached 分析:查看0。4wa这里,IO等待所占用的CPU时间的百分比,高过30时IO压力高 具体的解释如下: Tasks:130total进程总数 1running正在运行的进程数 129sleeping睡眠的进程数 0stopped停止的进程数 0zombie僵尸进程数 Cpu(s): 0。2us用户空间占用CPU百分比 0。1sy内核空间占用CPU百分比 0。0ni用户进程空间内改变过优先级的进程占用CPU百分比 99。2id空闲CPU百分比 0。4wa等待输入输出的CPU时间百分比 0。0hi 0。0si 0。4wa的百分比可以大致的体现出当前的磁盘io请求是否频繁。如果wa的数量比较大,说明等待输入输出的的io比较多 需要的小伙伴私信回复内核免费领取二、vmstat命令 命令:vmstat25(每两秒执行一次,执行5次) vmstat参数解释: Procs r:等待运行的进程数 b:处在非中断睡眠状态的进程数 Memory swpd:虚拟内存使用情况,单位:KB free:空闲的内存,单位KB buff:被用来做为缓存的内存数,单位:KB Swap si:从磁盘交换到内存的交换页数量,单位:KB秒 so:从内存交换到磁盘的交换页数量,单位:KB秒 IO bi:发送到块设备的块数,单位:块秒 bo:从块设备接收到的块数,单位:块秒 System in:每秒的中断数,包括时钟中断 cs:每秒的环境(上下文)切换次数 CPU(按CPU的总使用百分比来显示) us:CPU使用时间 sy:CPU系统使用时间 id:闲置时间 三、iostat使用 安装命令:yuminstallsysstat 使用iostatdk2查看IO情况: k:已kb为单位显示读写信息 m:已mb为单位显示读写信息 使用iostatx5查看IO情况: x:更详细的io设备统计信息 选项说明rrqms每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并wrqms每秒对该设备的写请求被合并次数rs每秒完成的读次数ws每秒完成的写次数rkBs每秒读数据量(kB为单位)wkBs每秒写数据量(kB为单位)avgrqsz平均每次IO操作的数据量(扇区数为单位)avgqusz平均等待处理的IO请求队列长度await平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)svctm平均每次IO请求的处理时间(毫秒为单位)util采用周期内用于IO操作的时间比率,即IO队列非空的时间比率ps:util:一秒中有百分之多少的时间用于IO操作,或者说一秒中有多少时间IO队列是非空的。即delta(use)s1000(因为use的单位为毫秒) 如果util接近100,说明产生的IO请求太多,IO系统已经满负荷,该磁盘可能存在瓶颈。四、iotop命令 安装命令:yuminstalliotop 查看哪个线程耗IO比较高、按o只显示有磁盘IO活动的进程。 各个参数说明:o,only只显示正在产生IO的进程或线程。除了传参,可以在运行过程中按o生效。b,batch非交互模式,一般用来记录日志。nNUM,iterNUM设置监测的次数,默认无限。在非交互模式下很有用。dSEC,delaySEC设置每次监测的间隔,默认1秒,接受非整形数据例如1。1。pPID,pidPID指定监测的进程线程。uUSER,userUSER指定监测某个用户产生的IO。P,processes仅显示进程,默认iotop显示所有线程。a,accumulated显示累积的IO,而不是带宽。k,kilobytes使用kB单位,而不是对人友好的单位。在非交互模式下,脚本编程有用。t,time加上时间戳,非交互非模式。q,quiet禁止头几行,非交互模式。有三种指定方式。q只在第一次监测时显示列名qq永远不显示列名。qqq永远不显示IO汇总。交互按键:和top命令类似,iotop也支持以下几个交互按键。left和right方向键:改变排序。r:反向排序。o:切换至选项only。p:切换至processes选项。a:切换至accumulated选项。q:退出。i:改变线程的优先级。五、ptioprofile命令 安装步骤: 1、安装依赖包:yuminstallyperlperlIOSocketSSLperlDBDMySQLperlTimeHiResperlDigestMD5perlExtUtilsMakeMaker 2、下载:wgethttps:www。percona。comdownloadsperconatoolkit3。0。13binaryredhat7x8664perconatoolkit3。0。131。el7。x8664。rpm 3、安装rpm包:rpmivhperconatoolkit3。0。131。el7。x8664。rpm 使用方法: ptioprofileprofilepid1236cellsizes ptioprofile的原理是对某个pid附加一个strace进程进行IO分析。 对于定位问题更有用的是通过IO的吞吐量来进行定位。使用参数cellsizes,该参数将结果已Bs的方式展示出来 从上图可以看出IO负载的主要来源是jetty。 并且压力主要集中在读取上。