一、背景说明

近期在给公司WAF上新规则,为了验证新规则对nginx性能所带来的消耗,需要进行压测,这里记录一下 wrk2 的安装与使用方法,以备后用。

二、wrk2 简介

wrk2 是一个基于 wrk 的 HTTP 基准测试工具,与 apache bench(简称 ab)类似,主要用于单机压测。wrk2 采用多线程设计,支持通过 lua 脚本自定义 HTTP 请求、处理响应、以及生成压测报告。其两个主要特点是:

  1. 高并发能力:利用多线程生成 HTTP 请求,能够模拟大量客户端请求,适合高负载的性能测试。
  2. 精确的延迟统计:提供详细的延迟分布(如 99.9999% 分位数),使其适用于性能分析和优化场景。

三、wrk2 安装

在 CentOS 系统中,wrk2 目前未加入默认的包管理库,因此需要自行编译安装。以下为安装步骤:

  1. 下载最新安装包:

    wget https://github.com/Kong/wrk2/archive/refs/heads/master.zip
  2. 解压安装包:

    unzip master.zip
  3. 进入目录并编译:

    cd wrk2-master
    make
  4. 查看生成的 wrk 文件确认安装成功。
  5. wrk 文件移动到系统路径:

    mv wrk /usr/bin
3.1 错误处理

在编译过程中可能会遇到 openssl 库缺失的报错:

src/wrk.h:11:25: fatal error: openssl/ssl.h: No such file or directory

解决方法是安装 openssl-devel 开发库,安装后重新执行 make 命令:

yum install openssl-devel

四、wrk2 命令参数

执行 wrk --help 查看命令支持的参数,常用的参数包括:

  • -c:并发连接数
  • -d:测试持续时间
  • -t:使用的线程数,通常根据 CPU 核心数设置
  • -R:目标请求速率(QPS)

五、wrk2 使用示例

以模拟上篇文章中的测试场景为例,以下命令用 wrk2 发送 HTTP 请求:

wrk -t2 -c100 -d30s -R25000 http://10.0.100.38/

测试输出结果简洁明了,便于直观观察整体性能表现。


六、总结

wrk2 在单机压测方面表现出色,尤其在简单 HTTP 请求的场景中。不过在高并发或高延迟环境下,单机资源可能不足以支撑需求,因此采用分布式云压测工具可能会更合适。


汤青松
5.2k 声望8.3k 粉丝

《PHP Web安全开发实战》 作者