性能常识 服务器动态监控命令

机械师 · 2024年02月18日 · 最后由 102555561 回复于 2024年02月20日 · 3773 次阅读

一、top 命令

统计信息取前 5 行是系统整体的统计信息,第一行是任务队列信息,同 uptime 命令的执行结果。内容如下:
16:14:27 当前时间;
up 10:02 系统运行时间,格式为时:分;
2 users 当前登录用户数;
load average:0.01,0.05,0.40 系统负载,即任务队列的平均长度。三个数值分别为:1 分钟,5 分钟,15 分钟前到现在的平均值。
load average 值越大表示活动的进程数越多,负载越大,运行的进程队列就越长。最理想的 load average 和 CPU 逻辑核数有关,查看机器物理 CPU 个数是多少,每个物理的逻辑 CPU 是多少,相乘 即是总共的核数。load average 最好是运行的时候同该核数保持一致。
列表指标的含义:
PID:进程 ID;
USER:进程所有者实际用户名;
PR:进程的调度优先级,rt 表示实时态;
NI:进程的优先级,值小代表优先级高;
VIRT:进程使用的虚拟内存;
RES:常驻内存,进程当前使用内存大小,不包括被交换出去的内存;
SHR:共享内存,除自身外,还包括其他进程共享的内存;
S:进程状态,D 不可中断睡眠状态,R 运行状态,S 睡眠状态,T 已停止,Z 僵尸状态;
%CPU:自从上一次更新时到现在任务所使用的 CPU 时间百分比。%CPU 显示的是进程占用一个核的百分比,而不是整个 CPU(N 核)的百分比,有时候可能大于 100,那是因为该进程启用了多线程占用了多个核心,所以有时候我们看该值的时候会超过 100%,但不会超过总核数 *100。
%MEM:进程使用的可用物理内存百分比;
TIME+:任务启动后到现在所使用的全部 CPU 时间,精确到百分之一秒;
COMMAND:运行进程所使用的命令。进程名称。
以上指标中我们最常看的就是 CPU 百分比和内存百分比;

大写 M: 按照内存使用排序,也就是图中的%MEM 排序,在 top 命令下直接敲击键盘的大写 M。
大写 P: 按照 CPU 使用排序,也就是图中的%CPU,这个指的是所有逻辑 CPU 占用之和,所以当有 4 核的时候,占用率最高可以达到 399%
大写 T: 按照 CPU 累计运算时间排序
小写 m: 显示内存信息。其中 free 部分和 buff/cache(缓冲区),两者之和作为未使用的内存。total = free + buff/cache + used。
Swap 交换分区,Linux 叫交换分区,windows 叫虚拟内存。在物理内存快被用光的时候,临时的物理内存上的文件数据交换到硬盘上的这段区域上面,当物理内存有闲置的时候,再把交换分区的内存上的数据回调到物理内存上。如果交换分区被频繁使用,那么说明物理内存是不够的。
小写 k: 按 k 后,输入要 kill 掉的进程号,回车即可杀掉进程;
数字 1: 多核 CPU 可分开查看。单核的话就没啥效果。

total:进程总数;
running:正在运行的进程数;
sleeping:睡眠的进程数;
stopped:停止的进程数;
zombie:僵尸进程数;
%Cpu(n):
us:用户空间占用 CPU 百分比;
sy:内核空间占用 CPU 百分比;
ni:用户进程空间内改变过优先级的进程占用 CPU 的百分比;
id:空闲 CPU 百分比;
wa:等待输入输出的 CPU 事件百分比;
hi:硬件 CPU 中断占用百分比;
si:软中断占用百分比;
st:虚拟机占用百分比;

二、free 命令

主要用来查看内存
total = free + buff/cache + used

free -m -s 2 :以 M 为单位每 2 秒刷新一次动态显示
free -g -c 2 :以 G 为单位进行 2 次数据统计

三、vmstat 命令

vmstat 2 4 :后面跟 2 个数字,表示每 2 秒显示一次数据,总共显示 4 次

r:表示运行队列。当这个值长期高于 CPU 数目,那么标识 CPU 会有瓶颈;
b:表示等待进程 io 的数量,如果数值长期较高,再结合 bi、bo 查看磁盘是否有瓶颈;
swpd:表示交换分区,该值如果大于 0 表示物理内存不足了,已经在使用交换分区,再结合 si、so 查看瓶颈;
si:每秒从交换分区写到内存的大小,由磁盘调入内存;
so:每秒写入交换分区的内存大小,由内存调入磁盘;
bi:每秒读取的块数,接收文件时会用到,如果该值长期大于 0 表示有 io 频繁;
bo:每秒写入的块数,读取文件时会用到,如果该值长期大于 0 表示有 io 频繁;
in:每秒 cpu 中断次数;
cs:每秒 CPU 上下文切换数,线程、进程的切换,都要用到上下文切换,该值越小越好,上下文切换次数过多,表示 CPU 大部分浪费在切换中,而导致 CPU 真正处理程序的事减少,CPU 没有充分利用到应用系统。
其他值包括 CPU 和内存部分,和 top、free 命令含义一样。

四、iostat 命令

有的 Linux 版本没有装,需要手工安装,使用 yum -y install sysstat
iostat -c :表示只显示 CPU 的信息, -d 表示只显示磁盘的信息
iostat -x 1 3 :表示每个 1 秒显示详细信息并且显示 3 次。-x 详细 io 统计信息;

rrqm/s:每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并;
wrqm/s:每秒对该设备的写请求被合并次数;
r/s:每秒完成的读次数;
w/s:每秒完成的写次数;
rkB/s:每秒读数据量(KB 为单位);
wkB/s:每秒写数据量(KB 为单位);
avgrq-sz:平均每次 IO 操作的数据量(扇区数为单位);
重点关注参数:
avgqu-sz: 平均等待处理的 IO 请求队列长度;表示磁盘 IO 队列长度,即 IO 等待个数;如果长期大于 CPU 核数,相当于比较繁忙;
await: 平均每次 IO 请求等待时间(包括等待时间和处理时间,毫秒为单位);表示每次 IO 请求等待时间,包括等待时间和处理时间;
svctm: 平均每次 IO 请求的处理时间(毫秒为单位);表示每次 IO 请求处理时间;
%util: 采用周期内用于 IO 操作的时间比率,即 IO 队列非空的时间比率;表示磁盘忙碌情况,一般该值超过 80% 表示该磁盘可能处于繁忙状态,一般性能要求比较高的都不会超过 65%;

五、netstat 命令

网络管理,一般用于检验本机各端口的网络连接情况。
netstat 是访问网络及相关信息的命令,它能提供 TCP 和 UDP 监听;
常用场景:
-a:显示详细的统计信息
-t:只显示 TCP 的连接;
-u:只显示 UDP 的连接;
-n:显示为数字,比如有的显示别名 mysql 之类的,全部显示为数字端口
-l:只展示 listen 状态的服务;
-p:显示建立相关连接的程序名;
-c:后面跟数字表示多少秒执行一次命令;
netstat -apn | grep java 通过 grep 查询指定应用程序的端口使用情况;
netstat -apn | grep 8081 查看指定端口的使用情况;

共收到 1 条回复 时间 点赞

您好,想问一下这几个命令常用吗,如果常用的话能否举例使用场景指点一下😶

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册