wrk 是一款现代 HTTP 基准测试工具,基于多线程设计,支持 Lua 脚本扩展,压测性能远高于 Apache Bench
① 安装编译环境:下载 Git for Windows(自带 MinGW 编译器)
② 克隆源码:打开 Git Bash 执行 git clone https://github.com/wg/wrk.git
③ 进入目录编译:cd wrk & make
④ 配置环境变量:将 wrk 目录添加到系统 Path,验证命令 wrk -v
① 更新软件源:sudo apt update
② 安装 wrk:sudo apt install wrk -y
③ 验证安装:wrk -v 查看版本号
wrk -t<线程数> -c<连接数> -d<测试时长> <测试URL>
✓ -t:线程数,建议设置为 CPU 核心数的 2 倍
✓ -c:总连接数,会平均分配到各个线程
✓ -d:测试时长,支持 s(秒)、m(分)、h(小时) 单位
✓ -s:指定 Lua 脚本文件
✓ --latency:打印延迟统计信息
测试百度首页,4线程、100连接、持续30秒并输出延迟:
wrk -t4 -c100 -d30s --latency https://www.baidu.com
✓ Requests/sec:每秒请求数(QPS),核心性能指标
✓ Latency:请求延迟,包括平均值、最大值、标准差
✓ Transfer/sec:每秒数据传输量
创建 header.lua 文件,添加自定义 User-Agent:
wrk.headers["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" wrk.headers["Token"] = "your-test-token"
执行命令:wrk -t4 -c100 -d30s -s header.lua https://target.com
创建 post.lua,模拟表单提交:
wrk.method = "POST" wrk.body = "username=test&password=123456" wrk.headers["Content-Type"] = "application/x-www-form-urlencoded"
执行命令:wrk -t4 -c100 -d30s -s post.lua https://target.com/login
创建 param.lua,随机生成请求参数:
function request()
local uid = math.random(1000, 9999)
return wrk.format("GET", "/user/"..uid)
end
执行命令:wrk -t4 -c100 -d30s -s param.lua https://target.com
仅能对自己拥有权限的服务器/网站进行压测,未经授权测试他人网站属于违法行为,需承担法律责任
Windows:关闭防火墙和后台程序,在任务管理器中设置 wrk 优先级为高
Kali:执行 ulimit -n 65535 提升最大文件描述符数,使用 htop 监控 CPU/内存
✓ Windows 编译报错:安装 make 工具,确保 Git Bash 路径无中文
✓ Kali 安装失败:更换软件源后重新执行 sudo apt install wrk
✓ 压测结果波动大:多次测试取平均值,避免测试时占用带宽