Siege

Siege: Web服务器的负载测试工具

经常被同学们问道,这个 VPS 能承受多少人(IP)访问量。这个真的很难回答,因为能承受的压力(性能)是和 VPS 所提供的服务绑定的,需要经过压力(性能)测试才能清楚。 Siege 就是这么一款HTTP 负载测试和基准测试的利器,可以用来测量时在高压下的 Web 服务器的性能。涉及的指标包含:传输数据量、 服务器响应时间、 事务处理速率、 吞吐量、 并发性、应用程序响应时间。 Siege 提供三种操作模式: 回归、 网络模拟和暴力。

本文以 Debian 或者 Ubuntu 操作系统为例,介绍 Siege 的安装与使用。

安装与配置 Siege

在安装前先更新你的操作系统,

sudo apt-get update && sudo apt-get upgrade --show-upgraded

下载最新版本的Siege(目前最新版本为3.0.9),可以从官网下载(https://www.joedog.org/siege-home/

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

解压程序包

tar -zxvf siege-latest.tar.gz

进行Siege的根目录

cd siege-*/

如果你没有安装gcc编译器,请先如下安装

sudo apt-get install build-essential

完成 Siege 的安装与配置

./configure
make
sudo make install

创建 Siege 的配置文件

siege.config

打开根目录下的 .siegerc 文件

...
#
# Variable declarations. You can set variables here
# for use in the directives below. Example:
# PROXY = proxy.joedog.org
# Reference variables inside ${} or $(), example:
# proxy-host = ${PROXY}
# You can also reference ENVIRONMENT variables without
# actually declaring them, example:
logfile = $(HOME)/siege.log
...
#
# Default number of simulated  concurrent users
# ex: concurrent = 25
#
concurrent = 25
#
# Default duration of the siege.  The right hand argument has
# a modifier which specifies the time units, H=hours, M=minutes,
# and S=seconds. If a modifier is not specified, then minutes
# are assumed.
# ex: time = 50M
#
time = 1M

通过在句首增加或删除“#”来启用或是禁用参数。 Siege 建议,1分钟内(第28行)并发用户数25人(第19号),最好设置自己的日志路径(第11行)以便查看,根据实际需要配置其他参数值。
恭喜你,至此已经完成 Siege 的安装与配置,是不是so easy!!!休息一下吧,进行第二章。

运行 Siege

本文中使用默认的配置来运行 Siege ,请将www.example.com用自己的域名或者IP替换哦(白痴都知道!)

siege www.example.com

你将得到如下输出:

** SIEGE 2.70
** Preparing 25 concurrent users for battle.
The server is now under siege...
Lifting the server siege...      done.
Transactions:         2913 hits
Availability:       100.00 %
Elapsed time:       59.51 secs
Data transferred:         0.41 MB
Response time:         0.00 secs
Transaction rate:       48.95 trans/sec
Throughput:         0.01 MB/sec
Concurrency:         0.04
Successful transactions:        2913
Failed transactions:           0
Longest transaction:         0.01
Shortest transaction:         0.00
FILE: /var/log/siege.log
You can disable this annoying message by editing
the .siegerc file in your home directory; change
the directive 'show-logfile' to false

如果Failed transactions=0,Availability=100%,那么又要再次恭喜你啦 ,运行成功,应用也OK。

其他常用配置与命令

创建URL文件

如果你想要 Siege 随机命中你网站的一些特定页面,那么就需要配置 urls.txt 这个文件。 Siege 会从中读取相关页面。
1. 打开urls.txt,通常存放在/usr/local/etc/urls.txt.

/usr/local/etc/urls.txt
# URLS file for siege
# --
# Format the url entries in any of the following formats:
# https://www.whoohoo.com/index.html
# https://www/index.html
# www/index.html
# https://www.whoohoo.com/cgi-bin/howto/display.cgi?1013
# Use the POST directive for pages that require it:
# https://www.whoohoo.com/cgi-bin/haha.cgi POST ha=1&ho=2
#      or POST content from a file:
# https://www.whoohoo.com/melvin.jsp POST

2. 创建好后运行 Siege

siege

如果指定了其他文件如path.txt作为urls.txt文件,运行Seige

siege -f your/file/path.txt

命令

如果你不想使用Siege默认的配置又不想编辑配置文件,那就使用Seige的命令选项吧。

-c [num]:并发用户数。大多数网站同一时间的访问量不会超过几百,所以没有必要设置太高,500就已经太看得起自己啦 !

-t [num]:Siege运行时间。你可以通过此参数限制Seige的运行时间,例如-t10s(强调10和s之间没有空格哦!),就是运行10s,s表示秒,也可以是m(分钟),h(小时)。

-d [num]:每个用户之间的延时。每个用户将随机在1至num秒之间产生延迟。

-i:关联urls文件。这会使每个用户随意的访问某个访问而不基于预判。i代表了Internet,就像现实网络环境中,你不会知道用户会访问哪个页面,也不是所有的页面都会被访问。

-v:实时输出。会把Siege运行结果实时输出到屏幕而不需要等Seige运行结束。

-f [file]:关联非默认的urls.txt文件。

-g [url]:抓取HTTP头。

-l:创建日志。

-m “[message]”:在日志中包含message信息。

-C:输出Siege当前配置信息。

-V:输出Siege版本信息。

-h:帮助。

更多信息

请至 Siege 的官网https://www.joedog.org/siege-home/

发表评论

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

Scroll to Top
Scroll to Top