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用于查看网络的状态等。

原文地址:https://www.cnblogs.com/String-song/p/15222979.html