共计 3598 个字符,预计需要花费 9 分钟才能阅读完成。
Web 性能压力测试工具 Siege 怎么用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面丸趣 TV 小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
Siege 是一款开源的压力测试工具,设计用于评估 WEB 应用在压力下的承受能力。可以根据配置对一个 WEB 站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
Siege 可以从您选择的预置列表中请求随机的 URL。所以 siege 可用于仿真用户请求负载,而 ab 则不能。但不要使用 siege 来执行 *** 性能基准调校测试,这方面 ab 就准确很多。
Siege 官网:http://www.joedog.org/
一、安装
编译安装
wget http://www.joedog.org/pub/siege/siege-latest.tar.gz tar -zxvf siege-latest.tar.gz cd siege-2.72/ ./configure make make install
通过包安装
Debian/Ubuntu
apt-get install siege
CentOS
yum install siege
二、参数详解
命令行参数说明:
-C, 或 ndash;config 在屏幕上打印显示出当前的配置, 配置是包括在他的配置文件 HOME/.siegerc
-f FILE, ndash;file=FILE 指定用特定的 urls 文件运行 siege , 默认为 urls.txt, 位于 siege 安装目录下的 etc/urls.txt
-u URL, ndash;url=URL 测试指定的一个 URL, 对它进行”siege“, 此选项会忽略有关 urls 文件的设定
-b 进行压力测试,不进行延时。
-A, mdash;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
三、用法举例
siege -c 300 -r 100 -f url.txt
说明:- c 是并发量,- r 是重复次数。url.txt 就是一个文本文件,里面是要测试的 url,url.txt 每行都是一个 url。
urls.txt 文件是很多行待测试 URL 的列表以换行符断开, 格式为:
[protocol://]host.domain.com[:port][path/to/file]
url.txt 内容:
http://192.168.80.166/01.jpg
http://192.168.80.166/02.jpg
http://192.168.80.166/03.jpg
http://192.168.80.166/04.jpg
http://192.168.80.166/05.jpg
http://192.168.80.166/06.jpg
结果说明:
** SIEGE 2.72 ** Preparing 10 concurrent users for battle. The server is now under siege.. done. Transactions: 300 hits #已完成的事务总署 Availability: 100.00 % #完成的成功率 Elapsed time: 0.08 secs #总共使用的时间 Data transferred: 0.94 MB #响应中数据的总大小 Response time: 0.00 secs #显示网络连接的速度 Transaction rate: 3750.00 trans/sec #平均每秒完成的事务数 Throughput: 11.79 MB/sec #平均每秒传送的数据量 Concurrency: 8.50 #实际 *** 并发链接数 Successful transactions: 300 #成功处理的次数 Failed transactions: 0 #失败处理的次数 Longest transaction: 0.01 #最长事务处理的时间 Shortest transaction: 0.00 # 最短事务处理时间
四、常用的 siege 命令举例
200 个并发对 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 使用的一些总结
发送 post 请求时,url 格式为:http://www.xxxx.com/ POST p1=v1 p2=v2
如果 url 中含有空格和中文,要先进行 url 编码,否则 siege 发送的请求 url 不准确
siege 自身感觉也是有瓶颈的,并发数 *** 也就 1000,再提高就会报下面这样的错误
[error] socket: unable to connect sock.c:222: Operation already in progress socket: connection timed out
这样最终导致测试结果怎么都没法超过 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
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注丸趣 TV 行业资讯频道,感谢您对丸趣 TV 的支持。