经常被同学们问道,这个 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/