siege压测
siege
是一个功能强大的 HTTP 负载测试和基准测试工具,用于评估 Web 服务器的性能和稳定性。它支持模拟多个用户同时向目标服务器发送请求,从而帮助测试服务器在高负载情况下的表现。
siege
的主要功能
- 压力测试:通过模拟并发用户来测试服务器的性能。
- 基准测试:测量服务器的响应时间、吞吐量等性能指标。
- 支持多种协议:支持 HTTP 和 HTTPS 请求。
- 易于配置:可以通过配置文件或命令行直接定义测试参数。
- 日志和统计报告:提供详细的请求日志和测试结果汇总。
安装方法
在 Linux 上,你可以通过以下方式安装 siege
:
Ubuntu/Debian:
sudo apt update
sudo apt install siege
CentOS/RHEL:
sudo yum install siege
MacOS(通过 Homebrew):
brew install siege
使用示例
1.简单测试一个 URL:
siege -c 10 -t 1M https://example.com
-c 10
:模拟 10 个并发用户。
-t 1M
:测试持续时间为 1 分钟。
https://example.com
:目标 URL。
2.测试 URL 列表:
创建一个 urls.txt
文件,里面列出多个 URL:
https://example.com/page1
https://example.com/page2
然后执行:
siege -c 20 -t 2M -f urls.txt
-f urls.txt
:从文件中读取 URL。
3.指定请求方法和数据:
siege -c 10 -t 30S -m "POST Test" -H "Content-Type: application/json" \
'https://example.com/api POST {"key":"value"}'
-m "POST Test"
:为测试命名。
-H "Content-Type: application/json"
:指定请求头。
'URL POST data'
:发送 POST 请求及其数据。
4.压力测试模式:
使用 --benchmark
选项运行基准测试:
siege --benchmark https://example.com
常见选项
选项 | 描述 |
---|---|
-c |
设置并发用户数 |
-t |
设置测试持续时间(如 10S、2M、1H) |
-f |
指定包含 URL 的文件路径 |
-d |
设置用户之间请求的随机延迟(秒) |
-H |
添加自定义 HTTP 请求头 |
-l |
启用日志记录 |
--benchmark |
启动基准测试模式,仅报告性能数据 |
siege
是一个非常实用的工具,特别适合 Web 开发人员、测试工程师以及运维人员在发布或优化服务器时使用。如果有更具体的问题或想要更高级的用法,可以随时告诉我!
help中文手册
[root@VM-0-16-centos ~]# siege --help
新的配置模板已添加到 /root/.siege
运行 siege -C 查看该文件中的当前设置
SIEGE 4.1.4
用法: siege [选项]
siege [选项] URL
siege -g URL
选项:
-V, --version 版本号,打印版本信息。
-h, --help 帮助,打印本部分内容。
-C, --config 配置,显示当前配置。
-v, --verbose 详细模式,打印通知到屏幕。
-q, --quiet 静默模式,关闭详细模式并抑制输出。
-g, --get GET,拉取 HTTP 头并显示事务。适合调试应用程序。
-p, --print 打印,与 GET 类似,但会打印整个页面内容。
-c, --concurrent=NUM 并发用户数,默认是 10。 此选项允许您设置并发用户数。从技术上讲,用户总数仅限于计算机的资源。
您配置的用户不应超过您的web服务器配置要处理的用户数。例如,默认的apache配置限制为255个线程。如果使用-c1024运行seave,那么769个seave用户将等待apache处理程序。因此,默认的siege配置限制为255个用户。你可以在里面增加这个数字siege.conf但是如果你把事情搞得一团糟,那么请不要向我们抱怨
-r, --reps=NUM 重复次数,设置测试运行的次数。
-t, --time=NUMm 定时测试,其中 "m" 是修饰符 S(秒)、M(分钟)或 H(小时)。
示例: --time=1H,测试 1 小时。此选项类似于--reps,但它没有指定每个用户应运行的次数,而是指定每个用户应运行的时间量。值格式是“NUMm”,其中“NUM”是时间量,“m”修饰符是S、m或H,表示秒、分和小时。要运行一个小时的siege,您可以选择以下任意组合:-t360s、-t60M、-t1H。修饰符不区分大小写,但它不需要数字和它本身之间的空格。
-d, --delay=NUM 时间延迟,在每次请求之前随机延迟。
-b, --benchmark 基准测试模式:请求之间没有延迟。
-i, --internet 模拟互联网用户,随机访问 URL。
-f, --file=FILE 文件,选择特定的 URL 文件。
-R, --rc=FILE RC,指定一个 siegerc 配置文件。
-l, --log[=FILE] 日志记录到文件。如果未指定文件,
默认路径为:PREFIX/var/siege.log。
-m, --mark="text" 标记,用一个字符串标记日志文件。
-H, --header="text" 添加请求头(可以有多个)。
-A, --user-agent="text" 设置请求中的 User-Agent。
-T, --content-type="text" 设置请求中的 Content-Type。
-j, --json-output JSON 输出,以 JSON 格式将最终统计信息打印到标准输出。
--no-parser 关闭 HTML 页面解析器。
--no-follow 不跟随 HTTP 重定向。
版权所有 (C) 2022 由 Jeffrey Fulmer 等人创作。
这是自由软件;请参阅源码以了解复制条件。
没有任何担保;即使关于适销性或特定用途适用性亦无担保。
siege -c 1 -r 1 http://127.0.0.1:5000/myget
一个并发 测试一次
siege -c 2 -r 1 http://127.0.0.1:5000/myget
两个并发 测试一次 测试总测试为 2*1=2
siege -c 1 -r 2 http://127.0.0.1:5000/myget
一个并发 测试两次 测试总测试为 2*1=2
siege -c 1 -t 2s http://127.0.0.1:5000/myget
一个并发 一共发起2s的请求
Siege输出结果说明
Transactions: 总共测试次数
Availability: 成功次数百分比
Elapsed time: 总共耗时多少秒
Data transferred: 总共数据传输
Response time: 等到响应耗时
Transaction rate: 平均每秒处理请求数
Throughput: 吞吐率
Concurrency: 最高并发
Successful transactions: 成功的请求数
Failed transactions: 失败的请求数