系统负载、top 命令与压力测试全解析
文章目录系统负载、top 命令与压力测试全解析监控系统负载系统负载介绍查看系统负载负载解读top 命令stress 工具压力测试-CPU压力测试-内存压力测试-磁盘网络测试监控总结系统负载、top 命令与压力测试全解析监控系统负载系统负载介绍系统负载平均值Linux内核以活动请求数的指数移动平均值来表示。活动请求数不仅包含运行中进程还包含等待IO的进程对应于R和D。等待IO包括处于睡眠等待预期磁盘和网络响应的任务。指数移动平均值是一个数学公式可以平滑趋势数据的高值和低值更加准确地表示一段时间内系统负载并确定系统负载是随着时间增加还是减少。根据所有CPU活动请求数每5秒计算一次Load Average。通过汇总这些值可以得到最近1分钟5分钟和15分钟内的指数移动平均值。一些UNIX系统仅考虑CPU使用率或运行队列长度。Linux中负载平均值中还包含了对IO的考量遇到负载平均值很高但CPU活动很低时检查磁盘和网络活动。Linux将各个物理CPU核心和微处理器超线程计为独立执行单元。每个独立的执行单元拥有独立的请求队列。查看系统负载# 查看CPU[myzcentos7 ~18:36:46]$ lscpu Architecture: x86_64 CPU op-mode(s):32-bit,64-bit Byte Order: Little Endian CPU(s):2On-line CPU(s)list:0,1Thread(s)per core:1Core(s)per socket:1Socket(s):2NUMA node(s):1Vendor ID: GenuineIntel CPU family:6Model:183Model name: Intel(R)Core(TM)i7-14650HX Stepping:1CPU MHz:2419.202BogoMIPS:4838.40Hypervisor vendor: VMware Virtualization type: full L1d cache: 48K L1i cache: 32K L2 cache: 2048K L3 cache: 30720K NUMA node0 CPU(s):0,1Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 arat umip pku ospke gfni vaes vpclmulqdq movdiri movdir64b md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities# 查看负载[myzcentos7 ~18:47:18]$uptime18:47:41 up9:11,4users, load average:0.00,0.01,0.05# 给系统加负载[myzcentos7 ~18:47:45]$ md5sum /dev/zero[1]15069[myzcentos7 ~18:49:00]$ md5sum /dev/zero[2]15070# 等30秒左右[myzcentos7 ~18:49:32]$uptime18:49:41 up9:13,4users, load average:0.93,0.25,0.12负载解读示例4核心的CPU负载为 2.92 4.48 5.20每个cpu负载为0.73(2.92/4) 1.12(4.48/4) 1.30(5.20/4)比较理想的值为 75% 左右。top 命令作用动态查看进程信息包括不同状态任务数量CPU消耗和内存消耗。top命令快捷键常用的命令数字1PMkqh。按键用途? 或 h交互式击键操作的帮助。l、t、m切换到负载、线程和内存标题行。1标题中切换显示单独 CPU 信息或所有 CPU 的汇总。s更改屏幕刷新频率以带小数的秒数表示如 0.5、1、5。b切换反色突出显示 Running 进程默认为仅粗体。Shiftb在显示中使用粗体用于标题以及运行中的进程。Shifth切换线程显示进程摘要或单独线程。u、Shiftu过滤任何用户名称有效、真实Shiftm按照内存使用率以降序方式对进程列表排序。Shiftp按照处理器使用率以降序方式对进程列表排序。k中止进程。若有提示输入 PID再输入 signal。r调整进程的 nice 值。若有提示输入 PID再输入 nice_value。Shiftw写入保存当前的显示配置以便在下一次重新启动 top 时使用。q退出。f通过启用或禁用字段的方式来管理列。也可以为 top 设置排序字段。stress 工具Linux 中的stress工具用于对系统进行压力测试可模拟 CPU、内存、I/O 和磁盘等资源的高负载状态。通过指定参数如-c压 CPU、-m压内存可创建负载帮助发现系统在压力下的稳定性问题常用于性能调优或硬件验证。# 安装[rootcentos7 ~18:51:15]# yum install -y stress# 帮助信息[rootcentos7 ~18:51:28]# 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).压力测试-CPU# 消耗2个CPU[rootcentos7 ~18:52:54]# stress -c 2stress: info:[2595]dispatching hogs:2cpu,0io,0vm,0hdd# top 监控top-18:53:03 up9:16,4users, load average:0.06,0.21,0.13Tasks:224total,1running,223sleeping,0stopped,0zombie %Cpu(s):100.0us,0.0sy,0.0ni,100.0 id,0.0wa,0.0hi,0.0si,0.0st KiB Mem:4026116total,1912448free,857284used,1256384buff/cache KiB Swap:4063228total,4063228free,0used.2907920avail Mem PIDUSERPR NI VIRT RES SHR S %CPU %MEM TIME COMMAND1root20012842870164208S0.00.20:01.55 systemd2root200000S0.00.00:00.01 kthreadd4root0-20000S0.00.00:00.00 kworker/0:0H6root200000S0.00.00:00.10 ksoftirqd/07root rt0000S0.00.00:00.14 migration/08root200000S0.00.00:00.00 rcu_bh9root200000S0.00.00:03.95 rcu_sched10root0-20000S0.00.00:00.00 lru-add-drain11root rt0000S0.00.00:00.21 watchdog/012root rt0000S0.00.00:00.18 watchdog/113root rt0000S0.00.00:00.19 migration/1......压力测试-内存# 消耗前内存[rootcentos7 ~18:53:10]# free -mtotal usedfreeshared buff/cache available Mem:393183618681912262840Swap:396703967# 消耗 1G 内存[rootcentos7 ~18:53:30]# stress -m 1 --vm-bytes 1Gstress: info:[2623]dispatching hogs:0cpu,0io,1vm,0hdd# 消耗后内存[rootcentos7 ~14:21:44]# free -mtotal usedfreeshared buff/cache available Mem:393113585741419432074Swap:396703967压力测试-磁盘# 消耗磁盘IO[rootcentos7 ~18:58:26]# stress -d 1 --hdd-bytes 2Gstress: info:[15287]dispatching hogs:0cpu,0io,0vm,1hdd# 监视活动状态百分比%util[rootcentos7 ~14:58:56]# yum install -y sysstat[rootcentos7 ~18:59:01]# sar -dp 1Linux3.10.0-1160.71.1.el7.x86_64(centos7.myz.cloud)07/21/2026 _x86_64_(2CPU)06:59:08 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 06:59:09 PM sda0.000.000.000.000.000.000.000.0006:59:09 PM sr00.000.000.000.000.000.000.000.0006:59:09 PM centos-root0.000.000.000.000.000.000.000.0006:59:09 PM centos-swap0.000.000.000.000.000.000.000.0006:59:09 PM centos-home0.000.000.000.000.000.000.000.00......网络测试# 传送一个大size的文件[rootcentos7 ~19:00:08]# wget http://192.168.43.100/isos/CentOS-7-x86_64-DVD-2207-02.iso# 监控带宽[rootcentos7 ~19:00:58]# sar -n DEV 1Linux3.10.0-1160.71.1.el7.x86_64(centos7.myz.cloud)07/21/2026 _x86_64_(2CPU)07:01:05 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 07:01:06 PM lo0.000.000.000.000.000.000.0007:01:06 PM virbr0-nic0.000.000.000.000.000.000.0007:01:06 PM virbr00.000.000.000.000.000.000.0007:01:06 PM ens331.001.000.060.170.000.000.0007:01:06 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst......监控总结以下是针对 Linux 系统监控的几条实用建议涵盖关键监控维度和最佳实践核心指标实时监控重点跟踪 CPU 使用率用户态 / 系统态占比、内存占用含缓存 /swap 使用率、磁盘 I/O读写吞吐量、IOPS和网络流量带宽利用率、连接数。可通过top/htop实时、vmstat/iostat系统级等工具快速查看。部署专业监控工具对于服务器集群或长期监控需求建议使用 Prometheus Grafana可视化强、Zabbix全功能监控或 Nagios轻量告警等工具实现指标集中收集、趋势分析和历史数据查询。设置关键阈值告警针对核心指标配置告警阈值如 CPU 持续 5 分钟超 80%、磁盘空间不足 10%通过邮件、短信或即时通讯工具推送告警避免故障扩大。注意避免告警风暴可设置告警合并或延迟。监控进程与服务状态定期检查关键服务如 Nginx、MySQL的运行状态、进程数及资源消耗可通过systemctl status或自定义脚本实现。对异常退出的进程结合日志排查崩溃原因。日志集中管理与分析将系统日志/var/log/messages、应用日志集中存储如使用 ELK 栈关注错误信息ERROR级别、登录异常/var/log/auth.log和磁盘错误dmesg | grep error必要时配置日志告警规则。磁盘健康监控除空间使用率外需关注磁盘坏块smartctl工具检测 S.M.A.R.T 信息和文件系统完整性定期运行fsck非挂载状态下避免硬件故障导致数据丢失。网络与安全监控监控端口开放状态netstat/ss、异常连接尤其是外部 IP 的高频访问和防火墙规则生效情况。可结合tcpdump抓包分析可疑流量。定期性能基线分析记录系统正常运行时的指标基线如平均负载、内存使用峰值当指标偏离基线时及时排查避免微小异常累积成故障。自动化监控脚本对个性化需求如特定目录文件数、应用响应时间编写 Shell 或 Python 脚本定期执行检查输出结果至监控系统或直接触发告警。监控权限与安全限制监控工具的权限如仅授予读取日志和指标的权限加密传输监控数据防止监控系统本身成为安全薄弱点。 抓包分析可疑流量。8.定期性能基线分析记录系统正常运行时的指标基线如平均负载、内存使用峰值当指标偏离基线时及时排查避免微小异常累积成故障。9.自动化监控脚本对个性化需求如特定目录文件数、应用响应时间编写 Shell 或 Python 脚本定期执行检查输出结果至监控系统或直接触发告警。10.监控权限与安全限制监控工具的权限如仅授予读取日志和指标的权限加密传输监控数据防止监控系统本身成为安全薄弱点。通过分层监控基础指标→服务状态→业务性能和主动预警可显著提升系统稳定性和故障响应效率。