进行网站各 安装 S方面综合测试

简介

Siege 是一款开源的高性能压力测试和评测工具,设计用于评估 WEB 应用在压力下的承受能力。可以根据配置对一个 WEB 站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。Siege 可以从您选择的 txt 预置链接列表中请求随机的 URL 。换种说法就是 Siege 可用于仿真用户请求负载测试,而我们先前介绍的 AB 则不能仿真用户请求负载测试。

如果是单纯的压力测试,我认为 AB 比 Siege 好得多,因为 AB 更多的是压力测试,而 Siege 适合各方面的综合测试和评测。

官网

https://n.ymzsl.com/sites/19.html

下载地址

http://download.joedog.org/siege/siege-4.0.6.tar.gz

安装教程

快速安装

CentOS

  1. yum install siege - y

Debian / Ubuntu

  1. apt-get install siege - y

编译安装

  1. yum install wget
  2. wget http://download.joedog.org/siege/siege-4.0.6.tar.gz
  3. tar -zxvf siege-4.0.6.tar.gz
  4. cd siege-4.0.6/
  5. ./configure
  6. make
  7. make install

Siege 命令解释

Siege 对单目标地址测试

  1. siege -c 200 -r 10000 https://www.vvso.cn

即:使用 200 个并发对 https://www.vvso.cn 请求 10000 次

Siege 对多目标地址测试

  1. siege -c 200 -r 10000 -f url.txt

与对单目标地址测试类似,即:使用 200 个并发对 url.txt 中的 URL 请求 10000 次

多目标地址 txt 文本书写规则

  1. [protocol://]host.domain.com[:port][path/to/file]

url.txt 文件是很多行待测试 URL ,并以换行符断开,书写规则如上,很多人可能看不懂,这里小俊提供几个案例以供参考:

  1. http://192.168.0.1
  2. https://192.168.1.1/
  3. http://www.baidu.com/
  4. https://www.baidu.com/
  5. http://yourdomain.com/images.jpg
  6. https://yourtestdomain.com/imgs.png

Siege 测试结果说明

  1. Lifting the server siege... done.
  2. Transactions: 17204 hits #已完成的总事务
  3. Availability: 99.92 % #完成的成功率
  4. Elapsed time: 1179.33 secs #总共使用的时间
  5. Data transferred: 96.87 MB #响应中数据的总大小
  6. Response time: 0.86 secs #显示网络连接的速度
  7. Transaction rate: 14.59 trans/sec #平均每秒完成的事务数
  8. Throughput: 0.08 MB/sec #平均每秒传送的数据量
  9. Concurrency: 12.48 #实际最高并发链接数
  10. Successful transactions: 17204 #成功处理的次数
  11. Failed transactions: 13 #失败处理的次数
  12. Longest transaction: 22.21 #最长事务处理的时间
  13. Shortest transaction: 0.39 #最短事务处理时间

Siege 其他测试命令

随机选取 url.txt 中列出的网址进行测试

  1. siege -c 200 -r 100 -f url.txt -i

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

  1. siege -c 200 -r 100 -f url.txt -i -b

指定http请求头:文档类型

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

Siege 参数详解

命令行参数说明

  • -C,或–config 在屏幕上打印显示出当前的配置,配置是包括在他的配置文件$HOME/.siegerc中,可以编辑里面的参数,这样每次siege
    都会按照它运行.
  • -v 运行时能看到详细的运行信息
  • -c n,或–concurrent=n 指定并发的用户个数,-c 200指定并发数200。模拟有n个用户在同时访问,n不要设得太大,因为越大,siege 消耗本地机器的资源越多
  • -i,–internet 随机访问urls.txt中的url列表项,以此模拟真实的访问情况(随机性),当url.txt存在是有效。默认为url.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到这个数字(单位:s)
  • timeout :socket connection timeout(单位:s)
  • 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 个人测试后并发数最大只能1000,再提高就会报错,如下提示:

  1. [error] socket: unable to connect sock.c:222: Operation already in progress socket: connection timed out

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

  1. #!/bin/bash
  2. user_agent="Siege 1.0"
  3. siege_rc="siege.rc"
  4. concurrent=200
  5. repet=1000
  6. siege_single_urls="singleurl.txt"
  7. siege_prefix_urls="prefixurl.txt"
  8. for i in { 1..10}
  9. do
  10. siege -c $concurrent -r $repet -i -b -f $siege_single_urls -R $siege_rc -A "$user_agent" &;
  11. done

如果 URL 中含有空格和中文,要先转码,再测试!

上一篇:街边3块钱一根的“淀粉肠”,里面到底有多少肉?答案让你想不到
下一篇:如何不用自己手机号码而准确的接收短信验证码?