我们在遇到linux下的程序性能问题或做故障排查的时候,需要快速做个粗略的定位,再做详细的分析,检查项目包括:
1. uptime
[root@localhost ~]# uptime
20:20:46 up 41 days, 3:56, 6 users, load average: 0.22, 0.20, 0.15
依次是最近1分钟,5分钟,15分钟的系统平均负载,也就是有多少个任务在执行(包括阻塞在IO上的进程),注意和cpu利用率区分,真正区分系统是否繁忙。
2. dmesg |tail
[root@localhost ~]# dmesg |tail
[2845144.551570] tg3 0000:19:00.1 em4: Link is up at 1000 Mbps, full duplex
[2845144.551577] tg3 0000:19:00.1 em4: Flow control is on for TX and on for RX
[2845144.551580] tg3 0000:19:00.1 em4: EEE is enabled
[2845144.551593] IPv6: ADDRCONF(NETDEV_CHANGE): em4: link becomes ready
[2845167.145618] tg3 0000:19:00.1 em4: Link is down
[2845173.199638] tg3 0000:19:00.1 em4: Link is up at 1000 Mbps, full duplex
[2845173.199645] tg3 0000:19:00.1 em4: Flow control is on for TX and on for RX
[2845173.199647] tg3 0000:19:00.1 em4: EEE is enabled
[2845183.488170] tg3 0000:19:00.1 em4: Link is down
[3506943.464711] nr_pdflush_threads exported in /proc is scheduled for removal
查看系统的日志,oom被杀的进程这里面可以看到记录,还可以看到其他的错误,内核问题经常会在这里面有所提示。
3. vmstat 1
[root@localhost ~]# 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 16 47282584 116 79965408 0 0 1 8 0 0 0 0 100 0 0
0 0 16 47282584 116 79965408 0 0 0 32 2527 1597 0 0 100 0 0
0 0 16 47282584 116 79965408 0 0 0 0 2525 1596 0 0 100 0 0
0 0 16 47282584 116 79965408 0 0 0 0 2538 1535 0 0 100 0 0
0 0 16 47265224 116 79966864 0 0 0 0 2562 1622 0 0 100 0 0
0 0 16 47266192 116 79965408 0 0 0 0 2534 1554 0 0 100 0 0
偏向总体指标包括cpu,内存,io和swap;关注几个点:cpu指标的r:标识CPU上正在执行和等待执行的进程数量,一个比cpu数量更多的值,标识cpu资源处于饱和状态;其他us,sy,id,wa,st和top命令含义一样。
内存资源里面的free: 空闲内存的数量;si和so:页面换入和换出,内存不够了,才会启动换出和换入。
4. mpstat -P ALL 1
[root@localhost ~]# mpstat -P ALL 1
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 03/03/2022 _x86_64_ (56 CPU)
08:22:50 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
08:22:51 PM all 0.00 0.00 0.02 0.00 0.00 0.00 0.00 0.00 0.00 99.98
08:22:51 PM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
08:22:51 PM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
08:22:51 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
08:22:51 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
08:22:51 PM 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
08:22:51 PM 5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
将每个cpu在各个状态下的时间打印出来,可以发现cpu的处理没有均衡等问题。
5. pidstat 1
[root@localhost ~]# pidstat 1
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 03/03/2022 _x86_64_ (56 CPU)
08:23:58 PM UID PID %usr %system %guest %CPU CPU Command
08:23:59 PM 0 10 0.00 0.98 0.00 0.98 15 rcu_sched
08:23:59 PM 0 320 0.00 0.98 0.00 0.98 3 khungtaskd
08:23:59 PM 997 2102 0.00 0.98 0.00 0.98 7 mysqld
08:23:59 PM 994 169414 0.98 0.98 0.00 1.96 52 clickhouse-serv
08:23:59 PM 0 457475 0.00 1.96 0.00 1.96 31 pidstat
08:23:59 PM UID PID %usr %system %guest %CPU CPU Command
08:24:00 PM 0 93059 0.00 1.00 0.00 1.00 31 taosd
08:24:00 PM 994 169414 0.00 1.00 0.00 1.00 52 clickhouse-serv
08:24:00 PM 0 457475 1.00 1.00 0.00 2.00 31 pidstat
08:24:00 PM UID PID %usr %system %guest %CPU CPU Command
08:24:01 PM 0 93059 1.00 0.00 0.00 1.00 31 taosd
08:24:01 PM 994 169414 2.00 1.00 0.00 3.00 52 clickhouse-serv
08:24:01 PM 0 457475 0.00 2.00 0.00 2.00 31 pidstat
^C
Average: UID PID %usr %system %guest %CPU CPU Command
Average: 0 10 0.00 0.33 0.00 0.33 - rcu_sched
Average: 0 320 0.00 0.33 0.00 0.33 - khungtaskd
Average: 997 2102 0.00 0.33 0.00 0.33 - mysqld
Average: 0 93059 0.33 0.33 0.00 0.66 - taosd
Average: 994 169414 0.99 0.99 0.00 1.99 - clickhouse-serv
Average: 0 457475 0.33 1.66 0.00 1.99 - pidsta
按照每个进程展示cpu的使用情况,支持滚动输出,这样就可以打印不同时间段的每个进程的cpu使用情况。
6. iostat -xz 1
[root@localhost ~]# iostat -xz 1
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 03/03/2022 _x86_64_ (56 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.06 0.00 0.02 0.00 0.00 99.91
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.61 0.18 13.43 33.15 449.41 70.89 0.05 3.99 8.30 3.93 0.09 0.13
dm-0 0.00 0.00 0.02 0.27 0.51 11.57 85.58 0.00 2.87 4.28 2.79 0.24 0.01
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 45.04 0.00 8.27 7.42 28.75 7.65 0.00
dm-2 0.00 0.00 0.17 13.78 32.63 437.84 67.48 0.05 3.90 8.69 3.85 0.09 0.12
avg-cpu: %user %nice %system %iowait %steal %idle
0.04 0.00 0.04 0.00 0.00 99.93
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 19.00 0.00 308.00 32.42 0.00 0.00 0.00 0.00 0.00 0.00
dm-0 0.00 0.00 0.00 1.00 0.00 24.00 48.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-2 0.00 0.00 0.00 18.00 0.00 284.00 31.56 0.00 0.00 0.00 0.00 0.00 0.00
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.02 0.00 0.00 99.98
主要显示存储设备的IO性能的,await为IO 响应的平均时间,以毫秒为单位,这是应用需要等待的时间,包括IO队列排队时间和服务时间。
avgqu-sz:设备请求队列的平均长度,可以认为为IO的繁忙程度;
avgrq-sz: 每次IO请求的扇区的大小,单位为扇区512个字节,表示IO每次的大小
7.free -m
以MB为单位查看空余内存大小,我更喜欢用free -h 这才是人看的。
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 128192 3927 46183 97 78080 123245
Swap: 4095 0 4095
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 125G 3.8G 45G 97M 76G 120G
Swap: 4.0G 16K 4.0G
8. sar -n DEV 1
各个网卡的流量大小,
[root@localhost ~]# sar -n DEV 1
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 03/03/2022 _x86_64_ (56 CPU)
08:27:25 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
08:27:26 PM p2p1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:27:26 PM p2p2 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:27:26 PM p3p1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:27:26 PM p3p2 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:27:26 PM lo 5.00 5.00 2.73 2.73 0.00 0.00 0.00
08:27:26 PM em4 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:27:26 PM em2 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:27:26 PM em1 27.00 2.00 2.87 0.27 0.00 0.00 19.00
08:27:26 PM em3 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:27:26 PM p1p1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08:27:26 PM p1p2 0.00 0.00 0.00 0.00 0.00 0.00 0.00
字段解释:
rxpck/s
Total number of packets received per second.
txpck/s
Total number of packets transmitted per second.
rxkB/s
Total number of kilobytes received per second.
txkB/s
Total number of kilobytes transmitted per second.
rxcmp/s
Number of compressed packets received per second (for cslip etc.).
txcmp/s
Number of compressed packets transmitted per second.
rxmcst/s
Number of multicast packets received per second.
9. sar -n TCP,ETCP 1
用此工具查看tcp指标, active/s 每秒本地发起的TCP连接数,passive/s 每秒远端发起的TCP连接数,
retrans/s 为每秒重传的包数
[root@localhost ~]# sar -n TCP,ETCP 1
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 03/03/2022 _x86_64_ (56 CPU)
08:30:46 PM active/s passive/s iseg/s oseg/s
08:30:47 PM 0.00 0.00 6.93 6.93
08:30:46 PM atmptf/s estres/s retrans/s isegerr/s orsts/s
08:30:47 PM 0.00 0.00 0.00 0.00 0.00
08:30:47 PM active/s passive/s iseg/s oseg/s
08:30:48 PM 0.00 0.00 4.00 4.00
08:30:47 PM atmptf/s estres/s retrans/s isegerr/s orsts/s
08:30:48 PM 0.00 0.00 0.00 0.00 0.00
08:30:48 PM active/s passive/s iseg/s oseg/s
08:30:49 PM 0.00 0.00 4.00 4.00
08:30:48 PM atmptf/s estres/s retrans/s isegerr/s orsts/s
08:30:49 PM 0.00 0.00 0.00 0.00 0.00
网友评论