系统性能监控
背景
Linux的系统性能监控 system performance monitor
性能 performance
性能指标:
操作系统里最核心的4大指标
:
cpu
内存
磁盘
网络
服务(业务): nginx,MySQL,flask等应用程序
监控:monitor monitoring
目的:获取信息(cpu,内存,磁盘,网络带宽流量,服务,进程等资源),判断是否有问题,有问题就及时处理
监控工具:
1.linux系统本身的工具
2.第3方开发的工具: netdata,zabbix,prometheus
3.自研--》自己研发 ---》运维开发
为什么需要监控?
计算机系统和应用会出现问题,人又不能7*24小时一直盯着,软件–》取代去完成
使用工具--》软件:zabbix,prometheus
操作系统里本身就有很多软件(命令):top,ps ,dstat等
监控的意义:
1.提前预知,可以告警–》防范事故与未然,提前采取措施
2.如果出现事故,也可以马上告诉运维人员,及时处理,将损失减少到最小
Linux系统性能我们主要看哪些指标
?
cpu,磁盘,内存,网络、服务,进程等
常用的系统监控命令
top
动态显示系统性能参数
top常见选项
top命令默认在一个特定间隔(3秒)后刷新显示。要手动刷新,用户可以输入回车或者空格。
top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下:
l – 关闭或开启第一部分第一行 top 信息的表示
t – 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
m – 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
N – 以 PID 的大小的顺序排列表示进程列表
P – 以 CPU 占用率大小的顺序排列进程列表
M – 以内存占用率大小的顺序排列进程列表
h – 显示帮助
n – 设置在进程列表所显示进程的数量
q – 退出 top
top显示内容详解
top :程序名
- 16:47:01 :当前时间
- up 6 days, 18:43, :运行时间
- 1 user,:登入用户数
- load average: 0.00, 0.04, 0.05:平均负载均衡
Tasks: 80 total,:进程总数
1 running, :运行个数
79 sleeping,:睡眠个数
0 stopped,:停止个数
0 zombie:僵尸进程个数
%Cpu(s): 0.3 us, :us, user--》 运行(未调整优先级的) 用户进程的CPU时间
0.3 sy, :sy,system: 运行内核进程的CPU时间
0.0 ni, :ni,niced:运行已调整优先级的用户进程的CPU时间
99.3 id, :空闲cpu
0.0 wa,:wa,IO wait: 用于等待IO完成的CPU时间
0.0 hi, :hi:处理硬件中断的CPU时间
0.0 si, :si: 处理软件中断的CPU时间
0.0 st:st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。
KiB Mem : 1882008 total,:总内存空间
93104 free, :空闲内存空间
243468 used, :使用空间
1545436 buff/cache:缓冲区内存
交换分区:同上
KiB Swap:
0 total,
0 free,
0 used. 1466444 avail Mem
PID:进程ID,进程的唯一标识符
USER:进程所有者的实际用户名。
PR:进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。
NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR:SHR是进程使用的共享内存。共享内存大小,单位kb
S:这个是进程的状态。它有以下不同的值:
D - 不可中断的睡眠态。
R – 运行态
S – 睡眠态
T – 被跟踪或已停止
Z – 僵尸态
%CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。
%MEM:进程使用的可用物理内存百分比。
TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。
COMMAND:运行进程所使用的命令。进程名称(命令名/命令行)
VIRT:virtual memory usage 虚拟内存
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量
RES:resident memory usage 常驻内存
1、进程当前使用的内存大小,但不包括swap out
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小
SHR:shared memory 共享内存
1、除了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR
4、swap out后,它将会降下来
DATA
1、数据占用的内存。如果top没有显示,按f键可以显示出来。
2、真正的该程序要求的数据空间,是真正在运行中要使用的。
free
显示内存的使用情况
free命令 可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。
选项
选项
-b # 以Byte为单位显示内存使用情况;
-k # 以KB为单位显示内存使用情况;
-m # 以MB为单位显示内存使用情况;
-g # 以GB为单位显示内存使用情况。
-o # 不显示缓冲区调节列;
-s<间隔秒数> # 持续观察内存使用状况;
-t # 显示内存总和列;
-V # 显示版本信息。