Web性能压力测试工具Siege怎么用

70次阅读
没有评论

共计 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 的支持。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-04发表,共计3598字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)