Chase Mao's blog

Linux系统监控常用命令

2023-12-14

介绍

Linux系统监控是服务端开发运维的重要一环,下面列出系统监控的常用命令和使用场景。

CPU

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# cpu监控
top
htop
iotop
mpstat
pidstat
ps aux

# 对0号cpu每1s采样
sar -P 0 1

内存

1
2
3
4
5
6
7
8
# 查看内存
sar -r 1
free -h

# 查看内存换入换出
# minflt 虚内存没有映射物理内存
# majflt 物理内存被换出到硬盘
sar -B 1

IO

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 获取块设备io状态,同时也会给出cpu使用情况
iostat

# 列出块设备
lsblk

# 获取线程io状态,p切换thread/process
iotop

# 查看块设备读写统计
blktrace -d /dev/vdb1
blkparse -i vdb1 -d vdb1.out
btt -i vdb1.out

# 写入disk会先将数据写入page cache,查看dirty内存上限,达到后会对io限速,查看内存相关情况
cat /proc/sys/vm/dirty_ratio

网络

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# 网络连接
netstat -antup
ss

# 网卡流量
sar -n DEV 1

# 路由表
ip route show table all 

# 全部路由表
vim /etc/iproute2/rt_tables
ip rule show

# 流量控制
tc qd

# tcp慢启动会导致500k的包,需要等五六次的rtt,可以调大内核滑动窗口的初始大小,如果是长连接,可以关闭滑动窗口自动缩小的配置
# tcp滑动窗口最大空间,rtt,会限制可用带宽,可以增加滑动窗口最大空间,设置为带宽*rtt,正好是需要的缓存大小

进程监控

1
2
3
4
# 查看进程的执行情况,cpu、缓存命中等
perf stat -d [run program]
perf record -g -e [from perf list] [run program]
perf report -g

系统调用

1
2
# 查看系统调用
strace -ttT -f run_something