1,top

  • 常用选项:
    -p 持续跟踪某一进程的状态;
  • 常用操作指令:
    数字键1:展开所有cpu的状态;
    shift+< 或者 shift+> : 切换排序的参照字段,向左或者向右;
  • 特殊用法,用于持续跟踪:
    把输出结果重定向到文件:top -n 1 -b | head -30 > top.log

2,sar (由 sysstat 包提供,操作系统可能不自带)

  • sar命令可以监控的性能指标也很多,我习惯上用来监控网卡流量(-n):
  • 用法: sar -n EDEV 1(采样间隔) 10(采样次数)
  • -n DEV : 网络接口统计信息。
    -n EDEV : 网络接口错误。
    -n IP : IP数据报统计信息。
    -n EIP : IP错误统计信息。
    -n TCP : TCP统计信息。
    -n ETCP : TCP错误统计信息。
    -n SOCK : 套接字使用。
  • 此外: -u 选项监控cpu , -r 内存 , -d 磁盘io等;

3,iostat

  • 常用用法: iostat -dmx 1(采样间隔) 10(采样次数)
  • 输出样例:
    Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util
    sda 1.58 40.77 39.45 273.86 1.10 7.80 58.15 3.69 11.79 1.41 44.07
  • 后面3个指标: io延迟 、io等待时间 、io利用率
  • %util很大 超过80% 设备很忙
    await远大于svctm 延迟很大
    avgqu-sz 队列很长
    r/s,w/s,IO读写次数频繁
    IO等待时间占用百分比大 %iowait
    iowait% <20% 良好
    iowait% <35% 一般
    iowait% >50%
    svctm一般要小于await(因为同时等待的请求的等待时间被重复计算了),svctm的 大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会间接导致svctm的增加,一般svctm值在15以下会被认为是一个健康的数值。
    await的大小一般取决于服务时间(svctm)以及I/O队列的长度和I/O请求的发出模 式。如果svctm比较接近await,说明I/O几乎没有等待时间;
    如果await远大于svctm,说明I/O队列太长,应用得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核elevator算法,优化应用,或者升级CPU。

4,smartctl

  • 查看磁盘smart信息:smartctl -a /dev/sda
  • 查看磁盘健康信息: smartctl -H /dev/sda
  • 对磁盘进行自检: smartctl -C -t short(设置为long耗时较长) /dev/sda
  • 查看自检信息: smartctl -l selftest /dev/sda

5,pidstat

  • 查看进程使用资源的情况
  • 常用用法,每秒一次查看httpd进程的IO使用情况(-d):
    pidstat -d 1 -p 9323 或者:
    pidstat -d 1 | grep httpd
  • 此外,类似的,也支持 -u CPU , -r 内存;