目录
一、Stress系统压力测试工具
- # stress -c 数字 //执行sqrt()计算来模拟CPU密集型任务。测试CPU负载能力。
- # stress -i 数字 //sync()系统调用模拟IO同步操作。测试系统IO调度能力。
- # stress -m 数字 //频繁的内存分配和释放操作模拟内存压力。测试内存。
- # stress -d 数字 //持续的文件写入和删除操作。测试磁盘IO性能。
二、性能查看
(一)查看CPU
-
# nproc
- //查看CPU数量
-
# lscpu
-
//查看cpu基本架构信息
-
# top
-
//查看系统整体资源使用情况,负载。
q | 退出top指令 |
h | 列出可用的快捷键 |
Shift + M | 按内存使用率排序 |
Shift + P | 按 CPU 使用率排序(默认) |
Shift + N | 按 PID 排序 |
Shift + T | 按运行时间排序 |
k | 终止指定进程(输入 PID 后确认) |
z | 切换彩色/黑白显示模式。 |
top - 16:08:19 | 当前系统时间 | load average: 0.01, 0.02, 0.05 | 分别表示过去1分钟、5分钟、15分钟的系统平均负载。数值越高表示系统越繁忙(通常以CPU核心数为参考,如4核CPU的负载超过4可能表示高负载) | |
up 5:58 | 系统已连续运行时间 | |||
2 users | 当前登录的用户数 | Tasks: | 任务数量 | |
%Cpu(s): 0.0 us | 用户进程占用CPU百分比 | KiB Mem : 1863000 total | 物理内存总量(单位KB) | |
0.2 sy | 系统进程占用CPU百分比 | 1231848 free | 空闲内存 | |
0.0 ni | 低优先级进程占用CPU百分比 | 255592 used | 已使用内存 | |
99.8 id | CPU空闲百分比 | 375560 buff/cache | 缓存/缓冲区占用的内存。读:缓存;写:缓冲 | |
0.0 wa | 等待I/O操作的CPU时间百分比 | KiB Swap: 1048572 total | 交换分区总量。 | |
0.0 hi | 硬件中断占用CPU百分比 | 1048572 free | 空闲交换分区。 | |
0.0 si | 软件中断占用CPU百分比 | 0 used | 已使用交换分区 | |
0.0 st | 被虚拟机偷走的CPU时间百分比 | 1448536 avail Mem | 可用内存 |
PID | USER | PR | NI | VIRT | RES | SHR | S | %CPU | %MEM | TIME+ | COMMAND |
进程的唯一标识符(ID) | 进程所属用户 | 进程优先级 | 进程的Nice值 | 进程占用的虚拟内存总量 | 进程占用的物理内存 | 进程共享内存大小 | 进程状态 | 进程占用CPU百分比 | 进程占用物理内存百分比 | 进程累计使用的CPU时间 | 进程对应的命令或程序名 |
-
# uptime
- //查看CPU负载
-
# mpstat 数字1 数字2
- //查看CPU使用率。1时间间隔,2次数
(二)查看内存
-
# dmidecode -t memory | less
- //查看内存型号、主频
-
# free -h
-
//查看内存
-
# vmstat 数字1 数字2
- //查看内存使用率。1时间间隔,2次数
OOM(物理内存和交换空间均被耗尽)时,OOM Killer 终止进程以释放内存。
(三)查看进程
-
# ps
-
//简单查看进程
- # ps aux //查看所有进程的资源占用情况
- # ps -elf //查看进程间父子关系或优先级
- # pstree //以树状结构展示进程间的层级关系,直观显示父进程与子进程的派生关系。
- # pidof 命令 //查看命令执行进程的pid
- PID(进程 ID) // Process ID 的缩写,表示进程的唯一标识符。
- TTY(终端设备) //Teletype 的缩写,表示进程关联的终端设备。
pts/* | 伪终端 | tty* | 物理终端或虚拟控制台 | ? | 无终端关联,如守护进程 |
- TIME(CPU 时间) //表示进程占用的 CPU 时间,格式通常为分钟:秒:百分秒
- CMD(进程名称) // Command 的缩写,显示进程的启动命//令或可执行文件名称
- USER //进程启动的用户
- F //进程的状态标志
- STAT //进程的当前状态。也叫 S 。
- PPID (Parent Process ID) //父进程的 PID。
- %CPU、%MEM //进程所消耗的CPU(也叫C)、内存
- VSZ //虚拟内存集,表示进程占用的虚拟内存总量,包括共享库和未使用的内存页
物理内存:物理内存是计算机实际安装的硬件内存,用于存储正在运行的程序和数据。它是虚拟内存系统的基础,所有数据最终需要加载到物理内存中才能被CPU处理。
共享内存:共享内存允许多个进程访问同一块内存区域,用于进程间通信。
交换空间(Swap):交换空间是硬盘上预留的区域,用于存储暂时不使用的内存页面。当物理内存不足时,系统会将部分不活跃的内存数据临时转移到Swap空间,以释放内存供其他进程使用。
-
RSS //物理内存集,表示进程实际物理内存,不包括未被访问或已换出到交换空间的内存
-
START //进程启动时间
-
COMMAND //进程名称 带[] -->内核进程/系统进程 ; 没带[]-->用户进程
-
PRI //进程优先级(Priority),数值范围通常为0-139(Linux系统),数值越低优先级越高。实时进程优先级范围为0-99,普通进程为100-139。用户可通过
nice
或renice
命令调整普通进程的优先级。 -
NI //Nice值(Nice Value),影响进程的动态优先级调整范围。取值范围为-20到19,默认值为0。负值提高优先级,正值降低优先级。普通用户只能调高Nice值(降低优先级),需root权限才能调低Nice值。
-
ADDR //内存地址(Address),在进程状态中通常指进程的代码或数据在内存中的位置。
-
SZ //内存大小(Size),表示进程占用物理内存的页数(Page)
-
WCHAN //等待通道(Wait Channel),显示进程当前阻塞时所调用的内核函数名称。
-
STIME //启动时间(Start Time),格式通常为
HH:MM:SS
。对于运行超过24小时的进程,可能显示为日期(如Dec01
)。
进程状态 | ||||
R(Running) | 进程正在运行或就绪 | < | 高优先级进程。 | |
S(Sleeping | 进程处于可中断的睡眠状态 | N | 低优先级进程 | |
D(Uninterruptible Sleep) | 进程处于不可中断的睡眠状态(通常与硬件I/O相关) | s | 进程是会话的首进程 | |
Z(Zombie) | 进程已终止,但父进程尚未回收其资源。 | l | 进程是多线程的 | |
T(Stopped) | 进程被信号(如SIGSTOP)暂停。 | + | 进程位于前台进程组 |
前台运行是指程序或进程直接在用户可见的终端或界面中执行,占着命令提示符,并实时显示输出信息。
当父进程先于子进程终止时,子进程会变为孤儿进程(Orphan Process)。此时子进程会被系统的systemd 进程(PID=1)接管负责回收其资源,避免僵尸进程的产生。
注意:不同时间查看同一指令的进程,pid也是不同的。
-
# top
- //实时动态查看进程状态
(四)查看硬盘
-
# df -hT
- //查看容量使用情况
-
# df -i
- //查看inode
-
# iostat 数字1 数字2
- //查看硬盘的IO。1时间间隔,2次数
(五)查看网卡
-
# ethtool ens33
- //查看网卡带宽
-
# ifstat
- //查看接收/发送数据包。接受/发送的错误/丢弃数据包数量
device通常指物理硬件设备(如网卡),而interface是操作系统对设备的逻辑抽象,用于配置网络参数(如IP地址、子网掩码等)。例如,一块物理网卡(device)可能对应多个逻辑接口(interface)
通常一个interface仅关联一个物理或虚拟device。但通过网卡聚合可以关联多个device。
一个物理device可以关联多个interface。
-
# sar -n DEV 数字1 数字2
-
//网卡IO
-
# iftop -i 接口
- //实时监控网络流量
千兆网卡的理论最大传输速率为 1 Gbps,换算成字节单位约为 125 MB/s(兆字节每秒)
服务器连接硬盘的方法
直接连接(内置硬盘):将硬盘通过SATA或SAS接口直接连接到服务器主板。需确保服务器机箱有足够的硬盘托架和电源供应。适用于需要高速本地存储的场景,如数据库或虚拟机。
通过RAID卡连接:使用RAID卡将多个硬盘组成RAID阵列,提升性能或冗余。RAID卡通过PCIe插槽与服务器主板连接,硬盘通过SATA/SAS线连接到RAID卡。适用于需要数据冗余或高性能存储的场景。
外部存储设备连接:通过USB、eSATA或Thunderbolt接口连接外部硬盘。适用于临时备份或数据传输,但性能和稳定性可能不如内置方案。
网络存储连接(NAS/SAN):硬盘安装在NAS或SAN设备中,服务器通过以太网(NAS)或光纤通道(SAN)访问存储。适用于多服务器共享存储或需要高扩展性的场景。需配置网络和存储协议(如NFS、iSCSI)。
三、Linux系统运行模式
Linux系统的运行模式主要分为以下几种,每种模式对应不同的系统状态和功能:
1、传统SysVinit系统使用运行级别来定义系统状态:
- 0:关机模式(halt)
- 1:单用户模式(救援模式,仅root权限)
- 2:多用户模式(无网络服务)
- 3:完整多用户模式(命令行界面)
- 4:保留未使用(用户可自定义)
- 5:图形界面模式(X11)
- 6:重启模式
2、现代Linux系统(使用systemd)通过“目标”替代传统运行级别:
- poweroff.target:关机(对应运行级别0)
- rescue.target:单用户救援模式(对应运行级别1)
- multi-user.target:多用户命令行模式(对应运行级别3)
- graphical.target:图形界面模式(对应运行级别5)
- reboot.target:重启(对应运行级别6)
- # who -r //查看当前运行模式
- # init 数字 //切换运行模式命令(需root权限)
- # runlevel //显示系统之前和当前所处的运行模式
- # systemctl isolate graphical.target //临时切换运行模式
- ls -l /etc/systemd/system/default.target //查看当前系统的默认允许模式
systemctl isolate multi-user.target //字符模式
systemctl isolate graphical.target //图形模式
- # systemctl set-deafault graphical.target //修改默认运行级别
-
# dmidecode memory | less
-
//查看系统配置