目录
介绍
负载: uptime
查看内核的信息: dmesg
查看内存状态: free,vmstat
free: 查看内存, 已用内存, 剩余内存, 交换分区等
vmstat: 显示虚拟内存状况的信息.
查看 CPU:
mpstat: 查看每个 CPU 的消耗信息
top: 查看 Linux 任务信息
查看 IO:iostat
查看网卡: sar
介绍
检测服务器当前的性能, 主要检查的项目如下:
负载: uptime
内核信息: dmesg
内存: vmstat,free
- CPU:top,mpstat,
- I/O:iostat
网络: sar
有些命令需要安装 sysstat 包
负载: uptime
- $ uptime
- 22:37:31 up 65 days, 3:15, 1 user, load average: 40.00, 25.01, 10.05
通过 uptime 命令可以快速的查看当前的服务器的 1 分钟, 5 分钟, 15 分钟的平均负载情况, 它对 CPU 运行状态和 I/O 数状态的资源负载的整体的展示. 这三个数字几乎依次展示了系统的 15 分钟之内负载的变化, 如上, 1 分钟的值比 15 分钟的高, 就说明你的系统负载越来越高, 此时就需要紧急排查系统的状况了. 该工具只是快速查看健康状态的一种手段而已, 真正需要确定需要下面的工具查看.
查看内核的信息: dmesg
- $ dmesg |tail
- [ 2567.534310] IPv6: ADDRCONF(NETDEV_UP): em3: link is not ready
- [ 2570.386536] tg3 0000:02:00.0 em3: Link is up at 1000 Mbps, full duplex
- [ 2570.386550] tg3 0000:02:00.0 em3: Flow control is off for TX and off for RX
- [ 2570.386555] tg3 0000:02:00.0 em3: EEE is disabled
- [ 2570.386584] IPv6: ADDRCONF(NETDEV_CHANGE): em3: link becomes ready
- [20907.774686] perf: interrupt took too long (2502> 2500), lowering kernel.perf_event_max_sample_rate to 79000
- [50276.167405] perf: interrupt took too long (3173> 3127), lowering kernel.perf_event_max_sample_rate to 63000
- [96662.454537] perf: interrupt took too long (4010> 3966), lowering kernel.perf_event_max_sample_rate to 49000
- [143249.558510] perf: interrupt took too long (5025> 5012), lowering kernel.perf_event_max_sample_rate to 39000
- [204028.503117] perf: interrupt took too long (6286> 6281), lowering kernel.perf_event_max_sample_rate to 31000
通过 dmesg 可以查看设备的一些故障信息. 如: TCP 丢包, oom-killer 错误等.
查看内存状态: free,vmstat
free: 查看内存, 已用内存, 剩余内存, 交换分区等
- $ free -h
- total used free shared buff/cache available
- Mem: 7.6G 697M 3.0G 23M 3.9G 6.5G
- Swap: 8.0G 0B 8.0G
通过 free 命令可以查看系统内存的使用状况. 要了解 Linux 对内存利用率, 就必须了解 Linux 对 buffer cache 和 page cache 的处理. 简单来说, Linux 内核会将进程要读取或者写入的数据先保存在内存中形成缓存块, 加快下次对该数据的操作, 上图中 available 更准确显示内存的剩余量.
buffer cache 是对块设备数据的缓存, page cache 是对文件数据的缓存.
swap 显示了 swap 分区的大小, 通过调整 / proc/sys/vm/swappiness 文件可以调整内存交换到磁盘的积极程度, 值为 0-100 之间的值, 值越高, 交换就越频繁, 如果交换太频繁就会影响系统的性能, 默认是 60, 建议调整为 0.
- # cat /proc/sys/vm/swappiness
- 60
- # echo "vm.swappiness = 10">>/etc/sysctl.conf
- # sysctl -p
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
- 0 0 0 3082644 2076 4156120 0 0 1 210 12 9 1 0 99 0 0
- 0 0 0 3083180 2076 4156112 0 0 0 473 2231 2420 1 0 99 0 0
- 0 0 0 3083212 2076 4156112 0 0 0 12510 3946 3945 1 2 97 0 0
- 0 0 0 3083684 2076 4156096 0 0 0 1403 2333 1725 1 0 99 0 0
- 1 0 0 3082868 2076 4156388 0 0 0 505 2307 1795 4 1 95 0 0
- 0 0 0 3083508 2076 4156040 0 0 0 475 1888 1570 1 1 99 0 0
- 0 0 0 3083152 2076 4156040 0 0 0 8090 1694 1910 1 1 99 0 0
vmstat 报告有关进程, 内存, 分页, 块 IO 和 CPU 活动的信息.
procs:
r: 正在 CPU 上运行和等待运行的进程数量.
b: 阻塞的进程
Memory:
swpd: 虚拟内存使用的大小
free: 空闲的内存大小
buffer: 用作缓冲的内存大小
cache: 用作缓存的内存大小
Swap:
si: 每秒从交换区写到内存的大小
so: 每秒写入到交换区的内存大小
IO:
bi: 块设备每秒接收的块数量
bo: 块设备每秒发送的块数量
System:
in: 每秒 CPU 中断次数
cs: 每秒上下文切换的次数, 这个值越小越好
CPU :
us: 用户的 CPU 时间
sy: 系统内核运行 CPU 时间
id: 空闲的 CPU 时间
wa: 等待 IO 花费的时间
st: 从虚拟机中偷走的时间
查看 CPU:
mpstat: 查看每个 CPU 的消耗信息
- $ mpstat -P ALL 1 2
- Linux 2.6.32-696.el6.x86_64 (DX_JQ_2) 12/07/2018 _x86_64_ (32 CPU)
- 01:52:00 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
- 01:52:01 PM all 0.00 0.00 0.03 0.00 0.00 0.00 0.00 0.00 99.97
- 01:52:01 PM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
- 01:52:01 PM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
- 01:52:01 PM 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
- 01:52:01 PM 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
- 01:52:01 PM 4 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
- 01:52:01 PM 5 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
- 01:52:01 PM 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
- 01:52:01 PM 7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
mpstat 可以实时的查看每个 CPU 的消耗状况, 可以查看每个 CPU 的分配不均衡的问题.
top: 查看 Linux 任务信息
top 命令可以实时的查看 Linux 系统运行状况, 查看系统启动的时间, 在线用户, 负载, 各个进程的状态, CPU, 内存, 交换分区的状态. 可以通过查看 top 查看每个进程具体的状信息, 如, 进程的 PID, 优先级, 进程需要的虚拟内存和进程当前使用的内存大小等.
各个字段的含义:
PID: 进程 ID
PR: 任务优先级
NI:nice 值, 数值越小表示优先级越高
VIRT: 进程使用的虚拟内存总量
RES: 进程使用的, 没有换出的物理内存的大小
SHR: 共享内存的大小
S: 进程状态. D: 不可中断的睡眠状态 R: 运行 S: 睡眠 T: 跟踪 / 停止 Z: 僵尸进程
%CPU: 占用的 CPU 时间比
%MEM: 进程所使用的物理内存百分比
TIME+: 进程使用的 CPU 时间总计
COMMAND: 命令行
查看 IO:iostat
- # iostat -xz 1
- Linux 2.6.32-696.el6.x86_64 (DX_JQ_2) 12/07/2018 _x86_64_ (32 CPU)
- avg-CPU: %user %nice %system %iowait %steal %idle
- 0.05 0.00 0.07 0.01 0.00 99.87
- Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await r_await w_await svctm %util
- sda 0.00 3.29 0.02 1.13 1.28 35.30 31.88 0.02 20.90 7.84 21.13 5.19 0.60
- dm-0 0.00 0.00 0.02 4.41 1.27 35.29 8.25 0.07 14.68 8.78 14.70 1.34 0.60
- avg-CPU: %user %nice %system %iowait %steal %idle
- 0.06 0.00 0.06 0.00 0.00 99.87
Linux 中可以通过 iostat 查看系统的 IO 状态. r/s, w/s, rkB/s, wkB/s: 这些是该设备每秒读%, 写%, 读 Kb, 写 Kb. 可用于描述工作负荷.
查看网卡: sar
- # sar -n DEV 1
- Linux 2.6.32-696.el6.x86_64 (DX_JQ_2) 12/07/2018 _x86_64_ (32 CPU)
- 02:28:00 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
- 02:28:01 PM lo 20.00 20.00 2.33 2.33 0.00 0.00 0.00
- 02:28:01 PM em1 21.00 39.00 1.47 9.24 0.00 0.00 4.00
- 02:28:01 PM em2 89.00 39.00 49.84 8.36 0.00 0.00 29.00
- 02:28:01 PM em3 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- 02:28:01 PM em4 1.00 0.00 0.12 0.00 0.00 0.00 1.00
- 02:28:01 PM bond0 110.00 78.00 51.31 17.60 0.00 0.00 33.00
- 02:28:01 PM bond1 1.00 0.00 0.12 0.00 0.00 0.00 1.00
使用 sar 查看网络接口的吞吐量. 通过 sar 命令可以全面的获取系统的 CPU, 运行队列, 磁盘 I/O, 交换区, 内存, CPU 中断, 网络等性能数据.
| 命令 | 说明 |
|---|---|
|sar -u 1 3 | 查看 CPU|
|sar -r 1 3 | 查看内存和交互空间 |
|sar -B 1 3 | 查看内存分页 |
|sar -b 1 3 | 查看 I/O 速率 |
|sar -q 1 3 | 查看进程队列长度和平均负载状态 |
|sar -W 1 3 | 查看系统交互活动信息 |
来源: https://www.cnblogs.com/dianel/p/10085454.html