Linux常用性能监控命令

CPU

  • user(通常缩写为us),代表用户态CPU时间。不包括下面的nice时间,但包括了guest时间
  • nice(通常缩写为ni),代表低优先级用户态CPU时间,也就是进程的nice值被调整为1-19之间时的CPU时间。nice可取值范围是-20 到19,数值越大,优先级反而越低
  • system(通常缩写为 sys),代表内核态CPU时间
  • idle(通常缩写为 id),代表空闲时间。它不包括等待I/O 的时间(iowait)
  • iowait(通常缩写为 wa),代表等待I/O的CPU时间
  • irq(通常缩写为 hi),代表处理硬中断的CPU时间
  • softirq(通常缩写为 si),代表处理软中断的CPU时间
  • steal(通常缩写为st),代表当系统运行在虚拟机中的时候,被其他虚拟机占用的CPU时间
  • guest(通常缩写为guest),代表通过虚拟化运行其他操作系统的时间,也就是运行虚拟机的CPU时间
  • guest_nice(通常缩写为gnice),代表以低优先级运行虚拟机的时间

CPU使用率

mpstat

CPU使用率实时统计

mpstat 1
Linux 3.10.0-693.2.2.el7.x86_64 (lingxi-test) 	2020年08月16日 	_x86_64_	(4 CPU)

15时36分16秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
15时36分17秒  all    3.34    0.00    1.80    0.00    0.00    0.00    0.00    0.00    0.00   94.86
15时36分18秒  all    3.34    0.00    1.80    0.00    0.00    0.26    0.00    0.00    0.00   94.6

pidstat

指定进程的CPU使用率变化

pidstat -p 2245 1
Linux 3.10.0-693.2.2.el7.x86_64 (lingxi-test) 	2020年08月16日 	_x86_64_	(4 CPU)

15时42分37秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
15时42分38秒 10006      2245    1.00    0.00    0.00    1.00     1  java
15时42分39秒 10006      2245    1.00    1.00    0.00    2.00     1  java
15时42分40秒 10006      2245    3.00    0.00    0.00    3.00     1  java

各进程的CPU使用率变化

pidstat -u 1
Linux 3.10.0-693.2.2.el7.x86_64 (lingxi-test) 	2020年08月16日 	_x86_64_	(4 CPU)

15时45分42秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
15时45分43秒 10006      2245    1.98    0.99    0.00    2.97     1  java
15时45分43秒 10006      6742    0.99    0.99    0.00    1.98     3  java
15时45分43秒 10006      9982    0.99    0.00    0.00    0.99     3  java

dstat

CPU/磁盘IO/网络数据实时监控

dstat 1
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 
  3   1  95   0   0   0|   0    84k|  53k   59k|   0     0 |9017    12k
  3   2  94   0   0   0|   0     0 |  54k   43k|   0     0 |9468    13k
  5   2  93   0   0   0|   0     0 |  50k   60k|   0     0 |9294    12k

CPU上下文切换

pidstat

各进程CPU上下文切换统计

pidstat -w 1
平均时间:   UID       PID   cswch/s nvcswch/s  Command
平均时间: 10006     13621      5.33      0.00  nginx
平均时间: 10006     13622      8.44      0.00  nginx
平均时间: 10006     13623     11.54      0.00  nginx
  • cswch 表示每秒自愿上下文切换(voluntary context switches)的次数
  • nvcswch表示每秒非自愿上下文切换(non voluntary context switches)的次数

指定进程CPU上下文切换统计

pidstat默认显示进程的指标数据,加上-t参数后,才会输出线程的指标。

pidstat -w -p 2245 -t 1
Linux 3.10.0-693.2.2.el7.x86_64 (lingxi-test) 	2020年08月16日 	_x86_64_	(4 CPU)

16时05分46秒   UID      TGID       TID   cswch/s nvcswch/s  Command
16时05分47秒 10006      2245         -      0.00      0.00  java
16时05分47秒 10006         -      2245      0.00      0.00  |__java
16时05分47秒 10006         -      2255      1.00      0.00  |__java
16时05分47秒 10006         -      2263     20.00      0.00  |__java

vmstat

CPU上下文切换计数

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
 1  0      0 176612 114152 5818372    0    0     0     4 8561 11181  2  2 95  0  0
 0  0      0 176304 114152 5818372    0    0     0     4 8550 11118  2  2 96  0  0
 0  0      0 176792 114152 5818396    0    0     0     0 8767 11367  3  1 96  0  0
  • cs(context switch)是每秒上下文切换的次数
  • in(interrupt)则是每秒中断的次数
  • r(Running or Runnable)是就绪队列的长度,也就是正在运行和等待 CPU 的进程
  • b(Blocked)则是处于不可中断睡眠状态的进程数

CPU中断

softirqs

CPU软中断计数

watch -n 1 'cat /proc/softirqs'
                    CPU0       CPU1       CPU2       CPU3       
          HI:          9          4          6          3
       TIMER: 2214338633 4121419965 2762914647 2138523262
      NET_TX:     861743     808676     915818     651005
      NET_RX: 3037620031 2545651729 3057664107 1391391372
       BLOCK:          0          0          0          0
BLOCK_IOPOLL:          0          0          0          0
     TASKLET:     313223     305907     313136     282939
       SCHED: 3189449832 2466757727 3115282943 2507068099
     HRTIMER:          0          0          0          0
         RCU: 2053967698 2003167979 2116164634 1891079850
  • TIMER: 定时产生的软中断
  • NET_RX: 网络接收产生的软中断
  • NET_TX: 网络发送产生的软中断
  • SCHED: 内核调度产生的软中断
  • RCU: RCU产生的软中断

CPU监控采样统计

perf

arthas

Arthas 用户文档

指定JVM进程生成CPU热点火焰图

  1. 启动arthas
wget https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar
  1. 启动profiler
$ profiler start
Started [cpu] profiling
  1. 获取已采集的sample的数量
$ profiler getSamples
23
  1. 查看profiler状态
$ profiler status
[cpu] profiling is running for 4 seconds
  1. 生成svg格式火焰图
$ profiler stop
profiler output file: /tmp/demo/arthas-output/20191125-135546.svg
OK
  1. 正确退出
$ shutdown

async-profiler

async-profiler

指定JVM进程生成CPU热点火焰图

./profiler.sh -d 30 -f ./flamegraph.svg 17616
  • -d: 分析持续时间,单位秒

内存

  • VIRT是进程虚拟内存的大小,只要是进程申请过的内存,即便还没有真正分配物理内存,也会计算在内
  • RES是常驻内存的大小,也就是进程实际使用的物理内存大小但不包括Swap和共享内存
  • SHR是共享内存的大小,比如与其他进程共同使用的共享内存、加载的动态链接库以及程序的代码段等
  • %MEM是进程使用物理内存占系统总内存的百分比

内存占用统计

free

内存占用统计

free -h
              total        used        free      shared  buff/cache   available
Mem:            15G        9.7G        156M        2.4M        5.7G        5.4G
Swap:            0B          0B          0B
  • total: 总内存大小
  • used: 已使用内存的大小,包含了共享内存
  • free: 未使用内存的大小
  • shared: 共享内存的大小
  • buff/cache: 缓存和缓冲区的大小
  • available: 新进程可用内存的大小

vmstat

内存占用实时统计

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
 1  0      0 176612 114152 5818372    0    0     0     4 8561 11181  2  2 95  0  0
 0  0      0 176304 114152 5818372    0    0     0     4 8550 11118  2  2 96  0  0
 0  0      0 176792 114152 5818396    0    0     0     0 8767 11367  3  1 96  0  0

ps

各进程按物理内存排序

ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' --sort -rsz
  PID COMMAND         COMMAND                     %CPU   RSZ    VSZ STIME USER       UID
 6742 java            java -jar -server -Xms1024M  2.1 1026192 6085356 8月13 webapp 10006
 9982 java            java -jar -server -Xmx1024M  0.8 951572  5192560 8月10 webapp 10006
13289 java            java -jar -server -Xms1024M  0.3 747960  4994932 8月05 webapp 10006

文件缓存

pcstat

文件缓存命中率

安装脚本

#!/bin/bash
if [ $(uname -m) == "x86_64" ] ; then
    curl -L -o pcstat https://github.com/tobert/pcstat/raw/2014-05-02-01/pcstat.x86_64
else
    curl -L -o pcstat https://github.com/tobert/pcstat/raw/2014-05-02-01/pcstat.x86_32
fi
chmod 755 pcstat
./pcstat ./logs/*
|---------------------------------+----------------+------------+-----------+---------|
| Name                            | Size           | Pages      | Cached    | Percent |
|---------------------------------+----------------+------------+-----------+---------|
| ./logs/member-wx.20200814.log   | 373896477      | 91284      | 15881     | 017.397 |
| ./logs/member-wx.20200815.log   | 317053634      | 77406      | 74450     | 096.181 |
| ./logs/member-wx.20200816.log   | 293448138      | 71643      | 71157     | 099.322 |
| ./logs/member-wx.log            | 89022207       | 21734      | 21734     | 100.000 |
|---------------------------------+----------------+------------+-----------+---------|

磁盘IO

磁盘IO读写统计

pidstat

各进程的IO读写

pidstat -d 1
Linux 3.10.0-693.2.2.el7.x86_64 (lingxi-test) 	2020年08月16日 	_x86_64_	(4 CPU)

16时22分28秒   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
16时22分29秒 10006      2245      0.00      7.92      0.00  java
16时22分29秒 10006     13621      0.00      3.96      0.00  nginx

iostat

各磁盘IO实时读写统计

iostat -x 1
Linux 3.10.0-693.2.2.el7.x86_64 (lingxi-test) 	2020年08月17日 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          11.31    0.00    1.99    0.05    0.00   86.65

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00     0.92    0.06    1.78     4.00    14.95    20.58     0.01    4.95   16.35    4.56   0.46   0.08
vdb               0.00     0.05    0.43    0.95    27.82    40.99    99.55     0.03   23.05   24.75   22.28   1.68   0.23
dm-0              0.00     0.00    0.43    0.96    27.82    40.99    98.82     0.03   24.16   27.92   22.48   1.67   0.23

iotop

各线程IO读写排序

iotop -o
Total DISK READ :       0.00 B/s | Total DISK WRITE :      24.89 K/s
Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND
10821 be/4 webapp      0.00 B/s    3.56 K/s  0.00 %  0.00 % java
10832 be/4 webapp      0.00 B/s    7.11 K/s  0.00 %  0.00 % java
10833 be/4 webapp      0.00 B/s    3.56 K/s  0.00 %  0.00 % java

各进程IO读写排序

iotop -P -o
FTotal DISK READ :       0.00 B/s | Total DISK WRITE :      25.29 K/s
Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s
  PID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND
10758 be/4 webapp      0.00 B/s   14.45 K/s  0.00 %  0.00 % java
19976 be/4 webapp      0.00 B/s    3.61 K/s  0.00 %  0.00 % java
32501 be/4 webapp      0.00 B/s    3.61 K/s  0.00 %  0.00 % ./service
13623 be/4 webapp      0.00 B/s    3.61 K/s  0.00 %  0.00 % nginx: worker process

进程打开的文件

lsof

进程打开的文件

lsof -p 10893
COMMAND   PID   USER   FD      TYPE             DEVICE  SIZE/OFF      NODE NAME
java    10893 webapp  rtd       DIR              253,1      4096         2 /
java    10893 webapp  txt       REG              252,0      7734 201451573 /opt/jdk1.8.0_131/bin/java
java    10893 webapp  mem       REG              252,0    256766 134407539 /opt/jdk1.8.0_131/jre/lib/amd64/libsunec.so

网络

网络数据读写监控

sar

网络数据包实时发送情况

sar -n DEV 1
Linux 3.10.0-693.2.2.el7.x86_64 (lingxi-test) 	2020年08月17日 	_x86_64_	(4 CPU)

15时17分39秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
15时17分40秒      eth0    655.00    408.00    145.84     83.68      0.00      0.00      0.00
15时17分40秒        lo     79.00     79.00     18.35     18.35      0.00      0.00      0.00
  • rxpck/s,txpck/s: 每秒接收发送的网络帧数
  • rxKB/s,txKB/s: 每秒接收发送的千字节数

iftop

按IP网络流速排行

iftop -B

在这里插入图片描述

按IP:端口号网络流速排行

iftop -B -P

在这里插入图片描述

  • TX:发送
  • RX:接收
  • TOTAL:总和
  • cum:运行iftop到目前时间的总流量
  • peak:流量峰值
  • rates:分别表示过去2s,10s,40s的平均流速

nethogs

按进程网络流速排行

nethogs
    PID USER     PROGRAM            DEV        SENT      RECEIVED       
  17664 webapp   ./tasty            eth0        3.395   6.446 KB/sec
  10893 webapp   java               eth0        3.913	6.036 KB/sec
  32501 webapp   ./service          eth0        2.284   5.843 KB/sec
  TOTAL                                         33.957  40.722 KB/sec

socket连接

netstat

TCP连接展示

netstat -natp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      871/sshd            
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      13541/nginx: master   
tcp        0     52 172.x.x.x:22            220.x.x.x:21889         ESTABLISHED 22577/sshd: root@pt

TCP连接状态统计

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
SYN_RECV 1
CLOSE_WAIT 39
ESTABLISHED 680
TIME_WAIT 261

ss

TCP连接状态统计

ss -s
Total: 1015 (kernel 0)
TCP:   914 (estab 595, closed 222, orphaned 0, synrecv 0, timewait 210/0), ports 0

Transport Total     IP        IPv6
*	        0         -         -        
RAW	        0         0         0        
UDP	        14        13        1        
TCP	        692       644       48       
INET	    706       657       49       
FRAG	    0         0         0

监听端口展示

ss -lnt
State       Recv-Q Send-Q        Local Address:Port         Peer Address:Port              
LISTEN      0      128                       *:111                     *:*                  
LISTEN      0      128                       *:80                      *:*                  
LISTEN      0      128                       *:22                      *:*                  
LISTEN      0      128                       *:443                     *:*                  
LISTEN      0      128                      :::111                    :::*                  
LISTEN      0      80                       :::3316                   :::*              

网络异常

sar

网络异常包实时监控

sar -n ETCP 1
Linux 3.10.0-693.2.2.el7.x86_64 (lingxi-test) 	2020年08月17日 	_x86_64_	(4 CPU)

21时11分09秒  atmptf/s  estres/s retrans/s isegerr/s   orsts/s
21时11分10秒      2.00      0.00      0.00      0.00      2.00
21时11分11秒      1.00      0.00      1.00      0.00      1.00
21时11分12秒      1.00      8.00      0.00      0.00      9.00
  • atmptf/s: 每秒TCP连接SYN-SENT/SYN-RCVD转换到CLOSED状态,以及SYN-RCVD转换到LISTEN状态数
  • estres/s: 每秒TCP连接从ESTABLISHED/CLOSE-WAIT状态转换到CLOSED状态数
  • retrans/s: 每秒重传包数
  • isegerr/s: 每秒接收错误段数(例如错误的TCP校验和)
  • orsts/s: 每秒发送RST包数

netstat

网络统计

常用于统计网络丢包数量、丢包原因等数据。

netstat -s
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值