Linux系统负载全方位监控压力测试实战运维必备日常运维工作中系统负载、CPU、内存、磁盘IO、网络带宽是排查服务器性能问题的核心指标。很多新手只看懂负载数值却不懂负载原理、不会压测复现、不会故障排查。本文从零讲解Linux系统负载核心原理、监控命令、stress压力测试工具手把手搞定系统监控适合运维入门。一、系统负载核心原理详解Linux系统负载平均值Load Average是评判服务器繁忙程度的核心指标由内核通过活动请求数的指数移动平均值计算得出和普通UNIX系统的负载统计逻辑有明显区别。1.1 核心统计规则活动请求数范围更广不仅包含运行中进程R状态还包含等待IO的进程D状态涵盖磁盘、网络响应等待的任务这是Linux负载的核心特点。指数移动平均值平滑瞬时峰值、谷值数据规避单次波动干扰精准反映一段时间内的系统负载趋势。计算频率与维度内核每5秒统计一次全局CPU活动请求数最终输出1分钟、5分钟、15分钟的负载平均值。区别于其他UNIX系统多数UNIX仅统计CPU使用率、运行队列长度Linux额外纳入IO负载。负载高但CPU空闲时优先排查磁盘、网络IO瓶颈。CPU核心计数规则物理核心、超线程均被视为独立执行单元每个单元拥有独立请求队列负载解读需结合核心数计算。1.2 负载数值解读标准负载数值不能单独看必须结合CPU核心总数判断核心公式单核心负载 总负载值 / CPU核心数。示例4核心CPU负载值为 2.92、4.48、5.20单核心负载分别为0.73、1.12、1.30最佳负载阈值单核心负载75%左右为稳定理想值持续超100%说明CPU过载存在任务排队拥堵。二、基础负载查看命令实操2.1 lscpu 查看CPU硬件信息用于查询服务器CPU核心数、线程数、架构等基础信息是负载解读的前置操作。[fangbingcentos7 ~16:59:38]$ lscpu Architecture: x86_64 CPU op-mode(s):32-bit,64-bit Byte Order: Little Endian CPU(s):2#总CPU核心数是2On-line CPU(s)list:0,1Thread(s)per core:1Core(s)per socket:1座2NUMA 节点1厂商 ID GenuineIntel CPU 系列6型号170型号名称 Intel(R)Core(TM)Ultra5125H 步进4CPU MHz2995.206BogoMIPS5990.412.2 uptime 快速查看系统负载一键查看服务器运行时长、在线用户数、1/5/15分钟负载平均值是运维高频快捷命令。# 初始低负载状态[fangbingcentos7 ~17:15:04]$uptime17:18:59 up19min,1user, load average:0.00,0.01,0.03# 后台md5sum循环计算占用CPU资源快速制造系统负载用于测试监控效果[fangbingcentos7 ~17:18:59]$ md5sum /dev/zero[1]2438[fangbingcentos7 ~17:19:36]$ md5sum /dev/zero[2]2439[fangbingcentos7 ~17:19:38]$uptime17:21:37 up22min,1user, load average:2.04,0.75,0.29负载解读服务器逻辑 CPU 总数2 核uptime 负载load average: 2.04, 0.75, 0.29三个数值1 分钟、5 分钟、15 分钟平均负载计算公式单核心平均负载 负载数值 ÷ 逻辑 CPU 数量1 分钟负载2.04 ÷ 2 1.025 分钟负载0.75 ÷ 2 0.37515 分钟负载0.29 ÷ 2 0.145注意说明短期内单核心负载略微超过 1代表CPU 资源已经打满新任务开始排队等待调度。三、top动态进程监控工具top是Linux核心实时监控工具可动态查看进程状态、任务数量、CPU/内存占用、负载状态是运维排查故障的必备工具。3.1 top常用快捷键运维必记1展开所有CPU核心查看单核心负载状态u过滤用户P按CPU使用率从高到低排序进程M按内存使用率从高到低排序进程k输入PID终止指定异常进程q退出top监控界面shiftw写入保存当前的显示配置以便下次重新启动时再使用h查看top帮助文档四、stress专业压力测试工具stress是Linux专用压力测试工具可精准模拟CPU、内存、磁盘IO、磁盘读写高负载场景用于测试服务器稳定性、性能阈值适配性能调优、硬件验证、故障复现场景。4.1 工具安装与帮助文档# CentOS7安装stress[rootcentos7 ~18:12:09]# yum install -y stress# 查看全部参数说明[rootcentos7 ~18:13:52]# stress --helpstress imposes certain types of compute stress on your system Usage: stress[OPTION[ARG]]... -?,--helpshow thishelpstatement--versionshow version statement -v,--verbosebe verbose -q,--quietbe quiet -n, --dry-run show what would have beendone-t,--timeoutNtimeoutafter N seconds--backoffNwaitfactor of N microseconds before work starts -c,--cpuN spawn N workers spinning on sqrt()-i,--ioN spawn N workers spinning on sync()-m,--vmN spawn N workers spinning on malloc()/free()--vm-bytes B malloc B bytes per vm worker(default is 256MB)--vm-stride Btoucha byte every B bytes(default is4096)--vm-hang NsleepN secs beforefree(default none,0is inf)--vm-keep redirty memory instead of freeing and reallocating -d,--hddN spawn N workers spinning on write()/unlink()--hdd-bytes BwriteB bytes per hdd worker(default is 1GB)Example: stress--cpu8--io4--vm2--vm-bytes 128M--timeout10s Note: Numbers may be suffixed with s,m,h,d,y(time)or B,K,M,G(size).核心参数说明-c指定CPU压测进程数占用核心算力-m指定内存压测进程数配合--vm-bytes指定占用内存大小-d指定磁盘压测进程数模拟磁盘读写IO负载-t指定压测超时时间自动结束任务-i模拟系统IO调度压力4.2 场景1CPU压力测试启动2个CPU压测进程打满CPU算力通过top实时监控负载变化。# 占用2核CPU进行压测[rootcentos7 ~18:14:00]# stress -c 2stress: info:[3786]dispatching hogs:2cpu,0io,0vm,0hdd# 新开终端执行top监控[rootcentos7 ~18:16:09]# toptop-18:17:00 up1:17,3users, load average:1.52,0.45,0.19Tasks:190total,3running,187sleeping,0stopped,0zombie %Cpu(s):99.2us,0.8sy,0.0ni,0.0id,0.0wa,0.0hi,0.0si,0.0st KiB Mem:4026124total,3043064free,521136used,461924buff/cache KiB Swap:4063228total,4063228free,0used.3254380avail Mem PIDUSERPR NI VIRT RES SHR S %CPU %MEM TIME COMMAND3788root20073121000R100.00.01:00.97 stress3787root20073121000R99.70.01:00.76 stress1602root2003216283697228328S0.30.90:00.37 X1root20019391669964196S0.00.20:01.46 systemd2root200000S0.00.00:00.00 kthreadd4root0-20000S0.00.00:00.00 kworker/0:0H6root200000S0.00.00:00.07 ksoftirqd/04.3 场景2内存压力测试手动指定占用内存大小模拟内存高负载场景通过free命令对比压测前后内存占用。# 压测前查看内存[rootcentos7 ~18:18:08]# free -mtotal usedfreeshared buff/cache available Mem:39315082972274513179Swap:396703967# 启动1个内存进程占用1G内存[rootcentos7 ~18:18:21]# stress -m 1 --vm-bytes 1Gstress: info:[3916]dispatching hogs:0cpu,0io,1vm,0hdd# 新开1个终端看压测后内存已成功占用指定内存[rootcentos7 ~18:19:41]# free -mtotal usedfreeshared buff/cache available Mem:393115301949274512156Swap:396703967字段解析字段中文解释total总内存大小服务器物理内存总量。used已经被程序、系统占用的内存。free完全空闲、没被任何程序使用的裸内存。shared多个进程共享占用的内存。buff/cache缓冲区 页缓存。Linux 会利用空闲内存缓存磁盘文件提升读写速度内存紧张时可以快速回收这部分内存给应用程序。available重点运维判断内存优先看该指标。系统预估可以分配给新进程、无需 Swap 交换就能使用的内存总量计算公式available free 可回收的 buff/cache - 不可回收内存4.4 场景3磁盘IO压力测试模拟磁盘高频读写制造IO负载通过sar命令监控磁盘利用率%util。# 安装磁盘监控工具[rootcentos7 ~18:22:22]# yum install -y sysstat iotop# 启动磁盘压测单次写入2G文件[rootcentos7 ~18:20:28]# stress -d 1 --hdd-bytes 2Gstress: info:[3988]dispatching hogs:0cpu,0io,0vm,1hdd# 监控磁盘读写速度重点关注rd_sec/s和wr_sec/s单位是0.5k/每秒,每个secsector是512Byte还有%util[rootcentos7 ~18:24:24]# sar -dp 118时24分53秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util18时24分54秒 sda2852.480.002919920.791023.6464.1022.470.3084.85# 动态监控左右方向键调整排序列 代表当前排序列[rootcentos7 ~18:24:59]# iotopTotal DISK READ:0.00B/s|Total DISK WRITE:51.90M/s Actual DISK READ:0.00B/s|Actual DISK WRITE:62.16M/s TID PRIOUSERDISK READ DISK WRITESWAPIN IO COMMAND4573be/4 laoma0.00B/s51.90M/s0.00%96.45% stress-d1--hdd-bytes 2G1be/4 root0.00B/s0.00B/s0.00%0.00% systemd --switched-root--system--deserialize22字段解析字段中文说明DEV磁盘设备名称如 sdatps每秒向磁盘发起的 IO 请求次数一次读写合并算 1 次rd_sec/s每秒读取扇区数量1 扇区 512 字节wr_sec/s每秒写入扇区数量1 扇区 512 字节avgrq-sz单次 IO 请求的平均扇区大小反映读写块大小avgqu-sz磁盘 IO 请求队列平均长度队列越长阻塞越严重awaitIO 请求平均等待时间单位 ms包含队列等待 磁盘处理耗时svctmIO 请求磁盘实际处理耗时单位 ms新版内核该指标已失效不要参考%util磁盘设备繁忙时间占比接近 100% 代表磁盘 IO 瓶颈五、网络负载压力测试通过下载大体积镜像文件模拟网络带宽负载搭配sar工具实时监控网卡流量、带宽利用率。# 下载CentOS镜像制造网络负载原资源URL失效可替换可用镜像源测试[rootcentos7 ~18:31:49]# wget http://192.168.50.200/course-materials/iso/CentOS-7-x86_64-DVD-2207-02.iso# 每秒刷新一次网络设备流量状态[rootcentos7 ~18:31:04]# sar -n DEV 118时32分16秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s18时32分17秒 lo0.000.000.000.000.000.000.0018时32分17秒 virbr0-nic0.000.000.000.000.000.000.0018时32分17秒 virbr00.000.000.000.000.000.000.0018时32分17秒 ens3347252.004391.0069838.66258.260.000.000.00字段解析字段中文含义IFACE网卡设备名称rxpck/s每秒接收数据包数量txpck/s每秒发送数据包数量rxkB/s每秒接收流量单位KB / 秒txkB/s每秒发送流量单位KB / 秒rxcmp/s每秒接收压缩数据包普通业务基本为 0txcmp/s每秒发送压缩数据包普通业务基本为 0rxmcst/s每秒接收组播数据包六、Linux系统监控最佳实践总结结合日常运维场景整理10条核心监控规范覆盖性能排查、预警、安全、自动化全维度核心指标实时监控重点跟踪CPU用户/系统占比、内存/swap使用率、磁盘IOPS/吞吐量、网络带宽与连接数使用top、vmstat、iostat快速排查。部署专业监控平台集群/长期监控推荐PrometheusGrafana可视化监控、Zabbix全功能告警、Nagios轻量监控。配置阈值告警CPU持续5分钟超80%、磁盘空间不足10%、内存过载等场景配置告警开启告警合并避免风暴。常态化进程服务监控定期检查Nginx、MySQL等核心服务状态排查异常进程、僵尸进程通过日志定位崩溃原因。日志集中管理整合系统日志、应用日志通过ELK栈分析错误日志、异常登录、磁盘故障信息。磁盘健康监控除空间外通过smartctl检测磁盘坏块空闲时执行fsck校验文件系统完整性。网络安全监控通过ss/netstat排查异常端口、高频陌生IP访问结合tcpdump抓包分析可疑流量。建立性能基线记录服务器正常空载、负载基线指标偏离时及时排查潜在故障。自定义自动化监控编写Shell/Python脚本适配个性化监控需求定时巡检并触发告警。监控权限安全管控最小化监控工具权限加密监控数据传输避免监控系统成为安全漏洞。合系统日志、应用日志通过ELK栈分析错误日志、异常登录、磁盘故障信息。磁盘健康监控除空间外通过smartctl检测磁盘坏块空闲时执行fsck校验文件系统完整性。网络安全监控通过ss/netstat排查异常端口、高频陌生IP访问结合tcpdump抓包分析可疑流量。建立性能基线记录服务器正常空载、负载基线指标偏离时及时排查潜在故障。自定义自动化监控编写Shell/Python脚本适配个性化监控需求定时巡检并触发告警。监控权限安全管控最小化监控工具权限加密监控数据传输避免监控系统成为安全漏洞。