我们可以用很多工具来测试web服务器的性能,有些是免费开源的,有些是需要商业许可的。siege是一款免费开源的工具,用于web服务器的压力测试。 给siege指定一个URL,siege就可以模拟大量用户来测试web服务器性能。siege提供的测试结果包括耗费时间、总数据传输量,服务器响应时间、吞吐量、并发连接数量等。
源码编译安装siege 很多Linux发行版的软件库中都收录了siege,但软件库中的版本一般都比较旧,我们可以自己下载最新版本来安装。在写这篇文章时,最新版本为4.0.4。首先下载安装包,在终端中输入下面的命令: wget http://download.joedog.org/siege/siege-latest.tar.gz 或者 wget http://download.joedog.org/siege/siege-4.0.4.tar.gz 解压安装包: tar -xvf siege-latest.tar.gz tar -xvf siege-4.0.4.tar.gz 切换到解压目录 cd siege-4.0.4/ 编译前需要做一点配置。./configure命令会为siege生成配置信息,并检查编译所需要的库文件。 ./configure configure完成后,输入下面两条命令编译并安装siege: make sudo make install make会生成一个二进制文件,make install将生成的二进制文件安装到指定的目录下。默认的安装目录是/usr/local/bin/ 查看siege的版本: siege -V 或 siege --version SIEGE 4.0.4 Copyright (C) 2018 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 默认的配置参数如下:
我们关心的参数有5个: 1.concurrent users: 指定用户数量,默认为15 2.failures until abort: failure超过一定的数量就终止测试,默认为1024 3.time to run: 测试时间,默认为n/a,没有指定 4.repetitions: 每个用户的请求数量,默认为n/a, 没有指定 5.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服务器进行多次性能测试,最后得出平均的数据。
测试结果
在测试结果中,我们可以看到4个有用的数据。 1.availability: 可用率,用100%减去可用率就可以得到错误率 2.response time: 响应时间 3.transaction rate: web服务器每秒处理的请求数量 4.throughput: web服务器每秒发送的数据容量
相关主题 |