Linux系统性能监控之I/O

I/O子系统是操作系统中最慢的部分。

disk I/O

  • df命令
    检查文件系统的磁盘空间占用情况

       df -ha
  • du 命令
    du能以指定的目录下的子目录为单位,显示每个目录内所有档案所占用的磁盘空间大小

     du -ah
  • iostat命令
    常用参数 -x -d

    Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
    xvda              0.00    10.60  0.25 15.98     9.30   212.60    13.67     0.22   13.63   0.74   1.21

    rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
    wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
    r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s
    w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s
    rsec/s: 每秒读扇区数。即 delta(rsect)/s
    wsec/s: 每秒写扇区数。即 delta(wsect)/s
    rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
    wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算)
    avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
    avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
    await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
    svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
    %util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)
    如果%util接近100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘
    可能存在瓶颈;idle小于70% IO压力就较大了,一般读取速度有较多的wait。
    同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)

  • sar命令

     sar -b

network

  • netstat命令
    netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
    常见参数
    -a (all)显示所有选项,默认不显示LISTEN相关
    -t (tcp)仅显示tcp相关选项
    -u (udp)仅显示udp相关选项
    -n 拒绝显示别名,能显示数字的全部转化成数字。
    -l 仅列出有在 Listen (监听) 的服務状态
    -p 显示建立相关链接的程序名
    -r 显示路由信息,路由表
    -e 显示扩展信息,例如uid等
    -s 按各个协议进行统计
    -c 每隔一个固定时间,执行该netstat命令。
    提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到

    netstat -anpt
  • sar命令

     sar -n SOCK
    04:15:01 PM    totsck    tcpsck    udpsck    rawsck   ip-frag    tcp-tw
    04:16:01 PM     24002      1931         2         0         0     42858

    totsck: Total number of sockets used by the system.
    tcpsck: Number of TCP sockets currently in use.

    sar -n DEV
    05:00:01 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
    05:01:01 PM        lo     10.36     10.36      6.23      6.23      0.00      0.00      0.00

    rxpck/s Total number of packets received per second.
    txpck/s Total number of packets transmitted per second.
    rxbyt/s Total number of bytes received per second.
    txbyt/s Total number of bytes transmitted per second.

  • lsof命令
    可以列出被进程打开的文件的信息

    lsof
    COMMAND     PID        USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
    init          1        root  cwd       DIR                8,1     4096          2 /
    init          1        root  rtd       DIR                8,1     4096          2 /
    init          1        root  txt       REG                8,1   150584     654127 /sbin/init
    udevd       415        root    0u      CHR                1,3      0t0       6254 /dev/null
    udevd       415        root    1u      CHR                1,3      0t0       6254 /dev/null
    udevd       415        root    2u      CHR                1,3      0t0       6254 /dev/null

    lsof输出各列信息的意义如下:
    COMMAND:进程的名称 PID:进程标识符
    USER:进程所有者
    FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等 TYPE:文件类型,如DIR、REG等
    DEVICE:指定磁盘的名称
    SIZE:文件的大小
    NODE:索引节点(文件在磁盘上的标识)
    NAME:打开文件的确切名称
    Type: 文件类型。文件和目录分别称为 REG 和 DIR。而CHR 和 BLK,分别表示字符和块设备;或者 UNIX、FIFO 和 IPv4,分别表示 UNIX 域套接字、先进先出 (FIFO) 队列和网际协议 (IP) 套接字。

    lsof -p 1234           列出进程号为1234的进程所打开的文件
    lsof +d /usr/local/    显示目录下被进程开启的文件
    lsof +D /usr/local/    同上,但是会搜索目录下的目录,时间较长
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值