stress 命令是一个用于在计算机系统上创建并模拟压力的实用工具,通常用于测试系统的稳定性和性能。它可以模拟 CPU 负载、内存占用、磁盘 I/O 和网络流量等,从而帮助用户评估系统在不同负载条件下的表现。
安装 stress 工具:
yum install epel-release -y
yum install stress -y
CPU 负载测试:
stress --cpu 2 --timeout 60
--cpu 2 :
表示启动 2 个 worker 进程,持续进行复杂的浮点计算(占用 CPU 资源)。
如果你的 CPU 是多核心的,这会让 2 个核心接近 100% 使用率(每个 worker 占满一个核心)。
如果是单核 CPU,则会争夺同一个核心的资源,总负载接近 100%。
--timeout 60
表示压力测试持续 60 秒(1 分钟),之后自动停止。
如果不设置这个参数,stress 会一直运行,直到手动终止(如按 Ctrl+C)。
内存占用测试:
stress --vm 2 --vm-bytes 1G --vm-hang 100 --timeout 100s
--vm 2: 启动 2 个内存压力测试进程(worker)
--vm-bytes 1G: 每个 worker 分配 1GB 内存(总共占用 2 × 1GB = 2GB)
--vm-hang 100: 分配内存后,保持占用 100 秒(不释放)
--timeout 100s: 整个测试运行 100 秒 后自动停止
磁盘 I/O 测试:
stress --hdd 2 --hdd-bytes 10G --backoff 2000000
--hdd 2: 启动 2 个磁盘写入进程(worker)
--hdd-bytes 10G: 每个 worker 写入 10GB 数据(总写入量 2 × 10GB = 20GB)
--backoff 2000000: 控制写入速度(单位:微秒),值越大写入越慢
扩充:dd命令快速生成大文件或者小文件的方法
创建指定大小的文件:
dd if=/dev/zero of=test bs=1M count=1000
if=/dev/zero: 输入文件(/dev/zero 是一个虚拟设备,生成无限的空字符 \0)
of=test:输出文件(在当前目录创建名为 test 的文件)
bs=1M: 每次读写 1MB 数据块(Block Size)
count=1000:总共写入 1000 个块(即 1000 × 1MB = 1GB 数据)
创建一个虚拟大文件:
如果你只想让文件系统认为存在一个超大文件,但不实际写入硬盘,可以使用 seek 参数:
dd if=/dev/zero of=test bs=1M count=0 seek=100000
if=/dev/zero: 输入源(空字符流,但实际不会读取)
of=test: 输出文件名为 test
bs=1M: 块大小为 1MB(仅用于计算)
count=0: 不写入任何数据块
seek=100000: 跳过输出文件的前 100000 个块(即创建 100000 × 1MB = 100GB 的空洞文件)
创建多个小文件:
要随机生成 1 百万个 1K 的文件,可以使用以下命令:
seq 1000000 | xargs -i dd if=/dev/zero of={}.dat bs=1024 count=1
为每个数字创建 1 个 1KB 的文件