Siege是一款开源的压力测试工具,设计用于评估WEB应用在压力下的承受能力。可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。siege可以从您选择的预置列表中请求随机的URL。所以siege可用于仿真用户请求负载,而ab则不能。但不要使用siege来执行最高性能基准调校测试,这方面ab就准确很多。

Siege官网:http://www.joedog.org/
Siege下载:http://www.joedog.org/pub/siege/siege-latest.tar.gz

安装

  • 编译安装
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,或–config 在屏幕上打印显示出当前的配置,配置是包括在他的配置文件$HOME/.siegerc中,可以编辑里面的参数,这样每次siege 都会按照它运行.
-v 运行时能看到详细的运行信息
-c n,或–concurrent=n 指定并发的用户个数,-c 200指定并发数200。模拟有n个用户在同时访问,n不要设得太大,因为越大,siege 消耗本地机器的资源越多
-i,–internet 随机访问urls.txt中的url列表项,以此模拟真实的访问情况(随机性),当urls.txt存在是有效。默认为urls.txt列表从上到下来压。
-d n,–delay=n hit每个url之间的延迟,在0-n之间
-r n,–reps=n 重复运行测试n次,不能与-t同时存在
-t n,–time=n 持续时间。即测试持续时间。默认是分钟。例: -t10S,(10秒) -t5M,(5分钟) -t1H,(1小时)
-l 运行结束,将统计数据保存到日志文件中siege .log,一般位于/usr/local/var/siege .log中,也可在.siegerc中自定义
-R SIEGERC,–rc=SIEGERC 指定用特定的siege 配置文件来运行,默认的为$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 -c  -r  -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 concurrent users for battle.
The server is now under siege.. done. Transactions: 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: #成功处理的次数
Failed transactions: #失败处理的次数
Longest transaction: 0.01 #最长事务处理的时间
Shortest transaction: 0.00 #最短事务处理时间

常用的siege命令举例

  • 200个并发对www.google.com发送请求100次
siege -c  -r  http://www.google.com
  • 在urls.txt中列出所有的网址
siege -c  -r  -f urls.txt
  • 随机选取urls.txt中列出所有的网址
siege -c  -r  -f urls.txt -i
  • delay=0,更准确的压力测试,而不是功能测试
siege -c  -r  -f urls.txt -i -b
  • 指定http请求头 文档类型
siege -H "Content-Type:application/json" -c  -r  -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:: 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=
repet=
siege_single_urls="singleurl.txt"
siege_prefix_urls="prefixurl.txt" for i in {..}
do
siege -c $concurrent -r $repet -i -b -f $siege_single_urls -R $siege_rc -A "$user_agent" &;
done

参考资料:

https://www.hi-linux.com/posts/50141.html

Web 性能压力测试工具之 Siege 详解的更多相关文章

  1. Web性能压力测试工具之Siege详解

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

  2. (总结)Web性能压力测试工具之WebBench详解

      PS:在运维工作中,压力测试是一项很重要的工作.比如在一个网站上线之前,能承受多大访问量.在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验.但是,在压力测试中存在一个共性,那就是压力 ...

  3. Web性能压力测试工具之WebBench详解

    PS:在运维工作中,压力测试是一项很重要的工作.比如在一个网站上线之前,能承受多大访问量.在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验.但是,在压力测试中存在一个共性,那就是压力测试 ...

  4. 三种web性能压力测试工具

    三种web性能压力测试工具http_load webbench ab小结 题记:压力和性能测试工具很多,下文讨论的是我觉得比较容易上手,用的比较多的三种 http_load 下载地址:http://w ...

  5. [AapacheBench工具]web性能压力测试工具的应用与实践

    背景:网站性能压力测试是性能调优过程中必不可少的一环.服务器负载太大而影响程序效率是很常见的事情,一个网站到底能够承受多大的用户访问量经常是我们最关心的问题.因此,只有让服务器处在高压情况下才能真正体 ...

  6. 【转】Web性能压力测试工具之ApacheBench(ab)详解

    PS:网站性能压力测试是性能调优过程中必不可少的一环.只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题.Apache中有个自带的,名为ab的程序,可以对Apache或其它类型的服务器进行网 ...

  7. Web性能压力测试工具之ApacheBench(ab)详解

    PS:网站性能压力测试是性能调优过程中必不可少的一环.只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题.Apache中有个自带的,名为ab的程序,可以对Apache或其它类型的服务器进行网 ...

  8. Web性能压力测试工具之Apache AB 详解

    下载安装地址: http://httpd.apache.org/download.cgi yum install httpd-tools http://www.apachelounge.com/dow ...

  9. [转] Web性能压力测试工具之ApacheBench(ab)详解

    PS:网站性能压力测试是性能调优过程中必不可少的一环.只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题.Apache中有个自带的,名为ab的程序,可以对Apache或其它类型的服务器进行网 ...

随机推荐

  1. samba简单配置

    Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB (Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种 ...

  2. 【转】解决maven无法加载本地lib/下的jar包问题(程序包XXX不存在)

    原文链接:https://www.cnblogs.com/adeng/p/7096484.html 这次一个项目用到maven编译,我在本地开发的时候jar包都是放在WEB-INF/lib目录下,通过 ...

  3. istio-1.1.6镜像列表

    istio-1.1.6镜像列表 istio-1.1.6/install/kubernetes/istio-demo.yaml文件里提取出来的镜像,方便作harbor部署. ============== ...

  4. machine learning (4)---feature scaling

    feature scaling:缩小或扩大feature的值,使所有的feature处于类似的范围,这样进行gradient descnet时更快趋向最小值.因为不同的feature的范围相差很大时, ...

  5. MySQL复制介绍及搭建

    MySQL复制介绍 MySQL复制就是一台MySQL服务器(slave)从另一台MySQL服务器(master)进行日志的复制然后再解析日志并应用到自身,类似Oracle中的Data Guard. M ...

  6. Linux命令基础4-cat命令

    cat命令连接文件并打印到标准输出设备上,cat经常用来显示文件的内容,类似于下的type命令. 注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容.因此,一般用more等命 ...

  7. js通过html的url获取参数值

    function getUrlParameter(name){ name = name.replace(/[]/,"\[").replace(/[]/,"\[" ...

  8. ES 调优查询亿级数据毫秒级返回!怎么做到的?--文件系统缓存

    一道面试题的引入: 如果面试的时候碰到这样一个面试题:ElasticSearch(以下简称ES) 在数据量很大的情况下(数十亿级别)如何提高查询效率? 这个问题说白了,就是看你有没有实际用过 ES,因 ...

  9. 叉积_判断点与三角形的位置关系 P1355 神秘大三角

    题目描述 判断一个点与已知三角形的位置关系. 输入输出格式 输入格式: 前三行:每行一个坐标,表示该三角形的三个顶点 第四行:一个点的坐标,试判断该点与前三个点围成三角形的位置关系 (详见样例) 所有 ...

  10. mov指令和 add以及sub 指令的区别

                比如  mov ax,ds             比如 [0],ds #经过上机实验 add,sub指令不能对段寄存器操作