常用Linux下排查服务器性能命令

1.vmstat

说明:vmstat会不停输出系统重要的指标信息。

r:等待cpu资源的进程数。如果这个数值大于CPU的个数,则CPU使用已经饱和。

free:内存相关信息。

si, so:交换区写入和读取的数量。如果这个数据不为0,说明系统已经在使用交换区(swap),机器物理内存已经不足。

us, sy, id, wa, st:这些都代表了CPU时间的消耗,它们分别表示用户时间(user)、系统时间(sys)、空闲时间(idle)、IO等待时间(wait)和被偷走的时间(stolen,一般被其他虚拟机消耗)
每隔1秒钟统计一次:

vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0 133120 205864 198852 984748    0    0     0     0 1158 3233  1  0 99  0  0
 0  0 133120 205864 198852 984712    0    0     0     0  835 2196  0  0 99  0  0
 0  0 133120 205336 198852 985260    0    0     0    24 1284 4281  1  0 99  0  0
 0  0 133120 205676 198860 984784    0    0     0    20  842 2021  0  0 99  0  0
 0  0 133120 204080 198868 986464    0    0     0    52 1624 6759  1  1 98  0  0
 0  0 133120 204136 198868 986340    0    0     0     0 1016 2648  0  0 99  0  0
 0  0 133120 204328 198868 986164    0    0     0     0  892 2633  0  0 99  0  0
 0  0 133120 204312 198868 986188    0    0     0     8  701 1345  1  0 99  0  0
 0  0 133120 205224 198868 985284    0    0     0     0 1073 2743  1  0 99  0  0
 0  0 133120 204512 198876 986440    0    0     0    64 1732 5019  2  1 98  0  0
 0  0 133120 203100 198876 987724    0    0     0     0 1102 2542  2  0 98  0  0
 0  0 133120 203260 198876 987392    0    0     0     0  627 1139  0  0 100  0  0
 0  0 133120 204468 198876 986148    0    0     0     0  563 1231  0  0 100  0  0

2.mpstat

mpstat是Multiprocessor Statistics的缩写,是实时监控工具,报告与cpu的一些统计信息这些信息都存在/proc/stat文件中,在多CPU系统里,其不但能查看所有的CPU的平均状况的信息,而且能够有查看特定的cpu信息,mpstat最大的特点是:可以查看多核心的cpu中每个计算核心的统计数据;而且类似工具vmstat只能查看系统的整体cpu情况。

说明:查看CPU的使用情况。如果单个CPU使用率非常大,则有可能某个线程比较繁忙。

在线安装:sudo apt install sysstat

查看多核CPU每个计算核心的使用情况, mpstat -P ALL 1;

查看多核cpu当前运行的状况,每两秒更新一次,一共更新5次,mpstat 2 5.

root@localhost:~$ mpstat -P ALL 1
Linux 4.18.0-25-generic (root) 	2019年07月20日 	_x86_64_	(12 CPU)

16时09分09秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
16时09分10秒  all    0.33    0.00    0.17    0.00    0.00    0.00    0.00    0.00    0.00   99.50
16时09分10秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
16时09分10秒    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
16时09分10秒    2    1.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   98.00
16时09分10秒    3    0.99    0.00    0.99    0.00    0.00    0.00    0.00    0.00    0.00   98.02
16时09分10秒    4    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
16时09分10秒    5    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
16时09分10秒    6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
16时09分10秒    7    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
16时09分10秒    8    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
16时09分10秒    9    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
16时09分10秒   10    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
16时09分10秒   11    2.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   98.00
root@localhost:~$ mpstat 2 5
Linux 4.18.0-25-generic (lvxianrong) 	2019年07月20日 	_x86_64_	(12 CPU)

16时13分46秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
16时13分48秒  all    0.38    0.00    0.21    0.08    0.00    0.04    0.00    0.00    0.00   99.29
16时13分50秒  all    0.50    0.00    0.13    0.00    0.00    0.00    0.00    0.00    0.00   99.37
16时13分52秒  all    0.42    0.00    0.13    0.00    0.00    0.00    0.00    0.00    0.00   99.46
16时13分54秒  all    0.29    0.00    0.04    0.38    0.00    0.00    0.00    0.00    0.00   99.29
16时13分56秒  all    0.42    0.00    0.08    0.00    0.00    0.00    0.00    0.00    0.00   99.50
Average:     all    0.40    0.00    0.12    0.09    0.00    0.01    0.00    0.00    0.00   99.38
root@localhost:~$ 

%user      在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程  (usr/total)*100
%nice      在internal时间段里,nice值为负进程的CPU时间(%)   (nice/total)*100
%sys       在internal时间段里,内核时间(%)       (system/total)*100
%iowait    在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100
%irq         在internal时间段里,硬中断时间(%)     (irq/total)*100
%soft       在internal时间段里,软中断时间(%)     (softirq/total)*100
%idle       在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) (idle/total)*100。

 

3.pidstat

说明:pidstat命令动态输出进程的CPU占用率。 下列表示每隔1秒刷新一次。

root@localhost:~$ pidstat 1
Linux 4.18.0-25-generic (root) 	2019年07月20日 	_x86_64_	(12 CPU)

16时19分57秒   UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
16时19分58秒     0       796    3.96    0.00    0.00    0.00    3.96     4  udisksd
16时19分58秒   116       797    0.00    0.99    0.00    0.00    0.99    11  avahi-daemon
16时19分58秒  1000      1249    0.99    0.00    0.00    0.00    0.99     1  Xorg
16时19分58秒  1000      1379    0.00    0.99    0.00    0.00    0.99    11  gnome-shell
16时19分58秒  1000      1448    0.99    0.00    0.00    0.00    0.99     1  gvfs-udisks2-vo
16时19分58秒  1000      1719    0.99    0.00    0.00    0.00    0.99     4  gnome-terminal-
16时19分58秒  1000      5062    0.00    0.99    0.00    0.00    0.99     0  java
16时19分58秒  1000     27590    0.99    0.99    0.00    0.00    1.98     2  java

pidstat指令详解:

root@localhost:~$ pidstat -help
Usage: pidstat [ options ] [ <interval> [ <count> ] ] [ -e <program> <args> ]
Options are:
[ -d ] [ -H ] [ -h ] [ -I ] [ -l ] [ -R ] [ -r ] [ -s ] [ -t ] [ -U [ <username> ] ]
[ -u ] [ -V ] [ -v ] [ -w ] [ -C <command> ] [ -G <process_name> ] [ --human ]
[ -p { <pid> [,...] | SELF | ALL } ] [ -T { TASK | CHILD | ALL } ]
root@localhost:~$

常用的参数:

  • -u:默认的参数,显示各个进程的cpu使用统计
  • -r:显示各个进程的内存使用统计
  • -d:显示各个进程的IO使用情况
  • -p:指定进程号
  • -w:显示每个进程的上下文切换情况
  • -t:显示选择任务的线程的统计信息外的额外信息
  • -T { TASK | CHILD | ALL }
    这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。
    注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。
  • -V:版本号
  • -h:在一行上显示了所有活动,这样其他程序可以容易解析。
  • -I:在SMP环境,表示任务的CPU使用率/内核数量
  • -l:显示命令名和所有参数。

 

查看所有进程的 CPU 使用情况( -u -p ALL)

pidstat
pidstat -u -p ALL

pidstat 和 pidstat -u -p ALL 是等效的。
pidstat 默认显示了所有进程的cpu使用率。

root@localhost:~$ pidstat
Linux 4.18.0-25-generic (root) 	2019年07月20日 	_x86_64_	(12 CPU)

16时28分44秒   UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
16时28分44秒     0         1    0.00    0.04    0.00    0.04    0.04     6  systemd
16时28分44秒     0         2    0.00    0.00    0.00    0.00    0.00     3  kthreadd
16时28分44秒     0         9    0.00    0.00    0.00    0.00    0.00     0  ksoftirqd/0
16时28分44秒     0        10    0.00    0.08    0.00    0.05    0.08    11  rcu_sched
16时28分44秒     0        13    0.00    0.00    0.00    0.00    0.00     0  watchdog/0
16时28分44秒     0        16    0.00    0.00    0.00    0.00    0.00     1  watchdog/1
16时28分44秒     0        18    0.00    0.00    0.00    0.00    0.00     1  ksoftirqd/1
16时28分44秒     0        22    0.00    0.00    0.00    0.00    0.00     2  watchdog/2
16时28分44秒     0        24    0.00    0.00    0.00    0.00    0.00     2  ksoftirqd/2
16时28分44秒     0        28    0.00    0.00    0.00    0.00    0.00     3  watchdog/3
16时28分44秒     0        30    0.00    0.00    0.00    0.00    0.00     3  ksoftirqd/3
16时28分44秒     0        34    0.00    0.00    0.00    0.00    0.00     4  watchdog/4
16时28分44秒     0        36    0.00    0.00    0.00    0.00    0.00     4  ksoftirqd/4
16时28分44秒     0        40    0.00    0.00    0.00    0.00    0.00     5  watchdog/5
16时28分44秒     0        42    0.00    0.00    0.00    0.00    0.00     5  ksoftirqd/5
16时28分44秒     0        46    0.00    0.00    0.00    0.00    0.00     6  watchdog/6
16时28分44秒     0        48    0.00    0.00    0.00    0.00    0.00     6  ksoftirqd/6

详细说明:

  • PID:进程ID
  • %usr:进程在用户空间占用cpu的百分比
  • %system:进程在内核空间占用cpu的百分比
  • %guest:进程在虚拟机占用cpu的百分比
  • %CPU:进程占用cpu的百分比
  • CPU:处理进程的cpu编号
  • Command:当前进程对应的命令

内存使用情况统计(-r)

pidstat -r

使用-r选项,pidstat将显示各活动进程的内存使用统计:

root@localhost:~$ pidstat -r -p 28515 1 3
Linux 4.18.0-25-generic (root) 	2019年07月20日 	_x86_64_	(12 CPU)

16时33分16秒   UID       PID  minflt/s  majflt/s     VSZ     RSS   %MEM  Command
16时33分17秒  1000     28515      0.00      0.00  573872   61336   0.77  my_test
16时33分18秒  1000     28515      0.00      0.00  573872   61336   0.77  my_test
16时33分19秒  1000     28515      0.00      0.00  573872   61336   0.77  my_test
Average:     1000     28515      0.00      0.00  573872   61336   0.77  my_test
root@localhost:~$ 
  • PID:进程标识符
  • Minflt/s:任务每秒发生的次要错误,不需要从磁盘中加载页
  • Majflt/s:任务每秒发生的主要错误,需要从磁盘中加载页
  • VSZ:虚拟地址大小,虚拟内存的使用KB
  • RSS:常驻集合大小,非交换区五里内存使用KB
  • Command:task命令名

显示各个进程的IO使用情况(-d)

pidstat -d
root@localhost:~$ pidstat -d -p 28515
Linux 4.18.0-25-generic (root) 	2019年07月20日 	_x86_64_	(12 CPU)

16时37分02秒   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
16时37分02秒  1000     28515      0.02      0.01      0.00      51  my_test
root@localhost:~$ pidstat -d
Linux 4.18.0-25-generic (root) 	2019年07月20日 	_x86_64_	(12 CPU)

16时37分10秒   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
16时37分10秒     0         1     -1.00     -1.00     -1.00     501  systemd
16时37分10秒     0       301     -1.00     -1.00     -1.00   89978  jbd2/sda7-8
16时37分10秒     0       334     -1.00     -1.00     -1.00    2457  systemd-journal
16时37分10秒     0       366     -1.00     -1.00     -1.00     831  systemd-udevd
16时37分10秒     0       375     -1.00     -1.00     -1.00     696  loop0

报告IO统计显示以下信息:

  • PID:进程id
  • kB_rd/s:每秒从磁盘读取的KB
  • kB_wr/s:每秒写入磁盘KB
  • kB_ccwr/s:任务取消的写入磁盘的KB。当任务截断脏的pagecache的时候会发生。
  • COMMAND:task的命令名

 

显示每个进程的上下文切换情况(-w)

pidstat -w -p 28515
root@localhost:~$ pidstat -w -p 28515
Linux 4.18.0-25-generic (root) 	2019年07月20日 	_x86_64_	(12 CPU)

16时40分51秒   UID       PID   cswch/s nvcswch/s  Command
16时40分51秒  1000     28515      0.03      0.00  my_test
  • PID:进程id
  • Cswch/s:每秒主动任务上下文切换数量
  • Nvcswch/s:每秒被动任务上下文切换数量
  • Command:命令名

 

显示选择任务的线程的统计信息外的额外信息 (-t)

pidstat -t -p 28515
root@localhost:~$ pidstat -t -p 28515
Linux 4.18.0-25-generic (root) 	2019年07月20日 	_x86_64_	(12 CPU)

16时42分21秒   UID      TGID       TID    %usr %system  %guest   %wait    %CPU   CPU  Command
16时42分21秒  1000     28515         -    0.02    0.01    0.00    0.00    0.03     9  my_test
16时42分21秒  1000         -     28515    0.00    0.00    0.00    0.00    0.00     9  |__my_test
16时42分21秒  1000         -     28516    0.01    0.00    0.00    0.00    0.01     2  |__my_test
16时42分21秒  1000         -     28517    0.01    0.00    0.00    0.00    0.01     5  |__my_test
16时42分21秒  1000         -     28518    0.00    0.00    0.00    0.00    0.00     5  |__my_test
  • TGID:主线程的表示
  • TID:线程id
  • %usr:进程在用户空间占用cpu的百分比
  • %system:进程在内核空间占用cpu的百分比
  • %guest:进程在虚拟机占用cpu的百分比
  • %CPU:进程占用cpu的百分比
  • CPU:处理进程的cpu编号
  • Command:当前进程对应的命令

 

4.iostat

iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。

说明:iostat主要检查磁盘的IO情况。

r/s, w/s, rkB/s, wkB/s:分别表示每秒读写次数和每秒读写数据量。

await:IO操作的平均等待时间,单位是毫秒。如果这个数值过大,可能是硬件设备遇到了瓶颈或者出现故障。

avgqu-sz:向设备发出的请求平均数量。如果这个数值大于1,可能是硬件设备已经饱和,

%util:设备利用率。这个数值表示设备的繁忙程度,经验值是如果超过60,可能会影响IO性能。如果%util接近100%,说明产生的I/O请求太多,I/O系统已经满负荷。

%idle:CPU空闲时间百分比。这个值高但系统响应慢时,可能是CPU等待分配内存,应加大内存容量。

如果%idle值持续低于10,表明CPU处理能力相对较低,系统中最需要解决的资源是CPU。%idle小于70% IO压力就较大了,一般读取速度有较多的wait。

 

root@localhost:~$ iostat -zx 1 
Linux 4.18.0-25-generic (root) 	2019年07月20日 	_x86_64_	(12 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.05    0.00    0.27    0.05    0.00   98.63

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
loop0            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00  169.27    0.00   0.00     2.83     0.00 169.95   0.00
loop1            0.00    0.00      0.01      0.00     0.00     0.00   0.00   0.00   11.69    0.00   0.00     2.54     0.00  10.92   0.00
loop2            0.00    0.00      0.01      0.00     0.00     0.00   0.00   0.00    8.24    0.00   0.00     1.37     0.00   8.27   0.00
loop3            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00   74.57    0.00   0.00     4.39     0.00  74.62   0.00
loop4            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00   81.40    0.00   0.00     4.69     0.00  81.50   0.00
loop5            0.00    0.00      0.01      0.00     0.00     0.00   0.00   0.00   12.65    0.00   0.00     2.94     0.00  12.62   0.00
loop6            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00  100.37    0.00   0.00     2.15     0.00 100.43   0.00
sda              1.19    1.60     29.87    172.80     0.05     1.34   3.67  45.52    7.06   96.60   0.17    25.01   107.77   3.05   0.85

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.33    0.00    0.08    0.08    0.00   99.50

 

5.free –m

说明:free命令主要查看使用的内存情况。 free 命令中的信息都来自于 /proc/meminfo 文件。

root@localhost:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:           7756        6374         250         252        1132         882
Swap:          2047         129        1918

 

输出参数说明:

  • Mem 行(第二行)是内存的使用情况。
  • Swap 行(第三行)是交换空间的使用情况。
  • total 列显示系统总的可用物理内存和交换空间大小。
  • used 列显示已经被使用的物理内存和交换空间。
  • free 列显示还有多少物理内存和交换空间可用使用。
  • shared 列显示被共享使用的物理内存大小。
  • buff/cache 列显示被 buffer 和 cache 使用的物理内存大小。
  • available 列显示还可以被应用程序使用的物理内存大小。

交换空间(swap space)

swap space 是磁盘上的一块区域,可以是一个分区,也可以是一个文件。所以具体的实现可以是 swap 分区也可以是 swap 文件。当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是常说的换出和换入。交换空间可以在一定程度上缓解内存不足的情况,但是它需要读写磁盘数据,所以性能不是很高。

现在的机器一般都不太缺内存,如果系统默认还是使用了 swap 是不是会拖累系统的性能?理论上是的,但实际上可能性并不是很大。并且内核提供了一个叫做 swappiness 的参数,用于配置需要将内存中不常用的数据移到 swap 中去的紧迫程度。这个参数的取值范围是 0~100,0 告诉内核尽可能的不要将内存数据移到 swap 中,也即只有在迫不得已的情况下才这么做,而 100 告诉内核只要有可能,尽量的将内存中不常访问的数据移到 swap 中。在 ubuntu 系统中,swappiness 的默认值是 60。如果我们觉着内存充足,可以在 /etc/sysctl.conf 文件中设置 swappiness:vm.swappiness=10

如果系统的内存不足,则需要根据物理内存的大小来设置交换空间的大小。

 

6.sar

命令: sar -n UDP|TCP|SOCK interval cnt

 

参数详解:

 sar -n UDP 2 10
sar -n DEV
sar -n DEV 1 100
-n {keyword}    network statistics
    DEV
                IFACE, rxpck/s, txpck/s, rxkB/s, txKB/s, etc.
    EDEV
                
    TCP         
                active/s    tcp active open times
                passive/s   tcp passive open times
                iseg/s      number of segments recv, include error
                oseg/s      number of segments send
    ETCP        
                atmptf/s    SYN-RCVD/SYN-SENT -> CLOSED, SYN-RCVD -> LISTEN(recv RST)
                estres/s    ESTABLISHED/CLOSE-WAIT -> CLOSED
                retrans/s   segments retransmitted
                isegerr/s   e.g. bad tcp checksum
                orsts/s     send RST
    UDP
                idgm/s      recv
                odgm/s      send
                noport/s    no application at the destination port
                idgmerr/s   datagrams could not be delivered
 

sar -n DEV 1

说明:查看网络设备的吞吐量

rxpck/s:每秒钟接收的数据包
txpck/s:每秒钟发送的数据包
rxbyt/s:每秒钟接收的字节数
txbyt/s:每秒钟发送的字节数
rxcmp/s:每秒钟接收的压缩数据包
txcmp/s:每秒钟发送的压缩数据包
rxmcst/s:每秒钟接收的多播数据包

root@localhost:~$ sar -n DEV 1
Linux 4.18.0-25-generic (localhost) 	2019年07月20日 	_x86_64_	(12 CPU)

17时18分04秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
17时18分05秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
17时18分05秒      eno1      8.00      1.00      0.56      0.08      0.00      0.00      0.00      0.00

17时18分05秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
17时18分06秒        lo      2.00      2.00      0.17      0.17      0.00      0.00      0.00      0.00
17时18分06秒      eno1     15.00      1.00      1.27      0.08      0.00      0.00      8.00      0.00

 

sar -n TCP,ETCP 1
说明:查看TCP连接状况

active/s:每秒本地发起的TCP连接数,既通过connect调用创建的TCP连接;

passive/s:每秒远程发起的TCP连接数,即通过accept调用创建的TCP连接;

retrans/s:每秒TCP重传数量;

iseg/s:数据接收量

oseg/s:数据发送量

root@localhost:~$ sar -n TCP,ETCP 1
Linux 4.18.0-25-generic (root) 	2019年07月20日 	_x86_64_	(12 CPU)

17时19分37秒  active/s passive/s    iseg/s    oseg/s
17时19分38秒      0.00      0.00      2.00      2.00

17时19分37秒  atmptf/s  estres/s retrans/s isegerr/s   orsts/s
17时19分38秒      0.00      0.00      0.00      0.00      0.00

 

sar 默认可以查看当天的性能指标。

若需要查看其它时间的性能指标,可先用下列命令看有哪些性能日志文件:

ll /var/log/sa/

再用下列命令看性能(例如看sa03文件):

sar -f /var/log/sa/sa03

查看指定文件7点到9点CPU使用记录,如要看负载加参数-q
#sar -s 07:00:00 -e 10:00:00 -f /var/log/sa/sa03

不过需要安装sysstat工具包后会自动每10分钟采集一次
脚本在/etc/cron.d/sysstat
默认只保留7天的文件
要保留更长时间要修改配置文件
有人觉得是修改/etc/sysconfig/sysstat这个文件,其实不是的
应该是/usr/lib/sa/sa2(64位/usr/lib64/sa/sa2),来看看里面的代码
HISTORY=7
[ -r /etc/sysconfig/sysstat ] && . /etc/sysconfig/sysstat
[ ${HISTORY} -gt 28 ] && HISTORY=28
#就是这个了,如果sysstat文件设置了历史天数超过28天就不会生效的
超过28天就要修改这个地方了。

不要小看这个命令,它能够让你对系统运行情况了如指掌。

7.top

说明:常用查看cpu和内存使用情况。一般关注RES,%CPU,%MEM的使用情况。

首先介绍top中一些字段的含义:

VIRT:virtual memory usage 虚拟内存
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量

RES:resident memory usage 常驻内存(程序占用的内存)
1、进程当前使用的内存大小,但不包括swap out
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小

SHR:shared memory 共享内存
1、除了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR
4、swap out后,它将会降下来。

 

top - 17:35:30 up 2 days,  9:05,  1 user,  load average: 0.08, 0.11, 0.10
Tasks: 324 total,   1 running, 234 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.0 us,  0.2 sy,  0.0 ni, 98.6 id,  0.1 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem :  7943088 total,   253100 free,  6528972 used,  1161016 buff/cache
KiB Swap:  2097148 total,  1964284 free,   132864 used.   902616 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                 
 1249 root      20   0  542352  62548  42360 S   6.2  0.8  61:59.46 Xorg                                                                                                                                    
28515 root      20   0  573872  61336  39084 S   6.2  0.8   1:24.60 my_test                                                                                                                         
30255 root      20   0   51476   4516   3764 R   6.2  0.1   0:00.01 top                                                                                                                                     
    1 root      20   0  225532   7076   4960 S   0.0  0.1   1:17.73 systemd                                                                                                                                 
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.15 kthreadd                                                                                                                                
    3 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 rcu_gp                                                                                                                                  
    4 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 rcu_par_gp                                                                                                                              
    6 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 kworker/0:0H-kb                                                                                                                         
    8 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 mm_percpu_wq                                                                                                                            
    9 root      20   0       0      0      0 S   0.0  0.0   0:00.91 ksoftirqd/0                                                                                                                             
   10 root      20   0       0      0      0 I   0.0  0.0   2:35.13 rcu_sched  

第一行是top信息:

top - 17:35:30 up 2 days,  9:05,  1 user,  load average: 0.08, 0.11, 0.10

17:35:30 — 当前系统时间
2 days, 9:05 — 系统已经运行了2天9小时5分钟(在这期间没有重启过)
1 user — 当前有1个用户登录系统
load average:0.08, 0.11, 0.10 — load average后面的三个数分别是5分钟、10分钟、15分钟的负载情况。

load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

第二个任务信息(进程信息):

Tasks: 324 total,   1 running, 234 sleeping,   0 stopped,   0 zombie

Tasks — 任务(进程),系统现在共有324个进程,其中处于运行中的有1个,234个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。

第三行CPU信息:

%Cpu(s):  1.0 us,  0.2 sy,  0.0 ni, 98.6 id,  0.1 wa,  0.0 hi,  0.1 si,  0.0 st

1.0% us — 用户空间占用CPU的百分比。
0.2% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
98.6% id — 空闲CPU百分比
0.1% wa — IO等待占用CPU的百分比
0.3% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.1% si — 软中断(Software Interrupts)占用CPU的百分比

 

第四和五行是内存信息,类是free指令查看结果:

KiB Mem :  7943088 total,   253100 free,  6528972 used,  1161016 buff/cache
KiB Swap:  2097148 total,  1964284 free,   132864 used.   902616 avail Mem 

 

进程详细参数:

PID:进程ID,进程的唯一标识符

USER:进程所有者的实际用户名。

PR:进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。

NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级

VIRT:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR:SHR是进程使用的共享内存。共享内存大小,单位kb

S:这个是进程的状态。它有以下不同的值:

  • D - 不可中断的睡眠态。
  • R – 运行态
  • S – 睡眠态
  • T – 被跟踪或已停止
  • Z – 僵尸态

%CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。

%MEM:进程使用的可用物理内存百分比。

TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。

COMMAND:运行进程所使用的命令。进程名称(命令名/命令行)

还有许多在默认情况下不会显示的输出,它们可以显示进程的页错误、有效组和组ID和其他更多的信息。

 

8.netstat

说明:Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

常用的参数说明:

  • -a (all)显示所有选项,netstat默认不显示LISTEN相关
  • -t (tcp)仅显示tcp相关选项
  • -u (udp)仅显示udp相关选项
  • -n 拒绝显示别名,能显示数字的全部转化成数字。(重要)
  • -l 仅列出有在 Listen (监听) 的服務状态
  • -p 显示建立相关链接的程序名(macOS中表示协议 -p protocol)
  • -r 显示路由信息,路由表
  • -e 显示扩展信息,例如uid等
  • -s 按各个协议进行统计 (重要)
  • -c 每隔一个固定时间,执行该netstat命令。

注意:LISTEN和LISTENING的状态只有用-a或者-l才能看到。

列出所有端口 (包括监听和未监听的):
列出所有端口:     netstat -a
列出所有tcp端口:  netstat -at
列出所有udp端口:  netstat -au

 

列出所有处于监听状态的 Sockets:

只显示监听端口:          netstat -l
只列出所有监听tcp端口:   netstat -lt
只列出所有监听udp端口:   netstat -lu
只列出所有监听UNIX端口:  netstat -lx

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值