想验证监控灵不灵?stress 一键压满 CPU 内存,模拟服务器风暴。

📅 2026/7/23 4:58:14 👁️ 阅读次数 📝 编程学习
想验证监控灵不灵?stress 一键压满 CPU 内存,模拟服务器风暴。

stress 工具

Linux 中的stress工具用于对系统进行压力测试,可模拟 CPU、内存、I/O 和磁盘等资源的高负载状态。通过指定参数(如-c压 CPU、-m压内存)可创建负载,帮助发现系统在压力下的稳定性问题,常用于性能调优或硬件验证。

# 安装[xiaoma@centos7 ~10:03:09]$sudoyuminstall-ystress# 帮助信息[xiaoma@centos7 ~10:09:43]$ stress--help`stress' 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[root@centos7 ~14:17:19]# stress -c 2stress: info:[2595]dispatching hogs:2cpu,0io,0vm,0hdd# top 监控top-10:31:33 up1:53,4users, load average:1.45,0.47,0.20Tasks:221total,3running,217sleeping,1stopped,0zombie %Cpu0 :100.0 us,0.0sy,0.0ni,0.0id,0.0wa,0.0hi,0.0si,0.0st %Cpu1 :100.0 us,0.0sy,0.0ni,0.0id,0.0wa,0.0hi,0.0si,0.0st KiB Mem:4026116total,2379908free,702344used,943864buff/cache KiB Swap:4063228total,4063228free,0used.3067096avail Mem PIDUSERPR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND4289xiaoma20073121000R100.00.01:18.04 stress4290xiaoma20073121000R99.70.01:18.16 stress734root20029556453004040S0.30.10:11.32 vmtoolsd2555xiaoma2006274402901621708S0.30.70:11.46 vmtoolsd4267root200000S0.30.00:00.01 kworker/0:0......

压力测试-内存

# 消耗前内存[xiaoma@centos7 ~10:32:24]$free-mtotal usedfreeshared buff/cache available Mem:39316852324139212996Swap:396703967# 消耗 1G 内存[root@centos7 ~14:19:11]# stress -m 1 --vm-bytes 1Gstress: info:[2623]dispatching hogs:0cpu,0io,1vm,0hdd# 消耗后内存[xiaoma@centos7 ~10:32:41]$free-mtotal usedfreeshared buff/cache available Mem:393115021507139212176Swap:396703967

压力测试-磁盘

# 消耗磁盘IO[root@centos7 ~]# stress -d 1 --hdd-bytes 2G# 监视活动状态百分比,%util[xiaoma@centos7 ~10:36:28]$sudoyuminstall-ysysstat iotop# 监控磁盘读写速度,重点关注rd_sec/s和wr_sec/s,单位是0.5k/每秒,每个sec(sector)是512Byte。[xiaoma@centos7 ~10:36:53]$ sar-dp1Linux3.10.0-1160.71.1.el7.x86_64(centos7.xiaoma.cloud)2026年07月22日 _x86_64_(2CPU)10时37分04秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util10时37分05秒 sr00.000.000.000.000.000.000.000.0010时37分05秒 sda1314.000.001345536.001024.00100.5177.400.6382.7010时37分05秒 centos-root0.000.000.000.000.000.000.000.0010时37分05秒 centos-swap0.000.000.000.000.000.000.000.0010时37分05秒 centos-home1298.000.001329152.001024.00101.1178.820.6482.70......# 监控进程读写:左右方向键调整排序列,'>' 代表当前排序列[xiaoma@centos7 ~10:38:12]$sudoiotop Total DISK READ:0.00B/s|Total DISK WRITE:1403.74M/s Actual DISK READ:0.00B/s|Actual DISK WRITE:1098.70M/s TID PRIOUSERDISK READ DISK WRITE SWAPIN IO COMMAND<2726be/4 root0.00B/s0.00B/s0.00%0.00%-bash2775be/4 xiaoma0.00B/s0.00B/s0.00%0.00%-bash4028be/4 xiaoma0.00B/s0.00B/s0.00%0.00%-bash754be/4 root0.00B/s0.00B/s0.00%0.00% ModemManager793be/4 root0.00B/s0.00B/s0.00%0.00% ModemManager[gdbus]775be/4 root0.00B/s0.00B/s0.00%0.00% ModemManager[gmain]902be/4 root0.00B/s0.00B/s0.00%0.00% NetworkManager --no-daemon909be/4 root0.00B/s0.00B/s0.00%0.00% NetworkManager -~o-daemon[gdbus]906be/4 root0.00B/s0.00B/s0.00%0.00% NetworkManager -~o-daemon[gmain]730be/4 root0.00B/s0.00B/s0.00%0.00% VGAuthService-s1602be/4 root0.00B/s0.00B/s0.00%0.00% X :0 -background~nolisten tcp vt11607be/4 root0.00B/s0.00B/s0.00%0.00% X :0 -background~t1[InputThread]1603be/4 root0.00B/s0.00B/s0.00%0.00% X :0 -background~vt1[llvmpipe-0]1604be/4 root0.00B/s0.00B/s0.00%0.00% X :0 -background~vt1[llvmpipe-1]288be/0 root0.00B/s0.00B/s0.00%0.00%[ata_sff]...

网络测试

# 传送一个大size的文件[root@centos7 ~10:43:34]# wget http://192.168.50.200/course-materials/iso/CentOS-7-x86_64-DVD-2207-02.iso# 监控带宽[xiaoma@centos7 ~10:44:11]$sudosar-nDEV1Linux3.10.0-1160.71.1.el7.x86_64(centos7.xiaoma.cloud)2026年07月22日 _x86_64_(2CPU)10时45分54秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s10时45分55秒 lo0.000.000.000.000.000.000.0010时45分55秒 virbr0-nic0.000.000.000.000.000.000.0010时45分55秒 virbr00.000.000.000.000.000.000.0010时45分55秒 ens338113.004052.0011986.68238.160.000.000.0010时45分55秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s10时45分56秒 lo0.000.000.000.000.000.000.0010时45分56秒 virbr0-nic0.000.000.000.000.000.000.0010时45分56秒 virbr00.000.000.000.000.000.000.0010时45分56秒 ens338126.004046.0012004.48238.190.000.000.00......

监控总结

以下是针对 Linux 系统监控的几条实用建议,涵盖关键监控维度和最佳实践:

  1. 核心指标实时监控重点跟踪 CPU 使用率(用户态 / 系统态占比)、内存占用(含缓存 /swap 使用率)、磁盘 I/O(读写吞吐量、IOPS)和网络流量(带宽利用率、连接数)。可通过top/htop(实时)、vmstat/iostat(系统级)等工具快速查看。
  2. 部署专业监控工具对于服务器集群或长期监控需求,建议使用 Prometheus + Grafana(可视化强)、Zabbix(全功能监控)或 Nagios(轻量告警)等工具,实现指标集中收集、趋势分析和历史数据查询。
  3. 设置关键阈值告警针对核心指标配置告警阈值(如 CPU 持续 5 分钟超 80%、磁盘空间不足 10%),通过邮件、短信或即时通讯工具推送告警,避免故障扩大。注意避免告警风暴(可设置告警合并或延迟)。
  4. 监控进程与服务状态定期检查关键服务(如 Nginx、MySQL)的运行状态、进程数及资源消耗,可通过systemctl status或自定义脚本实现。对异常退出的进程,结合日志排查崩溃原因。
  5. 日志集中管理与分析将系统日志(/var/log/messages)、应用日志集中存储(如使用 ELK 栈),关注错误信息(ERROR级别)、登录异常(/var/log/auth.log)和磁盘错误(dmesg | grep error),必要时配置日志告警规则。
  6. 磁盘健康监控除空间使用率外,需关注磁盘坏块(smartctl工具检测 S.M.A.R.T 信息)和文件系统完整性(定期运行fsck,非挂载状态下),避免硬件故障导致数据丢失。
  7. 网络与安全监控监控端口开放状态(netstat/ss)、异常连接(尤其是外部 IP 的高频访问)和防火墙规则生效情况。可结合tcpdump抓包分析可疑流量。
  8. 定期性能基线分析记录系统正常运行时的指标基线(如平均负载、内存使用峰值),当指标偏离基线时及时排查,避免微小异常累积成故障。
  9. 自动化监控脚本对个性化需求(如特定目录文件数、应用响应时间),编写 Shell 或 Python 脚本定期执行检查,输出结果至监控系统或直接触发告警。
  10. 监控权限与安全限制监控工具的权限(如仅授予读取日志和指标的权限),加密传输监控数据,防止监控系统本身成为安全薄弱点。

通过分层监控(基础指标→服务状态→业务性能)和主动预警,可显著提升系统稳定性和故障响应效率。