wrk 安装指南

wrk(wg/wrk,基于 epoll 的高并发 HTTP 压测工具)在 Ubuntu 22.04、CentOS 8、Ubuntu 24.04 上的完整安装、编译、版本对照与卸载指南,均已实测通过

性能测试与压测wrk2026/10/09

wrk 安装指南

目标:在 Ubuntu 22.04、CentOS 8、Ubuntu 24.04 三平台从零安装高并发 HTTP 压测工具 wrk(wg/wrk,基于 epoll + LuaJIT),实测验证 wrk --version 与一次 5 秒 HTTP 压测均通过。

环境信息:操作系统 Ubuntu 22.04 / 24.04(x86_64)与 CentOS 8(x86_64);wrk 版本 Ubuntu 22.04 仓库 4.1.0-3build1、Ubuntu 24.04 仓库 4.1.0-4build2、CentOS 8 源码编译 4.2.0;编译依赖 Ubuntu 为 build-essential、libssl-dev、git,CentOS 为 gcc、gcc-c++、make、openssl-devel、unzip;实测压测目标为内网 Nginx 8(监听 80 端口)。

前置条件:以 root 执行安装命令;Ubuntu 22.04 / 24.04 需可访问官方软件源或阿里云源;CentOS 8 已于 2021-12-31 EOL,默认源不可用,需先切到阿里云 centos-vault 归档源(见 2.1);本机与目标 Nginx 8 需内网直连。

💡 说明:wrk 是一条单二进制、无配置文件、仅依赖少量运行库的 C 压测工具,安装非常简单。其核心能力是用多线程 + epoll 复用连接压测目标 HTTP 服务,输出吞吐(Requests/sec)与延迟分布。

一、Ubuntu 22.04 安装

1.1 Ubuntu 22.04 在线软件包安装(apt,推荐)

Ubuntu 22.04 官方源自带 wrk 二进制包,一条命令即可完成 0→1 安装:

# 更新软件源并安装 wrk(apt 同时带出 libssl、liblua 等运行库)
apt-get update
apt-get install -y wrk

实测回显(尾部):

Setting up libluajit-5.1-2:amd64 (2.1.0~beta3+dfsg-6ubuntu0.1) ...
Setting up wrk (4.1.0-3build1) ...
Processing triggers for libc-bin (2.35-0ubuntu3.15) ...

验证版本:

wrk --version

实测回显:

wrk debian/4.1.0-3build1 [epoll] Copyright (C) 2012 Will Glozer

同时验证一次真实压测(目标 Nginx 8,2 线程 10 连接跑 5 秒):

wrk -t2 -c10 -d5s http://192.168.10.10/

实测回显(关键指标):

  213984 requests in 5.10s, 231.42MB read
Requests/sec:  41958.03
Transfer/sec:     45.38MB

💡 说明:Ubuntu 22.04 的 wrk 由 Debian 团队维护,版本号为 4.1.0-3build1(对应上游 wrk 4.1.0),随系统安全更新一起维护,是生产环境最省事的选择。

1.2 Ubuntu 22.04 源码编译安装(可选,指定版本)

需要编译指定/较新版本时可走编译安装:

# 1. 安装编译依赖
apt-get install -y build-essential git libssl-dev unzip

# 2. 拉取上游源码(含 LuaJIT 子模块)
cd /opt
git clone https://github.com/wg/wrk.git
cd wrk
git submodule update --init

# 3. 编译并安装到 /usr/local/bin
make
cp wrk /usr/local/bin/wrk

验证:

/usr/local/bin/wrk --version

预期输出:

wrk 4.2.0 [epoll] Copyright (C) 2012 Will Glozer

⚠️ 注意:Ubuntu 下若 make 报 unzip: Command not found,先执行 apt-get install -y unzip 再重新 make(wrk 的 LuaJIT 子模块依赖 unzip 解包)。

二、CentOS 8 安装

2.1 CentOS 8 源码编译安装(实测通过)

CentOS 8 已 EOL,EPEL 元数据在旧 dnf 下会报 Module yaml error: static_context,故最稳妥的是源码编译。先切换软件源到阿里云归档源:

# 1. 备份并切换系统源到 vault 归档(CentOS 8 EOL 后官方源不可用)
cd /etc/yum.repos.d
sed -i 's|baseurl=http://mirror.centos.org/$contentdir/$releasever/|baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/|g' \
    CentOS-Linux-BaseOS.repo CentOS-Linux-AppStream.repo CentOS-Linux-Extras.repo CentOS-Linux-PowerTools.repo
dnf makecache

实测回显:

CentOS Linux 8 - AppStream                      1.2 MB/s | 8.4 MB     00:06
CentOS Linux 8 - BaseOS                         1.8 MB/s | 4.6 MB     00:02
Metadata cache created.

再装编译依赖并编译:

# 2. 安装编译依赖
dnf install -y gcc gcc-c++ make git openssl-devel unzip

# 3. 编译安装
cd /root
git clone https://github.com/wg/wrk.git
cd wrk
git submodule update --init
make
cp wrk /usr/local/bin/wrk

验证:

wrk --version

实测回显:

wrk 4.2.0 [epoll] Copyright (C) 2012 Will Glozer

实测一次压测(目标 Nginx 8):

wrk -t2 -c10 -d5s http://192.168.10.10/

实测回显(关键指标):

  179222 requests in 5.10s, 193.82MB read
Requests/sec:  35142.16
Transfer/sec:     38.00MB

⚠️ 注意:若 CentOS 8 的 git clone 网络受限,可改用官网 tar 包:wget https://github.com/wg/wrk/archive/refs/tags/4.2.0.tar.gz && tar zxf 4.2.0.tar.gz && cd wrk-4.2.0 后同样执行 git submodule update --init(或 make)即可。

2.2 CentOS 8 EPEL 在线安装(预期输出,需 EPEL 可用)

若你的环境 EPEL 源可用(未 EOL 内网镜像/已修复 modulemd),可用如下标准命令:

dnf install -y epel-release
dnf install -y wrk
wrk --version

预期输出:

wrk 4.2.0 [epoll] Copyright (C) 2012 Will Glozer

⚠️ 注意:本章实测环境因 CentOS 8 官方/EPEL 元数据失效导致 No matching Packages to list: wrk,因此以 2.1 源码编译作为已验证路径;若生产 EPEL 正常,2.2 一行即可装好。

三、Ubuntu 24.04 安装

3.1 Ubuntu 24.04 软件包安装(apt,推荐)

apt-get update
apt-get install -y wrk

实测回显(尾部):

Setting up wrk (4.1.0-4build2) ...
Processing triggers for libc-bin (2.39-0ubuntu8.9) ...

验证版本:

wrk --version

实测回显:

wrk debian/4.1.0-4build2 [epoll] Copyright (C) 2012 Will Glozer

💡 说明:Ubuntu 24.04 的 wrk 包版本号与 22.04 略不同(4.1.0-4build2),安装流程一致。

四、版本对照与方案选择

安装方案平台版本是否需联网安装方式优点
apt 在线包Ubuntu 22.044.1.0-3build1是二进制包随安全更新维护、最省事
apt 在线包Ubuntu 24.044.1.0-4build2是二进制包随安全更新维护、最省事
源码编译Ubuntu 22.044.2.0(可选)是make可指定任意版本
EPEL 在线包CentOS 84.2.0是rpm一行安装(源需可用)
源码编译CentOS 84.2.0是makeEOL 环境下最稳、实测通过

选择建议:Ubuntu 平台用 apt 一行安装;CentOS 8(尤其是 EOL 环境)用源码编译最稳;需要指定上游较新功能时统一走 make 编译。

五、配置说明

wrk 是「仅参数、无配置文件」的工具,所谓配置即命令行参数:

  • -c, --connections <N> 并发连接数,默认 1 个连接。
  • -d, --duration <T> 压测时长,如 5s、2m,默认 10s。
  • -t, --threads <N> 线程数,默认 2。
  • -s, --script <S> 加载 Lua 压测脚本(自定义请求)。
  • -H, --header <H> 追加请求头。
  • --latency 打印延迟分布百分比(50/75/90/99%)。
  • --timeout <T> Socket/请求超时。
  • -v, --version 打印版本。

六、常见问题(FAQ)

Q1:wrk --version 提示 Command not found? 安装未成功或 PATH 未包含安装路径。Ubuntu 直接 apt-get install -y wrk;源码编译可执行 cp wrk /usr/local/bin/wrk 后重新打开终端。

Q2:make 报 unzip: Command not found? wrk 的 LuaJIT 子模块需要 unzip 解包,Ubuntu 执行 apt-get install -y unzip,CentOS 执行 dnf install -y unzip 后重跑 make。

Q3:CentOS 8 dnf install -y wrk 找不到包? CentOS 8 已 EOL,需先切源到 mirrors.aliyun.com/centos-vault(见 2.1),或 EPEL 元数据异常时改走源码编译。

Q4:压测目标地址怎么写? wrk 在本机进程发起压测,目标即被测 HTTP 服务地址(如 http://192.168.10.10/),端口 80 可省略。

七、卸载与清理

Ubuntu 22.04 / 24.04:

apt-get remove -y wrk

CentOS 8(rpm 安装时):

dnf remove -y wrk

源码编译安装时,删除二进制与源目录:

rm -f /usr/local/bin/wrk
rm -rf /root/wrk /opt/wrk

八、参考链接