高并发的场景模拟 Siege压力测试命令使用

Siege安装(略,百度一大把)

Siege命令常用参数

-c 200 指定并发数200

-r 5 指定测试的次数5

-f urls.txt 制定url的文件

-i internet系统,随机发送url

-b 请求无需等待 delay=0

-t 5 持续测试5分钟

# -r和-t一般不同时使用

Siege 常用案例

# 200个并发对http://www.google.com发送请求100次

siege -c 200 -r 100 http://www.google.com
# 在urls.txt中列出所有的网址

siege -c 200 -r 100 -f urls.txt
# 随机选取urls.txt中列出所有的网址

siege -c 200 -r 100 -f urls.txt -i
# delay=0,更准确的压力测试,而不是功能测试
siege -c 200 -r 100 -f urls.txt -i -b
# 指定http请求头 文档类型

siege -H "Content-Type:application/json"
-c 200 -r 100 -f urls.txt -i -b

Siege输出结果说明

  • Transactions: 总共测试次数
  • Availability: 成功次数百分比
  • Elapsed time: 总共耗时多少秒
  • Data transferred: 总共数据传输
  • Response time: 等到响应耗时
  • Transaction rate: 平均每秒处理请求数
  • Throughput: 吞吐率
  • Concurrency: 最高并发
  • Successful transactions: 成功的请求数
  • Failed transactions: 失败的请求数

Siege使用的一些总结

  1. 发送post请求时,url格式为:http://www.xxxx.com/ POST p1=v1&p2=v2
  2. 如果url中含有空格和中文,要先进行url编码,否则siege发送的请求url不准确
  3. siege自身感觉也是有瓶颈的,并发数最大也就1000,再提高就会报下面这样的错误
  4. socket: unable to connect sock.c:222: Operation already in progress socket: connection 这样最终导致测试结果怎么都没法超过2W每秒的请求,所以就把siege -c 1000 -r 100 -i -b -f url.txt 放到shell中并发执行
#!/bin/bash 
user_agent="Siege 1.0" 
siege_rc="siege.rc" 
concurrent=150 
repet=200 
siege_single_urls="singleurl.txt" 
siege_prefix_urls="prefixurl.txt" 

for i in {1..10} 
do 
siege -c $concurrent -r $repet -i -b -f $siege_single_urls -R $siege_rc -A "$user_agent" &; 
done 

命令行参数说明

-C,或–config 在屏幕上打印显示出当前的配置,配置是包括在他的配置文件HOME/.siegerc

-f FILE, –file=FILE 指定用特定的urls文件运行siege ,默认为urls.txt,位于siege 安装目录下的etc/urls.txt

-u URL,–url=URL 测试指定的一个URL,对它进行”siege “,此选项会忽略有关urls文件的设定

-b 进行压力测试,不进行延时。

-A, —user-agent=”text” 设置请求的User-Agent

siegerc设定档说明:

verbose :要不要显示过程。

display-id :显示过程的时候,要不要显示模拟user的id

show-logfile :跑完之后要不要显示log资讯

logging :要不要log到档案

logfile :要log到档案的话,档名是什么

protocol :HTTP通讯协定( HTTP/1.1或HTTP/1.0 两者择一)

connection :keep-alive表示模拟成persistent connection(写close则反之)

concurrent :模拟有几个user来冲

time :跑多久之后停止( H=hours, M=minutes, S=seconds)

reps :每一个concurrent冲几次。

file :多个目的url情形下的url档案位置。

url :单一url情形下的指定url

delay :非benchmakr行况下,每个模拟user随机延迟0到这个数字(单位:秒)。

timeout :socket connection timeout(单位:秒)。

failures :socket失败次数(timeouts, connection failures)到达这个数字就停下来。

internet :随机从urls.txt抓出url,否则从urls.txt循序。

benchmark :跑benchmark模式的话,siege将不会在每个connection间delay,适合拿来做load testing.

user-agent :送出的agent识别

login :WWW-Authenticate login( login = jdfulmer:topsecret:Admin )(非form based)

username,password :也是login用的(非form based)

Login URL :每一个模拟user都必需经过的第一个login url( form based)

proxy-host,proxy-port,proxy-login :使用proxy的话要填这个。(proxy-login: jeff:secret:corporate)

follow-location :redirection support

zero-data-ok :接不接受zero-length data

chunked :HTTP/1.1需要chunked encoding

猜你喜欢

转载自blog.csdn.net/abc564643122/article/details/79575400
今日推荐