Onex ecstore,bbc性能压力测试工具之Siege详解(适用于所有web)

ecstore,bbc性能压力测试工具之Siege详解(适用于所有web)

首先介绍下压力测试的概念

  • 吞吐率(Requests per second)

    概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。

    计算公式:总请求数 / 处理完成这些请求数所花费的时间,即

    Request per second = Complete requests / Time taken for tests
  • 并发连接数(The number of concurrent connections)

    概念:某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。
  • 并发用户数(The number of concurrent users,Concurrency Level)

    概念:要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。
  • 用户平均请求等待时间(Time per request)

    计算公式:处理完成所有请求数所花费的时间/ (总请求数 / 并发用户数),即

    Time per request = Time taken for tests /( Complete requests / Concurrency Level)
  • 服务器平均请求等待时间(Time per request: across all concurrent requests)

    计算公式:处理完成所有请求数所花费的时间 / 总请求数,即

    Time taken for / testsComplete requests

    可以看到,它是吞吐率的倒数。

    同时,它也=用户平均请求等待时间/并发用户数,即

    Time per request / Concurrency Level

 

安装详细步骤如下:

cd /usr/local
mkdir siege
wget http://download.joedog.org/siege/siege-4.0.2.tar.gz
tar -zxvf siege-4.0.2.tar.gz
cd siege-4.0.2
./configure --prefix=/usr/local/siege
make &&  make install
ln -s /usr/local/siege/bin/*  /usr/sbin/

 

siege -C

sh: siege.config: command not found
CURRENT  SIEGE  CONFIGURATION
Mozilla/5.0 (unknown-x86_64-linux-gnu) Siege/4.0.2
Edit the resource file to change the settings.
----------------------------------------------
version:                        4.0.2
verbose:                        true
color:                          true
quiet:                          false
debug:                          false
protocol:                       HTTP/1.1
HTML parser:                    enabled
get method:                     HEAD
connection:                     close
concurrent users:               25
time to run:                    n/a
repetitions:                    n/a
socket timeout:                 30
accept-encoding:                gzip;deflate
delay:                          0.500 sec
internet simulation:            false
benchmark mode:                 false
failures until abort:           1024
named URL:                      none
URLs file:                      /usr/local/siege/etc/urls.txt
thread limit:                   255
logging:                        false
log file:                       /usr/local/siege/var/log/siege.log
resource file:                  /usr/local/siege/etc/siegerc
timestamped output:             false
comma separated output:         false
allow redirects:                true
allow zero byte data:           true
allow chunked encoding:         true
upload unique files:            true
no-follow:
 - ad.doubleclick.net
 - pagead2.googlesyndication.com
 - ads.pubsqrd.com
 - ib.adnxs.com

参数详解:

-C,或–config 在屏幕上打印显示出当前的配置,配置是包括在他的配置文件$HOME/.siegerc中,可以编辑里面的参数,这样每次siege 都会按照它运行.
-v 运行时能看到详细的运行信息
-c n,或–concurrent=n 模拟有n个用户在同时访问,n不要设得太大,因为越大,siege 消耗本地机器的资源越多
-i,–internet 随机访问urls.txt中的url列表项,以此模拟真实的访问情况(随机性),当urls.txt存在是有效
-d n,–delay=n hit每个url之间的延迟,在0-n之间
-r n,–reps=n 重复运行测试n次,不能与 -t同时存在
-t n,–time=n 持续运行siege ‘n’秒(如10S),分钟(10M),小时(10H)
-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文件的设定

urls.txt文件:是很多行待测试URL的列表以换行符断开,格式为:
[protocol://]host.domain.com[:port][path/to/file]

用法举例:

siege -c 30 -t 1 -f url.txt
siege

说明:-c是并发量,-r是重复次数,-t 是分钟,url.txt就是一个文本文件,每行都是一个url,它会从里面随机访问的。

下面介绍几种常用的方法:
50个用户(每次并发量,注意不是每秒并发量) 重复100次 共产生 50 * 100 = 5000个请求
siege -c 50 -r 100 https://www.test.com/fcgi-bin/rs/

50个用户 重复100次 发送GET参数
siege -c 50 -r 100 https://www.test.com/fcgi-bin/rs/?name=zhangsan

50个用户 重复100次 发送POST参数 (注意引号)
siege -c 50 -r 100 https://www.test.com/fcgi-bin/rs/ POST name=zhangsan

50个用户 重复100次 发送POST参数(从文件中读取)
siege -c 50 -r 100 https://www.test.com/fcgi-bin/rs/ POST < /root/ab_test/post.xml
另外还有发送时间参数等
详情请man 或 siege -h