1. uptime
该命令可以大致的看出计算机的整体负载情况,load average后的数字分别表示计算机在1min、5min、15min内的平均负载。
2. dmesg | tail
打印内核环形缓存区中的内容,可以用来查看一些错误;
上面的例子中,显示进程18694 因内存越界被kill掉以及TCP request被丢弃的错误。通过dmesg可以快速判断是否有导致系统性能异常的问题。
3. vmstat 1
打印进程、内存、交换分区、IO和CPU等的统计信息;
vmstat的格式如下:
vmstat [options] [delay [count]]
vmstat第一次输出表示从开机到vmstat运行时的平均值;剩余输出的都是在指定的时间间隔内的平均值,上述例子中delay的值设置为1,除第一次以外,剩余的都是1秒统计一次,count未设置,将会一直循环打印。
上述的例子中delay设置为10,count设置为3,表示每行打印10秒内的平均值,只打印3次。
需要检查的列:
1.r:表示正在运行或者等待CPU调度的进程数。因为该列数据不包含I/O的统计信息,因此可以用来检测CPU是否饱和。若r列中的数字大于CPU的核数,表示CPU已经处于饱和状态。
2.free:当前剩余的内存;
3.si, so:交换分区换入和换出的个数,若换入换出个数大于0,表示内存不足;
4.us, sy, id, wa:CPU的统计信息,分别表示user time、system time(kernel)、idle、wait I/O。I/O处理所用的时间包含在system time中,因此若system time超过20%,则I/O可能存在瓶颈或异常;
4. mpstat -P ALL 1
该命令用于每秒打印一次每个CPU的统计信息,可用于查看CPU的调度是否均匀。
5. pidstat 1
该命令用于打印各个进程对CPU的占用情况,类似 top命令中显示的内容。pidstat的优势在于,可以滚动的打印进程运行情况,而不像 top那样会清屏。
上述例子中,%CPU中两个java进程的cpu利用率分别达到了1590%和1573%,表示java进程占用了16颗CPU。
6. iostat -xz 1
类似vmstat,第一次输出的是从系统开机到统计这段时间的采样数据;
检查列:
r/s, w/s, rkB/s, wkB/s,表示每秒向I/O设备发出的reads、writes、read Kbytes、write Kbytes的数量。 await,表示应用程序排队等待和被服务的平均I/O时间,该值若大于预期的时间,这表示I/O设备处于饱和状态或者异常。 avgqu-sz,表示请求被发送给I/O设备的平均时间,若该值大于1,则表示I/O设备可能已经饱和; %util,每秒设备的利用率;若该利用率超过60%,则表示设备出现性能异常;
7. free -m
检查的列:
buffers:For the buffer cache, used for block device I/O. cached:For the page cache, used by file systems. 若buffers和cached接近0,说明I/O的使用率过高,系统存在性能问题。 Linux中会用 free内存作为cache,若应用程序需要分配内存,系统能够快速的将cache占用的内存回收,因此 free的内存包含cache占用的部分。
8. sar -n DEV 1
sar是System Activity Reporter的缩写,系统活动状态报告。
-n { keyword [,…] | ALL },用于报告网络统计数据。keyword可以是以下的一个或者多个: DEV, EDEV, NFS, NFSD, SOCK, IP, EIP, ICMP, EICMP, TCP, ETCP, UDP, SOCK6, IP6, EIP6, ICMP6, EICMP6 和UDP6。 -n DEV 1, 每秒统计一次网络的使用情况; -n EDEV 1,每秒统计一次错误的网络信息;
IFACE ,网络接口名称; rxpck/s ,每秒接收到包数; txpck/s ,每秒传输的报数;(transmit packages) rxkB/s ,每秒接收的千字节数; txkB/s ,每秒发送的千字节数; rxcmp/s ,每秒接收的压缩包的数量; txcmp/s ,每秒发送的压缩包的数量; rxmcst/s,每秒接收的组数据包数量;
9. sar -n TCP,ETCP 1
该命令可以用于粗略的判断网络的吞吐量,如发起的网络连接数量和接收的网络连接数量;
TCP, 报告关于TCPv4网络流量的统计信息;
ETCP, 报告有关TCPv4网络错误的统计信息;
检测的列:
active/s: Number of locally-initiated TCP connections per second (e.g., via connect()),发起的网络连接数量; passive/s: Number of remotely-initiated TCP connections per second (e.g., via accept()),接收的网络连接数量; retrans/s: Number of TCP retransmits per second,重传的数量;
10. top
top命令包含更多的指标统计,相当于一个综合命令。
11. 总结
以上展示了各个命令的主要作用,如使用vmstat查看系统的整体性能,mpstat用于查看cpu的性能,pidstat用于查看进程的状态,iostat用于查看io的状态,free用于查看内存的状态,sar用于查看网络的状态等。