1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 运维 - 正文

君子好学,自强不息!

Web性能压力测试工具——Siege详解

2022-11-10 | 运维 | gtxyzz | 573°c
A+ A-

Siege是一款开源的压力测试工具,设计用于评估WEB应用在压力下的承受能力。可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。

Siege可以从您选择的预置列表中请求随机的URL。所以siege可用于仿真用户请求负载,而ab则不能。但不要使用siege来执行***性能基准调校测试,这方面ab就准确很多。

Siege官网:http://www.joedog.org/

一、安装

  • 编译安装
wgethttp://www.joedog.org/pub/siege/siege-latest.tar.gz
tar-zxvfsiege-latest.tar.gz
cdsiege-2.72/
./configure
make
makeinstall
  • 通过包安装

Debian/Ubuntu

apt-getinstallsiege

CentOS

yuminstallsiege

二、参数详解

  • 命令行参数说明:

-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

三、用法举例

siege-c300-r100-furl.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

结果说明:

**SIEGE2.72
**Preparing10concurrentusersforbattle.
Theserverisnowundersiege..done.

Transactions:300hits#已完成的事务总署
Availability:100.00%#完成的成功率
Elapsedtime:0.08secs#总共使用的时间
Datatransferred:0.94MB#响应中数据的总大小
Responsetime:0.00secs#显示网络连接的速度
Transactionrate:3750.00trans/sec#平均每秒完成的事务数
Throughput:11.79MB/sec#平均每秒传送的数据量
Concurrency:8.50#实际***并发链接数
Successfultransactions:300#成功处理的次数
Failedtransactions:0#失败处理的次数
Longesttransaction:0.01#最长事务处理的时间
Shortesttransaction:0.00#最短事务处理时间

四、常用的siege命令举例

  • 200个并发对www.google.com发送请求100次
siege-c200-r100http://www.google.com
  • 在urls.txt中列出所有的网址
siege-c200-r100-furls.txt
  • 随机选取urls.txt中列出所有的网址
siege-c200-r100-furls.txt-i

delay=0,更准确的压力测试,而不是功能测试

siege-c200-r100-furls.txt-i-b

指定http请求头 文档类型

siege-H"Content-Type:application/json"-c200-r100-furls.txt-i-b

五、Siege使用的一些总结

  • 发送post请求时,url格式为:http://www.xxxx.com/ POST p1=v1&p2=v2
  • 如果url中含有空格和中文,要先进行url编码,否则siege发送的请求url不准确
  • siege自身感觉也是有瓶颈的,并发数***也就1000,再提高就会报下面这样的错误
[error]socket:unabletoconnectsock.c:222:Operationalreadyinprogresssocket:connectiontimedout

这样最终导致测试结果怎么都没法超过2W每秒的请求,所以就把siege -c 1000 -r 100 -i -b -f url.txt 放到shell中并发执行

#!/bin/bash
user_agent="Siege1.0"
siege_rc="siege.rc"
concurrent=150
repet=200
siege_single_urls="singleurl.txt"
siege_prefix_urls="prefixurl.txt"

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

六、参考文档

http://www.google.com

http://t.cn/Rt8w7Se

http://www.ha97.com/4663.html

http://longmu.blog.51cto.com/431337/943008

本文来源:1818IP

本文地址:https://www.1818ip.com/post/8279.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。