Linux性能检测常用的10个基本命令
一、常用检测性能的10个基本命令
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次。
需要检查的列:
- r:表示正在运行或者等待CPU调度的进程数。因为该列数据不包含I/O的统计信息,因此可以用来检测CPU是否饱和。若r列中的数字大于CPU的核数,表示CPU已经处于饱和状态。
- free:当前剩余的内存;
- si, so:交换分区换入和换出的个数,若换入换出个数大于0,表示内存不足;
- 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用于查看网络的状态等。