本文目录导读:

针对你提到的“Vegeta怎样攻击测试”,我推测你问的是性能测试工具Vegeta(一个用Go语言编写的HTTP负载测试工具),而非《龙珠》里的角色贝吉塔。
以下是使用Vegeta进行攻击(压力)测试的核心方法和步骤:
基础攻击命令
最常见的方式是使用vegeta attack命令,配合一个目标列表或单个目标。
最简单示例(单URL,恒定速率):
echo "GET http://example.com" | vegeta attack -rate=50 -duration=10s | vegeta report
-rate=50:每秒发送50个请求。-duration=10s:持续10秒。- 输出通过管道传给
vegeta report来生成报告。
目标列表攻击(多URL/多个请求)
创建一个目标文件(如 targets.txt),每行定义不同的请求。
示例 targets.txt
GET http://example.com/api/users
GET http://example.com/api/products?page=1
POST http://example.com/api/login
Content-Type: application/json
@./login_body.json # 指向JSON文件,可包含动态数据
攻击命令:
vegeta attack -targets=targets.txt -rate=100 -duration=30s | vegeta report
常用攻击参数(调整“攻击”强度)
-rate:每秒请求数,可以写固定值如-rate=500,也可以用时间格式如-rate=100/s。-duration:持续时间,如10s,1m,1h。-workers:并发工作者数,默认是10,实际每个工作者会负责发送部分请求,压力大时可增加此值(如-workers=100)。-max-workers:最大工作者数,用于自动扩展。-connections:每个工作者保持的连接数(HTTP/1.1 Keep-Alive),默认是0(无限制,但建议设置如-connections=20避免端口耗尽)。-insecure:跳过TLS证书验证(用于自签名证书或内部测试)。-header:添加自定义头部。-header "Authorization: Bearer token123"。-body:请求体文件路径(用于POST/PUT)。-timeout:请求超时时间(如-timeout=30s)。
结果分析
Vegeta 的输出通常是二进制格式,需要配合其他子命令查看。
生成文本报告:
vegeta attack ... | vegeta report
生成JSON报告(更详细):
vegeta attack ... | vegeta report --type=json
直接输出到文件:
vegeta attack ... > results.bin vegeta report results.bin vegeta report --type=json results.bin > results.json
高级攻击模式(如分布式或斜坡测试)
-
锥形压力(斜坡负载): 使用
-rate结合-duration和-max-workers,Vegeta 会自动调整速率,或者手动模拟:for rate in 10 50 100 200 500; do echo "GET http://example.com" | vegeta attack -rate=$rate -duration=10s -name="rate_${rate}" | vegeta report done -
分布式攻击: 将攻击结果合并,多台机器分别运行
vegeta attack并将结果输出到文件,然后用vegeta report *.bin合并汇报。
完整实战示例(压力测试API)
假设你想测试一个Post API,每秒1000个请求,持续1分钟。
创建目标文件 api_targets.txt:
POST http://yourserver.com/api/v1/process
Content-Type: application/json
@payload.json
创建请求体文件 payload.json:
{"user":"test","action":"purchase"}
执行攻击并保存结果:
vegeta attack -targets=api_targets.txt -rate=1000 -duration=1m -insecure -connections=50 -workers=20 > results.bin
查看报告:
vegeta report results.bin # 输出示例: # Success: 99.5% # Latencies: mean=120ms, 50%=95ms, 95%=250ms, 99%=400ms # Throughput: 950 req/s
常见注意事项
- 本地资源:不要在不调优参数的情况下对本地或生产环境直接进行过高压力测试,可能耗尽端口或CPU。
- Keep-Alive:如果要模拟真实浏览器行为(复用连接),保持默认行为;如果要测试无状态连接,设置
-connections=1。 - 错误分析:如果报告显示成功率低,检查错误原因(超时、连接拒绝、HTTP 4xx/5xx)。
如果你确实指的是《龙珠》里的贝吉塔如何进行攻击测试(比如他的招式测试),请告知,我会回答另一个版本,但根据技术语境,性能测试工具Vegeta的概率最大。
标签: 负载测试