Linux 压力测试工具 stress
stress命令是 Linux 系统中一个简单但非常实用的压力测试工具。它的主要用途是模拟系统在高负载情况下的表现,通过消耗 CPU、内存、磁盘 I/O 等资源,帮助系统管理员和开发人员评估系统的稳定性、发现性能瓶颈,以及验证监控工具是否正常工作。
博主博客
如何安装 stress
在大多数 Linux 发行版中,stress 都可以通过官方的包管理器直接安装,非常方便。
-
对于 Ubuntu/Debian 系统:
sudo apt update sudo apt install stress -
对于 CentOS/RHEL 系统:
CentOS 的默认软件源中可能没有stress,需要先安装epel-release扩展源,然后再进行安装。sudo yum install epel-release sudo yum install stress
安装完成后,可以通过 stress --version 命令来验证是否安装成功。
核心参数详解
stress 命令通过不同的选项来模拟不同类型的资源压力。下面这个表格整理了最常用的几个参数:
| 参数 | 作用 | 典型用法示例 |
|---|---|---|
-c N, --cpu N |
模拟CPU压力:产生 N 个进程,每个进程都不断计算随机数的平方根,从而耗尽CPU资源。 |
stress -c 4 |
-i N, --io N |
模拟磁盘I/O压力:产生 N 个进程,每个进程不断调用 sync() 系统调用,将内存缓冲区内容写入磁盘,产生I/O负载。 |
stress -i 2 |
-m N, --vm N |
模拟内存压力:产生 N 个进程,每个进程不断分配和释放内存。 |
stress -m 2 |
--vm-bytes B |
与 -m 配合使用:指定每个 vm 进程分配的内存大小。单位可以是 K, M, G。 |
stress -m 2 --vm-bytes 512M |
--vm-keep |
与 -m 配合使用:让 vm 进程一直占用内存,而不是默认的重复分配-释放模式。 |
stress -m 2 --vm-bytes 512M --vm-keep |
-d N, --hdd N |
模拟磁盘及文件系统压力:产生 N 个进程,每个进程创建、写入并删除临时文件。 |
stress -d 2 |
--hdd-bytes B |
与 -d 配合使用:指定每个 hdd 进程写入的文件大小。 |
stress -d 2 --hdd-bytes 1G |
-t N, --timeout N |
指定测试时长:让压力测试在 N 秒后自动结束。如果不加此参数,stress 会一直运行直到手动终止(Ctrl+C)。 |
stress -c 4 -t 60 |
-v, --verbose |
显示详细信息:输出测试过程中的详细信息。 | stress -c 4 -v |
-q, --quiet |
静默模式:除了错误信息外,不输出任何内容。 | stress -c 4 -q |
常见使用场景与示例
了解了参数后,我们来看几个实际的压测场景,你可以配合 top、htop、free、iostat 等监控命令来观察系统的实时变化。
-
CPU 满载测试
如果你的服务器有4个CPU核心,想看看它们全部满负荷运行时系统的表现:stress -c 4 -t 60这个命令会产生4个CPU压力进程,持续60秒。用
top命令可以看到CPU的us(用户态) 使用率接近100%。 -
内存消耗测试
模拟系统内存被大量占用的情况,比如消耗2GB内存(假设系统有足够内存):stress -m 2 --vm-bytes 1G --vm-keep -t 120这个命令会启动2个进程,每个进程固定占用1GB内存,持续120秒。
--vm-keep参数确保了内存被持续占用,而不是反复分配释放。你可以用free -h命令查看内存使用情况。 -
磁盘I/O压力测试
模拟大量的磁盘读写操作,测试磁盘的响应能力:stress -i 4 -d 2 --hdd-bytes 1G -t 100这个命令综合了I/O压力和磁盘压力:
-i 4启动4个进程通过sync()产生I/O负载;-d 2 --hdd-bytes 1G启动2个进程,每个进程会持续写入并删除1GB的临时文件。此时用iostat -x 1命令可以观察到磁盘的利用率(%util)和等待时间可能非常高。 -
综合压力测试
更真实地模拟服务器在高并发下的复杂场景,可以组合多种压力:stress -c 4 -i 2 -m 2 --vm-bytes 512M -d 1 --hdd-bytes 2G --timeout 300s这条命令会在300秒内,同时对CPU(4个进程)、I/O(2个进程)、内存(2个进程,各512M)和磁盘(1个进程,写2G文件)施加压力,全面考验系统的稳定性。
注意事项
- 谨慎使用:在生产环境或重要的服务器上执行
stress命令要格外小心。高负载可能会导致系统响应缓慢甚至无响应,影响线上服务。 - 权限问题:某些操作(如修改系统参数)可能需要
root权限。 - 适时终止:如果忘记设置
-t参数,压测会一直进行。此时可以通过killall stress命令或在top中找到进程并杀死它们来手动停止。
总而言之,stress 是一个轻量级但功能强大的工具,通过模拟各种高负载场景,能帮你更好地了解系统在极限条件下的表现,是性能调优和稳定性测试的得力助手。
Linux 压力测试工具 stress
https://blog.uso6.com/archives/linux-ya-li-ce-shi-gong-ju-stress
评论