系统到底能扛多少压力?瓶颈在哪里?
如果没有压测,你看到的性能几乎都是假象。
真正的系统优化流程其实是:
压测 → 发现瓶颈 → 优化 → 再压测本文系统性整理Linux下最重要的性能压测工具体系,覆盖:
CPU
内存
磁盘
网络
HTTP
全系统压力
并给出 真实工程实践中的使用方式。
没有压测的系统优化,本质是:
拍脑袋优化
真实系统中最常见的情况:
系统慢↓怀疑数据库↓优化 SQL↓结果没变化
原因可能是:CPU 已经打满
磁盘 IO 阻塞
网络带宽瓶颈
内存 swap
压测的意义:
找到系统极限
找到瓶颈组件
验证架构设计
验证扩容策略
Linux 压测工具可以按资源维度划分:

stress-ng 是 Linux 最强的压力测试工具之一。
支持:
CPU
内存
IO
调度
网络
虚拟内存
安装
Ubuntuapt install stress-ngMacbrew install stress-ngCPU 压测stress-ng --cpu 8 --timeout 60含义:8 个 CPU worker持续 60 秒
观察 CPUtophtop
结果:CPU usage ≈ 800%sysbench 也是经典压测工具。
安装
apt install sysbench压测 CPUsysbench cpu \--cpu-max-prime=20000 \--threads=8 \run
输出:CPU speed:events per second: 287.19General statistics:total time: 10.0155stotal number of events: 2877Latency (ms):min: 16.19avg: 27.81max: 48.5395th percentile: 32.53sum: 80020.66Threads fairness:events (avg/stddev): 359.6250/0.48execution time (avg/stddev): 10.0026/0.01
用于比较不同机器性能。stress-ng --vm 4 --vm-bytes 2G --timeout 60含义:4 个 worker每个使用 2G
总内存压力:≈ 8G专门用于:
内存稳定性测试
安装
apt install memtester运行memtester 4G 5含义测试 4GB 内存循环 5 次
适合:硬件检测
云服务器测试
磁盘性能是很多系统的瓶颈。
常见工具:
写入测试
dd if=/dev/zero of=test.img bs=1G count=1 oflag=direct输出:1.0 GB copied, 0.8 s, 1.3 GB/s读取测试dd if=test.img of=/dev/null bs=1G缺点:不支持复杂 IO 模型
fio是最强IO压测工具。
安装
apt install fio随机读写测试fio --name=randrw --rw=randrw --bs=4k --size=1G --numjobs=4 --runtime=60 --group_reporting
输出:IOPS=50000BW=200MB/s
readwriterandreadrandwriterandrw
模拟:MySQL
Kafka
Redis
类似 ping。
安装
apt install ioping运行ioping .输出avg latency: 0.4 ms用于判断:磁盘延迟
最常用网络压测工具。
安装
apt install iperf3服务端iperf3 -s客户端iperf3 -c server_ip输出Bandwidth: 9.4 Gbits/sec更专业的网络性能测试工具。
安装
apt install netperfTCP 测试netperf -H server_ip延迟测试
netperf -H server_ip -t TCP_RR专门测试:微秒级延迟
适合:
交易系统
高性能网络
安装
apt install sockperf最常见场景:
Web API 压测
安装
brew install wrk运行wrk -t8 -c200 -d30s http://localhost:8080参数-t 线程-c 连接-d 持续时间
输出Requests/sec: 45000Latency: 3ms
安装
brew install hey运行hey -n 100000 -c 200 http://localhost:8080经典工具
ab -n 100000 -c 200 http://localhost:8080/缺点: 性能较低如果你只想:
把机器压到极限
推荐两个工具。
一条命令压满机器
stress-ng --cpu 8 --vm 4 --io 4 --timeout 60系统压力:CPU + IO + Memorysysbench \--threads=16 \--time=60 \cpu run
真正专业的工程师不会只压测。
而是:
压测 + 分析推荐组合:
perf top或者perf recordperf report
iostat -x 1ss -s压测必须遵循三条原则。
不要一上来:10000 QPS
正确方式:
10050010002000
逐步增加。压测同时观察:
CPULoadIONetwork
工具:htopatopdstat
系统通常有一个:性能拐点
示例
QPS|| *| * *| * *| *| *| *|________________并发
超过这个点:延迟会暴涨、QPS下降
真正的生产压测流程:
wrk → API 压测fio → 磁盘测试iperf3 → 网络带宽stress-ng → 系统极限perf → 找CPU瓶颈
这套组合几乎可以分析 99% 的性能问题。
Linux 世界里有一句非常经典的话:
Without measurement, there is no optimization.
如果没有压测:
你的系统性能只是猜测
你的优化没有依据
你的架构无法验证
掌握这些工具,你就拥有了一整套:系统性能工程能力。