使用 Siege 基准测试工具对 Web 服务器进行负载测试
了解您的网络服务器在压力下可以处理多少流量对于规划您的网站或应用程序的未来增长至关重要。通过使用名为siege的工具,您可以在服务器上运行负载测试并查看系统在不同情况下的性能。
您可以使用siege来评估传输的数据量、响应时间、事务速率、吞吐量、并发性以及服务器返回响应的次数。该工具具有三种操作模式:回归、互联网模拟和暴力破解。
重要:Siege 只能在您拥有的服务器或您有明确测试权限的服务器上运行。在某些国家/地区,对未经授权的网站进行围攻可能被视为犯罪。
在 Linux 中安装 Siege HTTP 负载测试实用程序
Siege 是多平台的,可以使用以下命令安装在 Ubuntu/Debian 和 CentOS/RHEL 发行版下。
要在 Debin/Ubuntu 下安装 Siege,您可以运行:
sudo apt install siege
对于 CentOS/RHEL,您需要安装并启用存储库才能安装 siege:
yum install epel-release
yum install siege
或者,您可以从源代码构建Siege。为此,您需要安装build-essential和开发包。
sudo apt install build-essential #Ubuntu/Debian
yum groupinstall 'Development Tools' #CentOS/RHEL
然后您可以使用 wget 命令下载 Siege 并从源安装,如图所示。
wget http://download.joedog.org/siege/siege-latest.tar.gz
tar -zxvf siege-latest.tar.gz
cd siege-*/
sudo ./configure --prefix=/usr/local --with-ssl=/usr/bin/openssl
sudo make && make install
在 Linux 中配置 Siege HTTP 负载测试实用程序
完成安装后,您可以调整您的siege配置文件。它位于/etc/siege/siegerc。如果您决定从源代码构建包,则必须运行:
sudo siege.config
这将生成位于用户主页~/.siege/siege.conf中的siege.conf文件。
文件的内容应如下所示。请注意,我取消了 logfile 和 time 指令的注释:
cat siegerc |egrep -v "^$|#"
样本输出
logfile = $(HOME)/var/log/siege.log
verbose = false
color = on
quiet = false
show-logfile = true
logging = false
gmethod = HEAD
parser = true
nofollow = ad.doubleclick.net
nofollow = pagead2.googlesyndication.com
nofollow = ads.pubsqrd.com
nofollow = ib.adnxs.com
limit = 255
protocol = HTTP/1.1
chunked = true
cache = false
connection = close
concurrent = 25
time = 1M
delay = 0.0
internet = false
benchmark = false
accept-encoding = gzip, deflate
url-escaping = true
unique = true
在当前配置下,siege 将在 1 分钟内模拟 25 个并发用户。
现在你已经准备好进行围攻了。
使用 Siege 基准测试实用程序测试网站负载
运行 siege 非常简单,您只需指定要测试的网站,如下所示:
siege example.com
如果可用性保持在100%并且没有失败的连接,则您的系统运行良好并且没有任何问题。您还应该关注响应时间。
围攻多个网站
您可以通过设置siege从文件中读取多个URL来测试它们。您可以在 /usr/local/etc/urls.txt 中描述 URL,如下所示:
现在要告诉 siege 测试文件中的 URL,请使用 -f
选项,如下所示:
siege -f /usr/local/etc/urls.txt
如果您想尝试与配置文件中描述的设置不同的设置,您还可以使用命令行选项。
-C
– 指定您自己的配置文件。-q
– 抑制 siege 的输出。-g
– GET,下拉 HTTP 标头并显示交易。对于调试很有用。-c
– 并发用户数,默认为10。-r
– 运行测试多少次。-t
– 运行测试需要多长时间。您可以指定 S、M 或 H,例如:–time=10S 表示 10 秒。-d
– 每个请求之前的随机延迟。-b
– 请求之间没有延迟。-i
– 用户模拟。用于访问随机 URL。-f
– 测试指定文件中的 URL。-l
– 日志文件。-H
– 添加请求头。-A
– 指定用户代理。-T
– 设置请求中的 Content-Type。--no-parser
– 无解析器,关闭 HTML 页面解析器。--no-follow
– 不遵循 HTTP 重定向。
结论
Siege 是一个强大的工具,用于测量高负载下系统的可靠性。当网站受到胁迫时,网络开发人员可以使用它来测试他们的代码。您应该始终谨慎运行测试,因为在评估期间被测试的服务器可能会变得无法访问。