帮酷LOGO
0 0 评论

正文
文章标签:网站  WEB  sprox  Ubuntu  benchmark  siege  Firefox  

介绍

siege是一个可配置的基准测试和测试工具,用于通过网页请求来测试web服务器,可以将"Siege"请求的每秒页数设置为每秒几页一直到网站可以处理的最大页数。

在本指南中,我们安装和配置Siege以在基准测试和浏览模式中运行,基准测试模式使得web服务器可以处理多少请求,浏览模式模拟可配置的访问者数量。

Sproxy是专门为与Siege一起使用而创建的,它记录通过它传递到文件的每个请求的URL ,使用该文件来告诉Siege要测试哪个URL 。

在本教程的第一部分中,我们安装Sproxy并将Firefox配置为通过它连接到Internet ,在那里,我们生成一个针对Siege测试的URL列表,最后,我们检查测试结果,并且确定性能瓶颈。

警告:仅使用Siege测试你拥有或拥有测试权限的网站,在某些国家,对未经授权的网站使用Siege可能被视为犯罪。

前提条件

为了完成本教程,你需要:

按照此Ubuntu 16.04初始服务器设置教程设置的一台Ubuntu 16.04服务器,包括sudo非root用户和防火墙,确保使用教程的步骤7中打开端口8080sudo ufw allow 8080 ,这是Sproxy默认监听的端口。

第1步构建和安装Sproxy

Sproxy无法作为预打包的二进制文件提供,因此你必须从它官方网站下载它,然后从源代码进行构建。

首先,更新软件包列表以确保得到每个附加软件包的最新版本。


sudo apt-get update

然后,安装软件包。


sudo apt-get install build-essential libnet-ssleay-perl liburi-perl libwww-perl

现在,转到你的主目录,并从它官方网站下载Sproxy源代码存档。


cd ~
curl -O http://download.joedog.org/sproxy/sproxy-latest.tar.gz

然后,创建一个叫sproxy的目录来构建Sproxy,并将源代码存档解压到新目录中。


mkdir sproxy
tar -zxf sproxy-latest.tar.gz --strip-components=1 --directory="sproxy"

这里,-zxf选项告诉tar gunzip,并且提取sproxy-latest.tar.gz文件的内容,--strip-components=1选项从每个文件名中去除第一个前导组件,这将把归档文件解压到由--directory选项-指定的sproxy目录-中,而不是,sproxy-1.02/sproxy/

现在,改为sproxy目录以便使用configuremake命令构建和安装Sproxy 。


cd sproxy
./configure
make
sudo make install

./configure命令检查系统上是否存在所有必需的程序依赖项和生成工具,然后,make命令生成程序二进制文件,最后,make install命令将新的二进制文件复制到服务器上的正确位置,因为Sproxy在/usr/local/lib/sproxy/JoeDog创建了一个新目录,所以需要使用root权限运行make install

最后,通过返回到主目录以使用-v选项以详细模式启动Sproxy,测试Sproxy是否正常工作。


cd ~
sproxy -v

输出告诉你Sproxy正在监听的端口,Sproxy将输出写入到的文件的位置,以及Sproxy等待远程主机回复的秒数。


Sproxy OutputSPROXY v1.02 listening on port 9001
...appending HTTP requests to: /user/urls.txt
...default connection timeout: 120 seconds

如果Sproxy无法启动,请查看终端中的消息以获取有关发生问题的信息。

确认一切正常后,请使用CTRL C停止Sproxy。

现在可以使用Sproxy了,所以我们Firefox修改为通过Sproxy连接到Internet,以便列出URL列表以便使用Siege进行基准测试。

第2步配置Firefox使用Sproxy

我们现在将更改Firefox的网络配置,以通过Sproxy发送所有Web请求,从而生成我们需要Siege的基准测试目标列表。

因为我们希望Sproxy记录我们访问的每个URL,所以,我们还将清除Firefox的本地Web缓存。默认情况下,Firefox不请求它已经缓存的网站资源。

修改网络设置

首先,在Firefox首选项屏幕主选项卡的General tab下更改网络代理设置。

打开Firefox (本教程使用Firefox版本56,对于其他版本,请参见Firefox的官方支持文档),点击屏幕上右上角的菜单,并且选择首选项转到一般设置,滚动到页面底部,并且找到网络代理部分,单击设置,按钮以打开连接设置面板, 选择手动代理配置,在HTTP代理字段中输入Sproxy服务器的服务器IP地址,在端口字段中将端口号设置为8080 ,单击确定保存更改,

你现在已将Firefox配置为使用Sproxy HTTP代理服务器,然后准备清除本地缓存。

清除本地缓存

Firefox将本地缓存作为脱机的网络内容,

点击屏幕右上角的菜单,并且选择首选项转到常用设置,点击屏幕左边的隐私&安全性,滚动到页面底部,找到"脱机Web内容和用户数据"部分,然后按"立即清除"按钮。

.配置队列管理器

Firefox现在已配置为通过Sproxy路由所有基于HTTP的请求,但是你在步骤1的结尾使用CTRL C停止了Sproxy。如果你现在尝试访问网站上的Firefox,就会看到一个错误页面。

步骤3-启动Sproxy并生成URL列表

在这一步中,我们启动Sproxy服务器,并且使用Firefox浏览目标网站,Sproxy会将Firefox请求的每个基于HTTP的URL记录到一个文件中,供以后在Siege中使用。

首先,转到你的主目录并启动Sproxy 。


cd ~
sproxy -v -t 180 -p 8080 -o mixed-urls.txt your_server_ip

-v将请求的URL打印到终端,-t是Sproxy等待远程主机响应的秒数,-p是Sproxy将监听的端口,-o是Sproxy为其写URL的文件,your_server_ip 是Sproxy将绑定到的IP地址,

输出立即告诉你正在运行的Sproxy的版本,Sproxy正在监听的端口,Sproxy正在将URL写入的文件以及Sproxy等待远程主机响应的时间,一旦你开始浏览测试网站,输出还将包括Sproxy正在记录的网页的URL 。


Sproxy OutputSPROXY v1.02 listening on port 8080
...appending HTTP requests to: mixed-urls.txt
...default connection timeout: 180 seconds
http://www.example.com/
http://www.example.com/index.html
http://www.example.com/about.html

注:Sproxy 不支持HTTPS连接,因此你必须通过HTTP浏览测试站点,用于生成URL列表,然而,siege支持HTTPS,在步骤5中,我们会探索修改HTTP URL列表以便通过HTTP和HTTPS测试你的网站。

启动Sproxy之后,请返回Firefox,并且开始浏览目标站点,Sproxy将在将URL同时打印到终端时将Firefox请求的每个URL写入mixed-urls.txt文件。

访问了计划测试的所有网页后,用CTRL+C停止Sproxy 。

现在在测试网站上所遇到的每个URL的mixed-urls.txt文件中有一个列表,下一步是删除未解析到你网站的URL,以确保你只使用Siege测试授权域名。

第4步清理URL文件

当我们运行Siege时,我们希望确保只测试拥有权限的域名,因此,我们必须删除mixed-urls.txt文件中没有指向目标网站的URL 。


grep -a"^http://www.example.com" mixed-urls.txt > urls.txt

-a标志告诉grep将二进制文件处理为文本文件,因为浏览器有时发出包含二进制数据的POST请求,因此Sproxy将写入mixed-urls.txt ,如果mixed-urls.txt中有二进制数据,则grep将失败,没有-a标志。

在正则表达式术语中,^字符指示字符串必须以,http://www.example.com 被视为匹配。

这个命令不会在终端中产生输出,但是它会创建一个叫urls.txt的新文件。


nano urls.txt

编辑完成后保存更改并关闭文件。

你的URL列表现在只包含你有权测试的URL,所以我们准备安装Siege,如果你还希望通过HTTPS对网站进行基准测试,请按照步骤5中的可选指令创建第二个URL文件。

第5步创建一个HTTPS URL文件(可选)

许多网站都在HTTP和HTTPS上运行,甚至超过HTTPS,因此很重要的是通过HTTPS对网站进行基准,这是Siege可以做到的。你只需要给它一个从https开始的URL列表。

首先,使用cat命令打开urls.txt并将它内容传递给sed,这是解析和转换文本的工具,sed将用https替换所有http实例,并在终端中显示结果。


cat urls.txt | sed 's|http|https|'

输出将是你在urls.txt文件中已经有的URL列表,除了每个输出的URL都以https开头。


Example Outputhttps://www.example.com/
https://www.example.com/index.html
https://www.example.com/about.html

验证输出后,重新运行命令,这次将输出写入名为urls-https.txt的新文件。


cat urls.txt | sed 's|http|https|' > urls-https.txt

此命令不会向终端产生输出,因为它已被重定向到urls-https.txt

现在已经有了更新的URL列表,我们准备安装Siege,并且开始测试。

第6步使用 Siege 进行基准测试

开始测试你的网站之前,你必须先安装Siege 。

Siege可以从标准的Ubuntu软件包库中获得,所以用apt-get安装它。


sudo apt-get install siege

Siege有两种操作模式: 互联网和基准, Internet模式模拟访问者浏览目标网站,而基准测试模式则以Web服务器可以处理的速度发出请求。我们首先在internet模式下运行Siege。

更改到你的主目录,并且在internet模式下开始使用Siege,如果你想针对仅HTTP地址进行测试,请替换urls_file 使用urls.txt,如果你跟随了步骤5,并且希望对HTTPS地址进行测试,请替换urls_file 使用urls-https.txt


cd ~
siege --internet --concurrent=5 --time=30S --log="siege-internet.log" --file="urls_file"

--internet对互联网模式设置了Siege,--concurrent是要模拟的访问者数,在此例子中,我们告诉Siege模拟5个并发用户以生成一些流量,而不会使服务器不堪重负,随着你对服务器功能的熟悉,你可以根据需要增加这个数字,--time运行多长时间,此值可以用S设置秒,M为分钟,H为小时数,在此例子中,我们再次让Siege运行30秒,以产生一些流量而不会使服务器不堪重负,将来,你可以尝试不同长度的时间来查看服务器如何响应流量的持续负载,--log是你希望Siege写入它测试结果的路径的路径,默认情况下,此位置为/var/log/siege.log,需要sudo权限,--file是包含Siege将用于测试的URL的文件的路径,

当你首次开始Siege时,它报告你正在使用的版本号和正在模拟的并发用户数量,然后,它告诉你测试已经开始。


Siege Output at Start of Run** SIEGE 3.0.8
** Preparing 5 concurrent users for battle.
The server is now under siege...

一旦Siege运行完成,或者使用CTRL C终止,它将同时显示测试结果以及结果日志文件的位置。


Siege Output at End of Run...
Lifting the server siege... done.

Transactions: 157 hits
Availability: 100.00 %
Elapsed time: 29.72 secs
Data transferred: 0.15 MB
Response time: 0.49 secs
Transaction rate: 5.28 trans/sec
Throughput: 0.01 MB/sec
Concurrency: 2.59
Successful transactions: 161
Failed transactions: 0
Longest transaction: 0.74
Shortest transaction: 0.27

FILE: siege-internet.log
You can disable this annoying message by editing
the .siegerc file in your home directory; change
the directive 'show-logfile' to false.

现在,以基准测试模式运行Siege,以发现该站点一次可处理的最大页面请求数,当决定哪些附加技术可以提高网站性能时,这是有用的信息,

再次开始,这次在基准模式下,使用--benchmark代替--internet


siege --benchmark --time=30S --log="siege-benchmark.log" --file="urls_file"

输出跟以前的格式相同,但是这一次是不同的,因为模式不同。


Siege Output** SIEGE 3.0.8
** Preparing 5 concurrent users for battle.
The server is now under siege...
Lifting the server siege... done.

Transactions: 444 hits
Availability: 100.00 %
Elapsed time: 29.72 secs
Data transferred: 18.16 MB
Response time: 0.49 secs
Transaction rate: 105.28 trans/sec
Throughput: 4.41 MB/sec
Concurrency: 14.14
Successful transactions: 421
Failed transactions: 0
Longest transaction: 0.74
Shortest transaction: 0.27

FILE: siege-benchmark.log
You can disable this annoying message by editing
the .siegerc file in your home directory; change
the directive 'show-logfile' to false.

现在我们已经用Siege测试,并且测试了你的站点,我们可以更详细地了解输出,并实际使用统计信息。

第7步了解Siege的结果

它提供的统计数据涵盖了一系列的指标,可以让你深入了解网站健康状况。


Siege Output at End of Run...
Transactions: 904 hits
Availability: 97.41 %
Elapsed time: 4.59 secs
Data transferred: 4.37 MB
Response time: 0.07 secs
Transaction rate: 196.95 trans/sec
Throughput: 0.95 MB/sec
Concurrency: 12.86
Successful transactions: 904
Failed transactions: 24
Longest transaction: 1.95
Shortest transaction: 0.00
...

具体来说,这些指标意味着:

Transactions是Siege请求的总请求数,Availability是web服务器响应的请求的百分比,包括4xx和5xx级HTTP错误代码Elapsed time测试运行的时间,Data transferred是使用测试站点的带宽的总数量,Response time是网络服务器响应请求所用的平均时间,Transaction rate是网络服务器每秒处理的平均事务数,Throughput是网络服务器每秒所提供的数据量,Concurrency是打开的同时连接的平均数目,Successful transactions是以小于400的HTTP状态码响应的事务的总数,Failed transactions是使用HTTP状态代码响应的事务总数大于400Longest transaction是最长时间请求完成的时间,Shortest transaction是最短请求完成的时间,

Transaction rateFailed transactions提供了最快的服务器端服务器健康测试。

Transaction rate表示网站的速度,因为它是网站服务器可以服务的页数,这个数越高,你网站的访问者越多,访客收到的每个页面越快,如果你正在使用"Siege"来提高网站响应的通用性,则这是你想要增加的数字。

Failed transactions值指来自包含错误代码的web服务器的响应,如503 Service Unavailable ,这些错误往往指向类似于数据库的问题,无法处理它接收的请求数或网络服务器,如果这个数字除零以外,你应该查看服务器文件的日志,以确切地解决问题。

随着你更改Transaction rate,并且随时间减少Failed transactions,还要记住在终端中查看的日志文件和测试日期和时间,这将帮助你跟踪你的工作的整体轨迹。



文章标签:WEB  网站  Ubuntu  Firefox  benchmark  sprox  siege  

正文

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语