archlinux web压力测试工具

在 Arch Linux 下,主流的 Web 服务器压力测试工具非常丰富,从轻量单命令到分布式压测一应俱全。下面按 经典轻量工具、现代高性能工具、可编程/分布式工具 三类详细介绍,并做全面对比。


一、主流工具安装与核心介绍

1. Apache Bench (ab)

安装

sudo pacman -S apache-tools

简介
Apache 官方自带的 HTTP 基准测试工具,极简、轻量、开箱即用,单进程单线程模型。

常用命令

# 1000次请求,100并发
ab -n 1000 -c 100 http://localhost:8080/

# POST + JSON
ab -n 500 -c 50 -p post.json -T "application/json" http://localhost/api

优点

  • 安装即用、命令极简单
  • 结果清晰(RPS、平均延迟、连接时间)
  • 体积小、几乎无依赖

缺点

  • 单线程,高并发性能差
  • 默认 HTTP/1.0,不支持 HTTP/2
  • 无延迟分布(只有平均值)
  • 不支持动态请求、URL 列表

2. Siege

安装

sudo pacman -S siege

简介
老牌多功能压测工具,支持并发用户、URL 列表、渐进加压、延迟统计、错误率

常用命令

# 200并发,压30秒
siege -c 200 -t 30s http://localhost:8080

# 压多个URL(urls.txt每行一个)
siege -c 100 -t 1m -f urls.txt

# 详细延迟分布
siege -c 100 -t 30s --bench http://localhost

优点

  • 支持多 URL、随机请求
  • 输出完整:成功率、响应时间分布、传输量
  • 稳定、适合稳定性压测

缺点

  • 性能不如 wrk/oha
  • 脚本能力弱
  • 高并发下资源占用偏高

3. wrk / wrk2

安装

# wrk
sudo pacman -S wrk

# wrk2(固定RPS模式,AUR)
yay -S wrk2

简介
现代高性能 HTTP 压测标杆,C 语言 + 多线程 + epoll,几十万~百万 QPS 级别。

  • wrk:高并发压测、延迟分布
  • wrk2:增加 -R 固定 RPS 稳定负载

常用命令

# 8线程,200连接,压10秒,显示延迟分布
wrk -t8 -c200 -d10s --latency http://localhost:8080

# wrk2 固定 1000 RPS 压测
wrk2 -t4 -c100 -d30s -R 1000 --latency http://localhost

优点

  • 性能最强(同硬件远超 ab/siege)
  • 内置完整延迟百分位(50/90/99/99.9%)
  • Lua 脚本:动态 URL、Header、Body、认证
  • 内存/CPU 极低

缺点

  • 脚本偏底层
  • 报告简单,无图形化
  • 不支持分布式

4. oha(Rust 现代工具)

安装

sudo pacman -S oha
# 或 cargo install oha

简介
Rust 编写的现代压测工具,美观、高性能、HTTP/3、实时 UI、JSON/CSV 输出

常用命令

oha -n 1000 -c 100 http://localhost:8080
oha -z 10s -c 200 --http3 https://localhost

优点

  • 界面漂亮、实时统计
  • 支持 HTTP/1.1/2/3
  • 输出 JSON/CSV
  • Rust 安全、高效

缺点

  • 功能不如 wrk 全面
  • 脚本能力弱

5. hey(Go 轻量高性能)

安装

sudo pacman -S hey

简介
Go 编写,类似 ab 但多线程、HTTP/2、更稳、更快

常用命令

hey -n 2000 -c 150 -z 10s http://localhost:8080

优点

  • 简单、跨平台
  • 性能好、支持 HTTP/2
  • 结果清晰

缺点

  • 无脚本、无复杂场景

6. k6(Grafana 出品,JS 脚本)

安装

sudo pacman -S k6

简介
DevOps 友好:JS 脚本、CI/CD 友好、支持 HTTP/2/WebSocket、gRPC、内置指标。

示例脚本 test.js

import http from 'k6/http';
export let options = { vus: 100, duration: '30s' };
export default function() {
  http.get('http://localhost:8080');
}

运行

k6 run test.js

优点

  • JS 易写易维护
  • 适合自动化、集成测试
  • 协议支持广

缺点

  • 单机性能低于 wrk
  • 高并发资源较高

7. Locust(Python 分布式)

安装

sudo pacman -S locust
# 或 pip install locust

简介
Python 编写,Web UI、分布式、可编程用户行为

示例 locustfile.py

from locust import HttpUser, task, between
class QuickstartUser(HttpUser):
    wait_time = between(1, 3)
    @task def hello(self): self.client.get("/")

运行

locust -f locustfile.py --host=http://localhost:8080
# 浏览器访问 http://localhost:8089

优点

  • 可视化、分布式
  • Python 生态强
  • 适合复杂业务链路

缺点

  • 单机性能一般
  • 高并发需多机分布式

二、全面对比表

工具 开发语言 性能(QPS) HTTP/2 脚本 延迟分布 多URL 分布式 适用场景
ab C 低(单线程) ❌(仅均值) 快速基线、简单接口
siege C 稳定性、多页面
wrk/wrk2 C 极高 Lua(强) ✅(全百分位) 极限压测、基准
oha Rust ✅(+HTTP/3) 现代、美观、HTTP/3
hey Go 轻量快速
k6 Go+JS 中高 JS(强) CI/CD、自动化
Locust Python Python(强) 复杂业务、分布式

三、选型建议(Arch Linux 最佳实践)

1. 快速简单测试(首选)

  • ab / hey:1 分钟出结果,适合接口基线

2. 高并发极限压测(首选)

  • wrk:性能最强、延迟分布最准
  • wrk2:需要固定 RPS 稳定负载时用

3. 现代美观 + HTTP/3

  • oha:界面最好、支持 HTTP/3

4. 稳定性、多页面、错误率

  • siege:最稳、信息最全

5. 自动化 / CI/CD / 开发团队

  • k6:JS 脚本、集成友好

6. 复杂业务、分布式、可视化

  • Locust:Python + Web UI + 分布式

四、Arch 下推荐组合

  • 日常快速ab / oha
  • 极限基准wrk --latency
  • 稳定负载wrk2 -R
  • 自动化k6
  • 分布式/复杂场景Locust

要不要我根据你的服务器类型(Nginx/Caddy/Node.js等)和压测目标,直接给你一套可复制的wrk/siege/k6最佳命令和参数?

posted @ 2026-04-05 09:52  卓能文  阅读(5)  评论(0)    收藏  举报