1,top
- 常用选项:
-p <pid> 持续跟踪某一进程的状态;
- 常用操作指令:
数字键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 内存;