以下所使用的环境为:
虚拟化软件:VMware Workstation 17 Pro
麒麟系统版本:Kylin-Server-V10-SP3-2403-Release-20240426-x86_64
一、系统状态查询工具
1. 静态显示系统进程信息ps
ps命令会生成一个静态列表,列表中显示的进程其实是你执行命令时,捕获当前系统进程的一个快照信息。执行完命令后出现的进程,不会自动更新到当前显示中。如果需要实时更新进程信息,则需要使用到top
命令和系统监控应用。
列出当前系统的所有进程信息
会显示进程的PID、进程附属终端、进程状态、进程占用的CPU时间、可执行文件的名字
ps -ax
列出当前系统的全部进程信息,包含详细信息
除了ps -ax
提供的信息外,还显示进程属主的名称、进程占用CPU和内存的百分比、显示虚拟内存大小和未交换物理内存的大小(字节)、进程的开始运行时间
ps -aux
结合管道符操作符,将当前系统运行状态中指定进程过滤出
ps -ef | grep ssh
集合管道操作符和sort命令,根据内存使用量降序排序
ps -aux | sort -rnk 4
2. 实时显示系统进程信息top
top命令的功能是实时显示系统运行状态,包含处理器、内存、服务、进程等重要资产信息。可以将top命令比作加强版的Windows任务管理器。还可以对进程做更进一步的操作,例如杀死某个进程。
top的互动命令
命令 | 描述 |
---|---|
Space | 刷新 |
h | 显示帮助 |
k | 杀死进程,后续需要输入进程ID和信号值 |
n | 设置要显示的进程数量 |
u | 按用户排序 |
r | 按pid修改进程的优先级 |
M | 按内存使用量排序 |
P | 按CPU使用率排序 |
q | 退出top |
杀死指定进程
3. 系统监控工具
麒麟操作系统提供了一个图形界面的系统监控工具【系统监视器】,功能界面有点类似于Windows的任务管理器。
4. 显示系统内存使用情况free
free命令的功能是显示系统内存使用量,包含物理内存和交换内存的总量、使用量、空闲量情况。
显示内存总量、使用内存大小、空闲内存大小、共享内存大小、buff的大小和cache的大小(缓存)、以及可用空间(free的默认单位是字节)
如果需要以MB为单位显示,可以添加[-m]参数;如果要显示单位,可以添加[-h]参数
free -m
5. 显示块设备信息blkid
blkid
命令能够查看Linux系统中的全部块设备信息,也就是硬盘或光盘设备,可以根据块设备名称、文件系统类型、卷标签、UUID等参数进行信息检索。
显示当前系统的块设备信息,只有root用户才有权限查看
blkid
查看指定硬盘的块设备信息
blkid /dev/sda1
6. 查看系统的磁盘使用情况lsblk
lsblk
命令提供更多的信息和输入格式控制,它是从 udev 读取信息,无需root用户也可以使用该命令。命令可以输出主设备名、子设备名、设备文件大小、设备是否只读、设备类型、设备的挂载路径。默认情况下,命令是以树状结构输出相关参数信息。
查看当前系统的磁盘使用情况
lsblk
以列表方式输出磁盘使用情况
lsblk -l
7. 显示磁盘空间使用量df
df
的功能是显示系统上磁盘空间的使用量情况,命令会显示磁盘的名称、类型、容量、已用容量、可用容量、已使用的百分比、挂载点。
显示系统全部磁盘的使用量
df
显示系统全部磁盘的使用量,同时显示单位
df -h
显示系统全部磁盘的使用量,显示单位和磁盘类型
df -hT
显示指定文件类型的磁盘使用量
df -t xfs
8. 查看文件或目录大小du
du
命令来自英文 disk usage 的缩写,该命令可以查看文件或目录的大小,df和du的区别在于,df是查看磁盘使用量,而du是查看文件或目录在磁盘中的占用情况。默认情况下,du命令以千字节为单位显示磁盘的使用情况。
以易读的容量格式显示查看目录和各个文件的大小信息
du -h
以易读的方式查看指定目录内的文件总大小
du -sh /etc/selinux
显示指定文件的大小信息(默认单位kb)
du /etc/selinux/config
二、影响服务器性能因素
影响服务器性能的因素
- 系统级别
- 内存
- CPU
- 磁盘I/O
- 网络I/O带宽
- 应用程序及软件
- Nginx、MySQL、Tomcat
- 应用程序代码
系统性能评估
- 使用率:表示资源用于服务的时间或容量百分比。100%的使用率,表示容量已经用完或全部时间都用在服务
- 饱和度:表示资源的繁忙程度,通常与等待队列的长度相关。100%的饱和度,表示资源无法接受更多的请求
- 错误数:发生错误的事件个数。错误越多,表明系统的问题越严重。
常用的系统性能组合分析命令
命令 | 说明 |
---|---|
top、uptime | 检查系统的整体负载 |
vmstat、sar、iostat、top | 检查是否是CPU瓶颈 |
free、vmstat | 检查是否是内存瓶颈 |
iostat | 检查是否是磁盘I/O瓶颈 |
netstat、iftop | 检测是否是网络带宽瓶颈 |
1. 查看系统负载uptime
uptime
命令能够显示系统已经运行多久时间、当前登录用户数,以及过去1分钟、5分钟、15分钟的负载信息。其中三个时间段的负载值一般不能大于系统逻辑CPU核数的2倍。
- >系统逻辑CPU核数的2倍,CPU很繁忙,负载很高,可能会影响系统性能
- <系统逻辑CPU核数的2倍,系统还存在空闲时间片
- =系统逻辑CPU核数的2倍,CPU或服务器处于闲置
查看当前系统的负载与相关信息
uptime
查看当前系统的CPU核心数
cat /proc/cpuinfo | grep "cpu cores"
2. 监视系统资源状态vmstat
vmstat
用于监视系统资源状态,可以查看关于进程、内存、硬盘I/O等整体运行状态。vmstat输出一段时间内的平均值,该值是自系统上次启动以来计算的平均值。
- **r:**等待运行时间的进程数量
- **b:**处于不可中断睡眠状态的进程数。睡眠过程分为两种,一种是可中断一种是不可中断。其中不可中断指的是在中断后数据会丢失
- **swpd:**使用的虚拟内存数(KB)
- **free:**可用的内存量(KB)
- **buff:**缓存数量(用作应用程序的缓存,KB)
- **cache:**缓存数量(用于硬盘空间的缓存,KB)
- **si:**从磁盘中交换到内存的平均速率(KB/秒)
- **so:**从内存中交换硬盘的平均速率(KB/秒)
- **bi:**从内存向磁盘交换数据的平均块数/秒
- **bo:**从硬盘向内存交换数据的平均块数/秒
- **in:**每秒中断数量
- **cs:**上下文切换数量/秒
- **us:**用户时间
- **sy:**系统时间
- **id:**空闲时间
- **wa:**等待时间
- **st:**窃取时间
us+sy的参考值为80%,如果大于80%说明可能存在CPU资源不足。
3. 监控系统资源的占用情况pidstat
pidstat
用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况。与vmstat相对比,vmstat只能给出系统总体的上下文切换情况(关注整体),而pidstat可以查看进程的具体CPU上下文切换(关注进程)。
4. 统计系统运行状态sar
sar
命令可以统计系统运行状态,使用sar会增加系统开销,不过开销是可估量,对系统的统计结果不会有很大影响。
统计CPU设备的负载信息
sar -u # -u选项,针对某个系统的CPU统计输出