系统性能分析

人生处万类,知识最为贤。这篇文章主要讲述系统性能分析相关的知识,希望能为你提供帮助。
计算机系统由四个模块组成分别是CPU、网络、磁盘、内存。在linux系统中有很多高效的工具,可以帮助分析定位问题。图为性能分析工具

vmstat是一款全面的系统性能分析工具,通过给定时间间隔来展示服务器状态,包括cpu使用率,内存使用率,虚拟内存交换情况,I/O读写情况。一般通过两个参数来完成,第一个是采样时间间隔数s,第二个是采样的次数。

[root@192 ~]# vmstat 2 2
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
rbswpdfreebuffcachesisobiboincs us sy id wa st
30 214528 23630436 616496114326159704622 39 12 4800
20 214528 22023636 6165720000686577 46 15 4000

命令参数详解
r
等待运行的进程数,多少个进程分到了CPU
b
在等待资源分配的进程数,阻塞状态
swpd
虚拟内存已使用的大小(KB),如果大于0,表示机器的物理内存不足
free
空闲的物理内存的大小(KB)
buff
用作缓存的内存数,缓存的是文件目录基本内容,在磁盘中的位置权限等
cache
用作文件缓存的内存数,对打开的文件进行缓存
si
从磁盘交换到内存的交换页数量,即每秒使用的虚拟内存数量(KB/s)
so
从内存交换到磁盘的交换页数量(  KB/s)
bi
发送到块设备( 一般为磁盘)的块数(块/s)
bo
从块设备接收到的块数(块1s)
in
每秒中断次数,包括时钟中断
cs
每秒上下文切换的次数
us
用户CPU使用时间
sy
系统CPU使用时间,如进行IO操作等
id
空闲时间
wt
等待I/O的CPU时间,一般为0
sar系统活动取样命令可以从多方面对系统活动进行报告,包括文件读写情况,系统调用的使用情况,磁盘CPU效率等,可以连续对系统取样,取样结果可存入文件,而且所需的负载很小。
格式:
sar [option][-A] [-o file] t [n]

option为命令选项,-o表示将命令结果以二进制格式存放在文件中,t为采样间隔,n为采样次数,默认值是1
命令参数
-A
所有报告的总和
-u
输出CPU使用情况的统计信息
-f
输出内存和交换空间的统计信息
-b
显示I/O和传达速率的统计信息
-a
文件读写情况
-c
输出进程统计信息,每秒创建的进程数
-R
输出内存页面的统计信息
-r
输出没有使用的内存页面和硬盘块
iostat 性能分析命令用于报告cpu和整个系统的输入输出统计信息默认显示了与vmstat相同的cpu使用信息
命令参数详解
-C
显示CPU使用情况
-d
显示磁盘使用情况
-m  -k
以K M为单位显示
-n
显示网络文件系统使用情况
-p
显示磁盘和分区的情况
-x  -V
显示详细信息和版本信息
# 使用命令参数显示磁盘的详细信息脚本
[root@192 ~]# iostat -d -x -k 1 10
Linux 3.10.0-957.el7.x86_64 (anonymous)2022年05月20日_x86_64_(1 CPU)

Device:rrqm/swrqm/sr/sw/srkB/swkB/s avgrq-sz avgqu-szawait r_await w_awaitsvctm%util
sda0.152.293.141.00215.99106.22155.590.013.012.185.661.190.49
scd00.000.000.000.000.040.0072.410.002.592.590.002.170.00
dm-00.000.003.041.00214.8096.98154.370.013.012.225.431.180.48
dm-10.000.000.172.290.779.168.070.029.222.989.690.110.03

top性能监控命令top命令参数
d
指定每两次屏幕信息刷新之间的时间间隔
p
通过指定监控进程id来仅仅监控某个进程状态
q
该选项将使top没有任何延迟的刷新
S
指定累计模式
s
使top命令在安全模式下运行 避免交互
i
不显示任何闲置或僵尸进程
c
显示整个命令而不是只显示命令名
top内部命令参数快捷键
o
改变列的显示顺序
f
选择显示的内容,显示选定的列
S s
改变画面的更新频率  更新周期
P
以CPU占用率大小的顺序排列进程列表
n
设置在进程列表所显示进程的数量
q
退出
ps 监控系统命令top是对进程实时监控的命令,ps命令显示进程的状态,但不是连续的,是一个超强大的进程查看命令。
ps常用命令参数
-a
显示终端下的所有程序
-A -e
显示所有进程
-au
显示较详细的信息
-aux
显示所有包含其他使用者的进程
-f
全部列出
-x
显示没有控制终端的进程,同时显示各个命令的具体路径
-N
反向选择
-u
指定用户的所有进程
-l
以长格式显示进程信息
netstat监控网络状态netstat是控制台命令,监控TCP/IP的网络的工具,它可以显示路由表,实际的网络连接以及每个网络接口的网络连接情况。
常用命令参数
-a
显示所有套接字
-c
每隔1秒重现显示一次,直至手动中断
-i
显示所有网络接口的信息
-r
显示核心路由表,同 route -e
-t
显示TCP的连接情况
-u
显示UDP的连接情况
-l
只显示指定的监听端口  -lt合用
-p
建立连接的程序名和pid
-s
显示每个协议的统计
-x
显示networkdirect连接,侦听器和共享端点
ifconfig查看地址ifconfig命令用来查看和配置当前网络配置,当网络环境发生改变时可通过此命令对网络进行相应的配置,配置一般需要高权。


【系统性能分析】还有一些其他的具体展示系统中一个类型的命令,因为在实际生产中使用的命令大多很固定,暂未整理,待开发。
ss显示连接状态命令free显示内存命令df 查看磁盘占用命令dstat动态显示系统系统负载命令iotop查看I/O命令iftop实时监控命令

    推荐阅读