当前位置:首页 > 运维 > 正文内容

linux中如何查看系统io使用情况

phpmianshi6年前 (2016-04-18)运维742

linux中查看IO的方法主要有下面几种方法:


1. top   %wa    的含义是等待输入输出的CPU时间百分比,这个数字越高说明越多的CPU资源在等待I/O权限

top - 18:38:17 up 13:37,  2 users,  load average: 0.18, 0.35, 0.27
Tasks: 161 total,   1 running, 160 sleeping,   0 stopped,   0 zombie
Cpu(s): 13.8%us,  4.0%sy,  0.0%ni, 80.4%id,  1.3%wa,  0.0%hi,  0.3%si,  0.0%st
Mem:   3922696k total,  3681552k used,   241144k free,   378892k buffers
Swap:  2097148k total,    84536k used,  2012612k free,  1126236k cached


2. top可以查看一个整体的io情况,但是没法定位哪个磁盘出现io问题了,我们可以结合iostat查看


语法:iostat [ options ] [ <interval> [ <count> ] ]   interval 采样间隔  count采样次数  I/O statistics(输入/输出统计)的缩写

options 说明:

-c CPU的使用情况,单独显示avg-cpu部分

-d 磁盘的使用情况,单独显示Device部分

-x  更详细的io统计信息 在分析io瓶颈时,一般都会开启-x选项

-k  以kB为单位显示

-m  以mB为单位显示

注意,第1次采样信息与单独执行iostat的效果一样,为从系统开机到当前执行时刻的统计信息。


iostat用于输出CPU和磁盘I/O相关的统计信息,单独执行iostat,显示的结果为从系统开机到当前执行时刻的统计信息

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          11.28    0.00    2.26    0.75    0.00   85.71

Device:   rrqm/s wrqm/s  r/s  w/s    rkB/s  wkB/s avgrq-sz avgqu-sz   await r_await w_await svctm  %util
vda     0.00  0.00   0.00  0.00    0.00  0.00  0.00   0.00    0.00  0.00   0.00  0.00   0.00
vdb     0.00  0.00   2.00  0.00    8.00  0.00  8.00   0.04     19.00  19.00  0.00  19.00   3.80
scd0     0.00  0.00   0.00  0.00    0.00  0.00  0.00   0.00    0.00  0.00   0.00  0.00   0.00


选项说明
%userCPU在用户态执行进程的时间百分比。
%niceCPU在用户态模式下,用于nice操作,所占用CPU总时间的百分比
%systemCPU处在内核态执行进程的时间百分比
%iowaitCPU用于等待I/O操作占用CPU总时间的百分比
%steal管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟CPU的百分比
%idleCPU空闲时间百分比

1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈 
2. 若 %idle 的值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量 

3. 若 %idle 的值持续低于1,则系统的CPU处理能力相对较低,表明系统中最需要解决的资源是 CPU


选项说明
rrqm/s每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
wrqm/s每秒对该设备的写请求被合并次数
r/s每秒完成的读次数
w/s每秒完成的写次数
rkB/s每秒读数据量(kB为单位)
wkB/s每秒写数据量(kB为单位)
avgrq-sz平均每次IO操作的数据量(扇区数为单位)
avgqu-sz平均等待处理的IO请求队列长度
await

平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)

 一般的系统IO响应时间应该低于5ms,如果大于10ms就比较大了

svctm

平均每次IO请求的处理时间(毫秒为单位)

如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好

如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。

%util

采用周期内用于IO操作的时间比率,即IO队列非空的时间比率

例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%

所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了

平时我们主要关注这三个参数:await  svctm $util


3.我们更关注的是哪个进程io出现了问题,这时候使用iotop查找

iotop

Actual DISK READ:       7.82 K/s | Actual DISK WRITE:      15.64 K/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND          
 3981 be/4 root        7.82 K/s    0.00 B/s  0.00 %  0.21 % YDService
29094 be/4 www         0.00 B/s   19.55 K/s  0.00 %  0.00 % nginx: wo~er process
29095 be/4 www         0.00 B/s   31.27 K/s  0.00 %  0.00 % nginx: wo~er process


4.查找哪个文件引起的I/Owait    


lsof -p 29093


可以查看哪些文件正在读写。


更多lsof用法参考:https://phpmianshi.com/?id=103


5.查看历史io情况  比如查看11号的


sar -b -f  /var/log/sa11
sar -u -f /var/log/sa11
sar -d -f /var/log/sa11


更多sar用法参考:https://phpmianshi.com/?id=107


版权声明:本文由PHP面试资料网发布,如需转载请注明出处。
分享给朋友:

相关文章

记一次laravel项目因opcache导致的include过慢问题

问题表现 php-fpm-slow.log 大量如下日志:script_filename = /data/nginx/webroot/app-20200611-160330-feb...

Certbot-免费的https证书

什么是HTTPS?HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传...

linux中磁盘被占用找不到占用文件

1、用df 检查发现磁盘占用过高[root@VM_0_15_centos ~]# df -h2、用du检查发现各目录占用的空间都很少,有约10G的空间找不到了[root@...

nginx实现高并发的优化手段有哪些

Nginx 是如何实现高并发的?异步,非阻塞,使用了epoll 和大量的底层代码优化。如果一个server采用一个进程负责一个request的方式,那么进程数就是并发数。正常情况下,会有很多进程一直在...

linux中netstat和ss命令详解

由于nio的普及,ck10k的问题已经成为过去式。现在随便一台服务器,都可以支持数十万级别的连接了。那么10万的连接需要多少资源呢?由于一个连接都是文件句柄,所以需要文件描述符数量支持才行,每一个so...

DNS原理什么叫域名劫持和域名欺骗/域名污染

给大家扫盲一下 DNS 的常识。既然是扫盲 DNS,也顺带说说“域名劫持”和“域名污染”这两个很容易混淆的概念。提醒一下:这两者的其中之一是 GFW 的大杀器,爱翻墙的同学有必要了解。DNS 是啥?D...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。