Siege性能测试

    “Siege”意为围攻、包围。是一款使用纯C语言编写的开源WEB压测工具,适合在GNU/Linux上运行,具有较强的可移植性。

Siege使用多线程实现,支持随机访问多个URL,可以通过控制并发数、总请求数(or压测时间)来实现对web服务的压测。

Siege支持http,https,ftp三种请求方式,支持GET和POST方法,压测方式为同步压测。

    可以根据配置对一个web站点进行并发访问,记录每一个用户所有的请求过程的相应时间,并可以在一定数量的并发访问下重复使用。但是我觉得,Siege用于仿真用户请求负载是不错的。但是请不要使用它来执行最高的性能基准调校测试,在这个方面,我觉得还是Apache ab更好。

    下面我就不多说废话,开始安装

1、请输入该网址至浏览器下载对应的版本下载Siege(点击)

      这边我下载的版本是[siege-latest.tar.gz]

2、

root# tar -zxvf siege-latest.tar.gz                //解压

root# cd siege-4.0.4                                 

root#cd siege-*/                                        //进入siege路径

root# sudo apt-get install build-essential  //如果没有编译工具,先要安装一个

root# ./configure                                        //编译安装

root# make

root# sudo make install

root# siege.config                                    //创建配置文件

打开~/.siege/siege.conf文件,修改logfile选项

  logfile = $(HOME)/siege.log

3、输入siege -h 或者 siege -version ,验证是否成功安装(展示如下)

Usage: siege [options]

      siege [options] URL

      siege -g URL

Options:

  -V, --version          VERSION, prints the version number.

  -h, --help              HELP, prints this section.

  -C, --config            CONFIGURATION, show the current config.

  -v, --verbose          VERBOSE, prints notification to screen.

  -g, --get              GET, pull down HTTP headers and display the

                          transaction. Great for application debugging.

  -c, --concurrent=NUM    CONCURRENT users, default is 10

  -i, --internet          INTERNET user simulation, hits URLs randomly.

  -b, --benchmark        BENCHMARK: no delays between requests.

  -t, --time=NUMm        TIMED testing where "m" is modifier S, M, or H

                          ex: --time=1H, one hour test.

  -r, --reps=NUM          REPS, number of times to run the test.

  -f, --file=FILE        FILE, select a specific URLS FILE.

  -R, --rc=FILE          RC, specify an siegerc file

  -l, --log[=FILE]        LOG to FILE. If FILE is not specified, the

                          default is used: PREFIX/var/siege.log

  -m, --mark="text"      MARK, mark the log file with a string.

  -d, --delay=NUM        Time DELAY, random delay before each requst

                          between 1 and NUM. (NOT COUNTED IN STATS)

  -H, --header="text"    Add a header to request (can be many)

  -A, --user-agent="text" Sets User-Agent in request

Copyright (C) 2010 by Jeffrey Fulmer, et al.

This is free software; see the source for copying conditions.

There is NO warranty; not even for MERCHANTABILITY or FITNESS

FOR A PARTICULAR PURPOSE

4、常见的参数(以上图中其实都有,翻译可能不太准确,多多包涵)

-V版本号

-H帮助

-C显示当前配置

-V将通知打印屏幕

-G获取HTTP并显示

-C并发数

-T 时间

-R 运行测试次数

-F选择特定URL文件

-R指定SigeRC文件

-L日志log文件

-M标记日志文件

-D时间延迟

-H添加请求

-A设置代理

这边我粘贴一张图片解释一下吧,总比我这蹩脚英语水平翻译要好。

Siege性能测试_第1张图片

Siege输出结果说明:

Transactions: 总共测试次数 

Availability: 成功次数百分比 

Elapsed time: 总共耗时多少秒 

Data transferred: 总共数据传输 

Response time: 等到响应耗时 

Transaction rate: 平均每秒处理请求数 

Throughput: 吞吐率 

Concurrency: 最高并发 

Successful transactions: 成功的请求数 

Failed transactions: 失败的请求数

注意事项:

1.发送post请求时,url格式为:http://www.xxxx.com/ POST p1=v1&p2=v2 

2.如果url中含有空格和中文,要先进行url编码,否则siege发送的请求url不准确

以下三个举例:

(1)比如测试一个客户端的接口并发情况

接口地址是:http://118.212.149.xx:8080/xx/xx/xx

请求类型 : POST

请求参数 : {“accountId”:”123”,”platform”:”ios”}

请求次数 :10次

请求并发数量 : 200

请求 : (请求参数说明请参照上文中表格)

root#siege"http://118.212.149.xx:8080/xx/xx/xxPOST{\"accountId\":\"123\",\"platform\":\"ios\"}" -r 10 -c 200

返回 : (返回参数说明请参照上文中表格)

done.

Transactions:              2000 hits

Availability:            100.00 %

Elapsed time:              15.27 secs

Data transferred:          0.07 MB

Response time:              0.47 secs

Transaction rate:        130.98 trans/sec

Throughput:            0.00 MB/sec

Concurrency:              61.45

Successful transactions:        2000

Failed transactions:              0

Longest transaction:            8.17

Shortest transaction:          0.06

(2)用法举例

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]

urls.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

结果:

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   #最短事务处理时间

(3)200并发针对谷歌发送请求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性能测试)