Linux系统下安装siege 网页服务器性能测试工具

我们可以用很多工具来测试web服务器的性能,有些是免费开源的,有些是需要商业许可的。siege是一个免费开源的工具,用于web服务器的压力测试。

给siege指定一个URL,siege就可以模拟大量用户来测试web服务器性能。siege提供的测试结果包括耗费时间、总数据传输量,服务器响应时间、吞吐量、并发连接数量等。

源码编译安装siege

很多Linux发行版的软件库中都收录了siege,但软件库中的版本一般都比较旧,我们可以自己下载最新版本来安装。在写这篇文章时,最新版本为3.1.2。首先下载安装包,在终端中输入下面的命令:

wget http://download.joedog.org/siege/siege-latest.tar.gz

解压安装包:

tar -xvf siege-latest.tar.gz

切换到解压目录

cd siege-3.1.2/

编译前需要做一点配置。./configure命令会为siege生成配置信息,并检查编译所需要的库文件。

./configure

configure完成后,输入下面两条命令编译并安装siege:

make
sudo make install

make会生成一个二进制文件,make install将生成的二进制文件安装到指定的目录下。默认的安装目录是/usr/local/bin/

查看siege的版本:

siege -V   或   siege --version
SIEGE 3.1.2
Copyright (C) 2015 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.

siege默认的配置参数

在使用siege进行性能测试来,让我们来看看siege默认的配置参数。输入下面的命令:

siege -C    或    siege --config

默认的配置参数如下:

CURRENT  SIEGE  CONFIGURATION
Mozilla/5.0 (unknown-x86_64-linux-gnu) Siege/3.1.2
Edit the resource file to change the settings.
----------------------------------------------
version:                        3.1.2
verbose:                        true
quiet:                          false
debug:                          false
protocol:                       HTTP/1.1
get method:                     HEAD
connection:                     close
concurrent users:               15
time to run:                    n/a
repetitions:                    n/a
socket timeout:                 30
accept-encoding:                gzip
delay:                          1.000 sec
internet simulation:            false
benchmark mode:                 false
failures until abort:           1024
named URL:                      none
URLs file:                      /usr/local/etc/urls.txt
logging:                        true
log file:                       /usr/local/var/siege.log
resource file:                  /usr/local/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

我们关心的参数有5个:

  • concurrent users:                  指定用户数量,默认为15
  • failures until abort:               failure超过一定的数量就终止测试,默认为1024
  • time to run:                            测试时间,默认为n/a,没有指定
  • repetitions:                            每个用户的请求数量,默认为n/a, 没有指定
  • resource file:                         资源文件,也就是配置以上参数的文件,文件路径为/usr/local/etc/siegerc

由于默认的配置文件没有指定time to run和repetitions,所以默认情况下siege会一直测试下去,直到failure的数量超过1024。我们需要根据自己的需要修改配置文件,指定time to run 和repetitions。或者, 我们可以在siege运行的时候通过命令选项来指定,比如下面的命令:

siege -c 15 -r 10 -q http://www.example.com

-c 15 表示15个并发连接用户;-r 10 表示每个用户的请求数量为10;-q 表示 quiet,只输出结果,不输出过程。如果不指定这些选项,那么siege将从配置文件中读取默认的参数。

有些参数是不能通过命令选项来指定的,比如socket timeout,默认为30秒,我们只能在配置文件中修改它。

siege的两种模式:default 和 benchmark

在default模式下,模拟用户在发出一个请求后,默认会延迟1秒再发出下一个请求。延迟时间可以在配置文件中修改。default模式适用于负载测试(load testing)。

在benchmark模式下,模拟用户的请求没有延迟。在服务器和网络带宽允许的条件下,模拟用户会以最快的速度发出下一个请求。我们可以在命令中加入-b 指定siege以benchmark模式运行。

siege性能测试

好了,现在来进行正式的性能测试。我们需要将web服务器置于高度负载量下,为了达到这个目的,siege要以benchmark模式运行,并指定较高的并发用户数量(concurrent users)以及合理的单个用户请求数量(repetitions)。比如下面的命令

siege -b -c 400 -r 50 -q http://www.example.com
  • 为了得到错误率以及吞吐量的数据,timeout参数必须要指定,默认的timeout为30秒。错误率是失败请求与总请求的比率。如果一个请求超过了30秒还没有得到回复,那么这个请求就是失败请求。吞吐量是指web服务器每秒可以发送的数据容量。
  • 同时我们需要确保siege不会因为大量错误而取消测试。我们可以在配置文件中更改failures until abort的值以达到这个目的。
  • 为了得到响应时间的数据,我们运行同样的命令,但是需要把timout的值给删掉。这种测试不会有任何错误,但响应时间会增加。
  • 为了减少测试数据误差,我们要用同样的命令选项对web服务器进行多次性能测试,最后得出平均的数据。

测试结果

[error] socket: read error Connection reset by peer sock.c:479:
Connection reset by peer
done.
Transactions:                    18818 hits
Availability:                    94.09 %
Elapsed time:                    14.29 secs
Data transferred:                130.14 MB
Response time:                   0.19 secs
Transaction rate:                2600.70 trans/sec
Throughput:                      9.11 MB/sec
Concurrency:                     492.12
Successful transactions:         1182
Failed transactions:             2336
Longest transaction:             5.02
Shortest transaction:            0.00

在测试结果中,我们可以看到4个有用的数据。

  • availability:                可用率,用100%减去可用率就可以得到错误率
  • response time:          响应时间
  • transaction rate:       web服务器每秒处理的请求数量
  • throughput:               web服务器每秒发送的数据容量
为这篇文章评分
[Total: 0 Average: 0]

发表评论

电子邮件地址不会被公开。 必填项已用*标注