Linux Performance Analysis
如何在 30s 内定位系统出现的问题,可以使用如下 10 个命令:
uptime
dmesg | tail
vmstat 1
mpstat -P ALL 1
pidstat 1
iostat -xz 1
free -m
sar -n DEV 1
sar -n TCP,ETCP 1
top
uptime
uptime 能获取系统平均负载 (Load average)。负载是当前 CPU 的工作量,简单讲就是进程队列的长度。Load average是一段时间(1min、5min和15min)内平均负载。
dmes | tail
这将查看最近10条系统消息(如果有)。查找以下错误会导致性能问题。比如 oom killer,TCP 丢弃一个请求。
vmstat 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
34 0 0 200889792 73708 591828 0 0 0 5 6 10 96 1 3 0 0
32 0 0 200889920 73708 591860 0 0 0 592 13284 4282 98 1 1 0 0
32 0 0 200890112 73708 591860 0 0 0 0 9501 2154 99 1 0 0 0
32 0 0 200889568 73712 591856 0 0 0 48 11900 2459 99 0 0 0 0
32 0 0 200890208 73712 591860 0 0 0 0 15898 4840 98 1 1 0 0
^C
vmstat是虚拟内存统计信息的工具,常用于服务器监控。运行参数为1时,它会每秒打印一次摘要。第一行显示自启动以来的平均值,可跳过。