如何在Ubuntu上使用Firefox,Siege和Sproxy对网站进行基准测试

介绍

Siege是一种可配置的基准测试和测试工具,适用于通过发出网页请求来测试Web服务器的网站。Siege请求的每秒页数可以设置为从每秒几页到网站可以处理的最大数量。

通过突出显示首先耗尽哪个服务器资源以及流量级别,可以发现性能瓶颈。有了这些信息,您可以在实际站点出现故障之前更改服务器的配置或升级服务器的硬件。此外,可以在模拟负载下测试常见的系统管理过程(如备份),以确定它们对网站性能的影响。

在本指南中,我们将安装和配置Siege以在基准测试和浏览模式下运行。基准测试模式产生与Web服务器一样多的请求,浏览模式模拟可配置网站访问者的数量。

因为使用Firefox配置通过代理服务器运行的Internet连接特别简单,我们将使用它通过Sproxy代理服务器连接到Internet。Sproxy是专门为Siege工作而创建的,它记录了通过它传递给文件的每个请求的URL。我们将使用该文件告诉Siege要测试哪些URL。

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

警告:在某些国家/地区,对未经授权的网站使用Siege可能会被视为犯罪。

准备

要完成本教程,您需要:

  • 一个Ubuntu 16.04服务器,包括一个可以使用sudo权限的非root用户和防火墙。一定要打开端口8080。这是Sproxy默认侦听的端口。
  • 安装Firefox。
  • 您拥有或有权测试的网站,或者您可以从安装Siege的服务器访问该网站。

第1步 - 构建和安装Sproxy

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

由于Sproxy的构建过程依赖于默认情况下未安装在Ubuntu上的工具,因此您需要安装一些其他软件包。

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

$ sudo apt-get update

然后,安装包。

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

build-essential提供了通用库和需要建立在基于Debian的Linux发行版的软件工具,同时libnet-ssleay-perlliburi-perllibwww-perl是SPROXY所依赖的Perl编程语言的库,其可以通过SSL连接,操纵URI字符串,并与World Wide Web交互。

现在,切换到您的主目录并从其官方网站下载Sproxy源代码存档。

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

然后,创建一个名为sproxy的目录,并将源代码存档解压缩到新目录中。

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

这里,该-zxf选项告诉tar包使用gunzip并提取sproxy-latest.tar.gz文件的内容。该--strip-components=1选项从每个文件名中删除第一个前导组件。这会将存档解压缩到sproxy目录中,其由--directory选项指定而不是sproxy-1.02/sproxy/

现在,使用configuremake命令切换到要构建和安装Sproxy 的sproxy目录。

$ cd sproxy
$ ./configure
$ make
$ sudo make install

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

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

$ cd ~
$ sproxy -v

输出会告诉您Sproxy正在侦听的端口,Sproxy正在写入输出的文件的位置,以及Sproxy等待来自远程主机的回复的秒数。

SPROXY 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,以便创建一个用于与Siege进行基准测试的URL列表。

第2步 - 配置Firefox以使用Sproxy

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

因为我们希望Sproxy记录我们访问的每个URL,所以我们还将清除Firefox的本地Web缓存。Web缓存是来自Firefox已访问过的网站的图像和其他静态内容的本地存储。默认情况下,Firefox不会重新请求已缓存的网站资产。

修改网络设置

首先,在Firefox的主“首选项”屏幕上的“ 常规”选项卡下更改“网络代理”设置。

  1. 打开Firefox。
  2. 单击屏幕右上角的菜单,然后选择首选项以转到常规屏幕。
  3. 滚动到页面底部,找到“ 网络代理”部分。
  4. 单击“ 设置...”按钮以打开“ 连接设置”面板。

在此面板中,将Firefox配置为通过您在步骤1中安装的Sproxy服务器传递其所有请求。

  1. 选择手动代理配置
  2. HTTP代理字段中输入您的Sproxy服务器的公共IP地址。
  3. 端口字段中设置端口号8080。
  4. 单击“ 确定”以保存更改。

您现在已将Firefox配置为使用Sproxy HTTP代理服务器,因此您可以清除本地缓存。

清除本地缓存

Firefox将本地缓存称为脱机Web内容。它位于Firefox的“首选项”屏幕的“隐私和安全”部分。

  1. 单击屏幕右上角的菜单,然后选择首选项以转到常规屏幕。
  2. 单击屏幕左侧的“ 隐私和安全 ”。
  3. 滚动到页面底部,找到“ 脱机Web内容和用户数据”部分,然后按“立即清除”按钮。

您的Web缓存现在为空,因此Firefox遇到的每个基于HTTP的网站的地址都将传递给Sproxy,直到重新缓存该地址为止。

测试配置

Firefox现在配置为通过Sproxy路由所有基于HTTP的请求,但是在步骤1结束时您停止了Sproxy。因此,如果您现在尝试通过HTTP连接访问网站,您将看到错误页面。

如果您没有看到此错误消息,请验证您的Firefox设置是否与之前的屏幕截图相匹配,并仔细检查您是否未通过HTTPS连接到网站。

现在我们已经将Firefox配置为通过Sproxy连接到Internet,我们可以通过启动Sproxy并使用Firefox浏览目标网站来创建URL列表。

第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 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会将Firefox请求的每个URL写入mixed-urls.txt文件,同时将URL打印到终端。

一旦您访问了计划测试的所有网页,请停止Sproxy。

现在,您在测试网站上遇到的每个基于HTTP的URL的mixed-urls.txt文件中都有一个列表。下一步是删除任何无法解析到您网站的URL,以确保您只对授权域使用Siege。

第4步 - 清理URL文件

现代网站通常在多个位置托管内容。此内容可以是托管在内容分发网络(CDN)上的图像,也可以是托管在第三方服务(如Google)上的字体。当我们运行Siege时,我们希望确保我们仅对我们有权测试的域进行基准测试。因此,我们必须删除mixed-urls.txt文件中未指向目标网站的URL。

使用grep(一种用于根据用户指定的正则表达式搜索纯文本输入的程序),仅查找与您的测试域匹配的URL,并将结果重定向到名为urls.txt的新文件。

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

-a标志告诉grep将二进制文件视为文本文件。这是必要的,因为浏览器有时会发出包含二进制数据的POST请求,然后Sproxy会写入mixed-urls.txt。如果mixed-urls.txt存在二进制数据,没有-a标志的grep将会失败。

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

此命令在终端中不会产生任何输出,但会创建一个名为urls.txt的新文件。

现在,打开urls.txt以确保每行都以测试网站的域名开头,并删除任何不符合条件的行。

$ nano urls.txt

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

您的URL列表现在只包含您有权测试的URL,因此我们已准备好安装Siege。如果您还想通过HTTPS对您的网站进行基准测试,请按照步骤5中的可选说明创建包含您URL的HTTPS版本的第二个URL文件。

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

许多网站都通过HTTP和HTTPS运行,甚至只通过HTTPS运行,因此您也可以通过HTTPS对您的网站进行基准测试。Siege可以做到。您只需要提供一个以https开头的网址列表。

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

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

输出将与urls.txt文件中已有的URL列表相同,但每个输出的URL都将以https开头。

https://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服务器一样快速地处理请求。我们将首先在互联网模式下运行Siege。

Internet模式适用于通过增加同时访问者的数量来缓慢增加服务器上的负载。此模式还可以长时间创建持续负载,如果您需要了解在创建备份等操作期间网站的性能,这将非常有用。

切换到您的主目录并以Internet模式启动Siege。如果您想针对仅HTTP地址进行测试,请替换urls_fileurls.txt。如果您按照步骤5进行测试并希望针对HTTPS地址进行测试,请替换urls_fileurls-https.txt

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

首次启动Siege时,它会报告您正在使用的版本号以及它正在模拟的并发用户数。然后,它告诉您测试已经开始。

** SIEGE 3.0.8
** Preparing 5 concurrent users for battle.
The server is now under siege...

一旦Siege完成运行或终止,它还将显示测试结果以及结果日志文件的位置。

...
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.

由于输出中包含的统计数据很复杂,我们将在第7步中深入探讨它们。

现在,让我们以基准模式运行Siege,以发现网站一次能够提供的最大页面请求数。这可以尝试确定哪些其他技术可以改善您网站的性能。此外,基准模式可以突出显示资源瓶颈,您将在步骤8中更仔细地检查此模式时看到。

再次启动Siege,这次是在基准模式下,使用--benchmark而不是--internet

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

输出遵循与以前相同的格式,但这次结果不同,因为模式不同。

** 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.

与internet模式的统计数据一样,基准模式的统计数据很复杂。我们将在第7步和第8步深入探讨它们。

现在我们已经使用Siege对您的站点进行了测试和基准测试,我们可以更详细地探索输出并实际使用统计信息。

第7步 - 了解Siege的结果

在了解您的网站性能,识别瓶颈以及决定升级工作重点的位置时,Siege可以成为强大的工具。它提供的统计数据涵盖了一系列指标,可以让您深入了解您的网站的整体健康状况。

正如我们在第6步中看到的,Siege的输出通常如下所示:

...
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 是Siege用于测试网站的带宽总量。
  • Response time 是Web服务器响应请求所花费的平均时间。
  • Transaction rate 是Web服务器每秒平均的事务数。
  • Throughput 是Web服务器每秒服务的数据量。
  • Concurrency 是打开的同时连接的平均数。
  • Successful transactionsHTTP状态代码小于400时响应的事务总数。
  • Failed transactions是HTTP状态代码大于400时响应的事务总数。
  • Longest transaction 是最长请求完成的时间。
  • Shortest transaction 是最短请求完成的时间。

Transaction rateFailed transactions为您的Web服务器的整体运行状况提供指标。

Transaction rate代表你的网站的速度,因为它是每秒你的Web服务器可以服务的页面数量。此数字越高,您的网站可以处理的访问者越多,访问者每页收到的访问者就越快。如果您使用Siege来提高网站的一般响应能力,那么这就是您想要增加的数字。

Failed transactions值指的是来自Web服务器的包含错误代码的任何响应,例如503 Service Unavailable。这些错误通常指向诸如无法处理正在接收的请求数量的数据库或用尽RAM的Web服务器之类的问题。如果此数字不是零,您应该查看Web服务器的日志文件,以确切了解发生了哪些错误,并获得有关如何解决问题的指导。

当您进行更改以增加Transaction rate和缩短Failed transactions时间时,还要记住查看每次运行Siege时创建的日志文件,因为它包含您在终端中看到的所有相同统计信息以及测试日期和时间。这将有助于您跟踪工作的总体轨迹。

现在我们已经检查了Siege的输出以确定您的Web服务器的速度和稳健性,现在是时候看看我们如何使用相同的信息来识别和消除性能瓶颈。

第8步 - 识别性能瓶颈

在基准模式下,Siege每秒可以提供与Web服务器能够服务的数量一样多的请求。当服务器达到它可以服务的最大页数时,它已达到资源限制

最有可能受影响的四种资源是:

  1. 内存
  2. 中央处理器
  3. 磁盘
  4. 网络带宽

为了充分利用基准测试模式,您需要在Siege的同时运行几个额外的工具,以便在Siege增加测试负载时监控系统中发生的情况。

您可以使用top(一种提供动态,实时的系统资源视图)的工具来监控前三种资源(RAM,CPU和磁盘使用情况)。

Ubuntu默认配置top,因此您无需安装它。只需运行top命令即可。

顶部显示的信息分为两部分。

top - 21:02:32 up 50 min,  1 user,  load average: 0.07, 0.02, 0.00
Tasks: 102 total,   1 running, 101 sleeping,   0 stopped,   0 zombie
%Cpu(s):  37.3 us,  7.3 sy,  0.0 ni, 99.3 id,  8.3 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   1015200 total,    63536 free,    431456 used,   520208 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   512308 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 3249 www-data     20   0   469592   92276   33488 D  24.6  9.1   0:05.01 apache2
 3239 www-data     20   0   442836   75080   41896 S  5.6  7.4   1:31.97 apache2
 3572 www-data     20   0   424372   35272   21164 S  4.0  3.5   0:02.69 apache2

上部由前五行输出组成,显示当前系统使用情况的摘要。

下半部分显示了当前在系统上运行的各个服务器进程的列表,以及每个进程的标识号,所有者,优先级,nice值,虚拟内存使用,物理内存使用,共享内存使用,状态,CPU使用百分比,内存使用百分比,活动总时间和名称。

虽然top是管理流程监控CPU使用的有用工具,但在这种情况下,我们希望在Siege基准测试下看到它可以显示关于我们系统的内容。

CPU使用率读取%Cpu(s): 37.3 us, 7.3 sy,。这些值告诉我们,用户进程消耗了37.3%的CPU,系统进程消耗了7.3%。如果将这两个值相加,则将获得总CPU使用率。

如果您的服务器以100%或接近100%的CPU使用率运行,请检查进程列表中的顶部条目,以查看是否有一个或多个进程正在消耗异常大量的CPU。如果是这样,请考虑重新配置或微调进程以使用更少的CPU。如果不行的话,您可能需要升级服务器上的CPU。

现在,我们来看看内存使用情况。

top - 21:02:32 up 51 min,  1 user,  load average: 0.21, 0.47, 0.80
Tasks: 102 total,   1 running, 101 sleeping,   0 stopped,   0 zombie
%Cpu(s):  17.4 us,  3.4 sy,  0.0 ni, 79.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   991.406 total,    223.914 free,    395.621 used,   371.871 buff/cache
MiB Swap:        0.000 total,        0.000 free,        0.000 used.   526.156 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 3249 www-data     20   0   469592   92276   33488 D  24.6  9.1   0:05.01 apache2
 3239 www-data     20   0   442836   75080   41896 S  5.6  7.4   1:31.97 apache2
 3572 www-data     20   0   424372   35272   21164 S  4.0  3.5   0:02.69 apache2             

默认情况下,RAM使用情况在第四行显示为千字节。在前面的示例输出中,我们将值转换为兆字节以使数字更易于使用。再按SHIFT+E一次将值转换为千兆字节,然后继续按此SHIFT+E键以回到默认的千字节显示。

该total值是服务器上可用的内存总量。请记住,内核在启动时会保留一些内存,因此1024

MB的计算机将在此处显示991 MB的内存。

avail Mem显示系统上的剩余存储量。随着使用更多RAM,此数字将变小,最终将达到零。

与CPU使用情况一样,如果avail Mem运行时接近零,请检查消耗异常大量内存的进程。如果可能的话,请重新配置或微调这些进程以使用更少的内存或升级服务器上的RAM大小。

最后,我们来看看磁盘使用情况。

top - 21:02:32 up 51 min,  1 user,  load average: 0.21, 0.47, 0.80
Tasks: 102 total,   1 running, 101 sleeping,   0 stopped,   0 zombie
%Cpu(s):  17.4 us,  3.4 sy,  0.0 ni, 79.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   991.406 total,    223.914 free,    395.621 used,   371.871 buff/cache
MiB Swap:        0.000 total,        0.000 free,        0.000 used.   526.156 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 3249 www-data     20   0   469592   92276   33488 D  24.6  9.1   0:05.01 apache2
 3239 www-data     20   0   442836   75080   41896 S  5.6  7.4   1:31.97 apache2
 3572 www-data     20   0   424372   35272   21164 S  4.0  3.5   0:02.69 apache2             

我们感兴趣的磁盘使用情况是I /O等待,不是可用的磁盘空间有多少,而是有多少磁盘访问量减慢了服务器的速度。磁盘访问(特别是在使用机械硬盘的服务器上)非常慢时,每当服务器访问磁盘,CPU必须等待检索信息。

Top将此信息报告为wa值。它表示CPU等待磁盘数据的空闲时间百分比。该数字应尽可能接近0.0。

在前面的示例中,wa值为31.6。这意味着CPU花费三分之一的时间等待来自磁盘的数据。这是一个大量的时间,它将严重影响网站性能。

I /O等待通常是访问磁盘以查找文件或重复调用本地数据库的结果。如果wa大于0.0,请考虑将静态资源移动到远程位置(如内容传送网络(CDN)),或研究减少应用程序对其相关本地数据库的跳闸次数的方法。

按Q退出。

我们将看到的最终资源是网络使用情况。为了监控这一点,我们将使用Bandwidth Monitor New Generation工具。

使用apt-get安装此工具,然后使用命令bwm-ng运行它。

$ sudo apt-get install bwm-ng
$ bwm-ng

输出的顶部显示带宽监视器新一代的版本号,数据更新的频率(默认情况下每0.5秒),用于确定可用网络接口的输入源(在Linux上默认情况/proc/net/dev)和statstic正在显示(rate默认情况下使用数据)。

输出的底部包括一个表,该表报告每个网络接口的传入数据(Rx),传出数据(Tx)和总数据(Total)的数量。

最后一行显示所有网络接口的总值。

bwm-ng v0.6.1 (probing every 0.500s), press 'h' for help
  input: /proc/net/dev type: rate
  -         iface                   Rx                   Tx                Total
  ==============================================================================
               lo:           0.00 KB/s            0.00 KB/s            0.00 KB/s
             eth0:          30.99 KB/s          499.11 KB/s          530.11 KB/s
  ------------------------------------------------------------------------------
            total:          30.99 KB/s          499.11 KB/s          530.11 KB/s

当网络带宽导致瓶颈时,通常是因为Tx已经达到最大值。要解决此问题,请从托管服务提供商处获取服务器的连接速度,并将其与bwm-ng显示的速度进行比较。如果bwm-ng显示的速度始终等于或接近服务器可用的最大带宽,则您需要考虑升级主机方案或完全转移到其他提供商。

完成测试后,按CTRL+C退出程序。

结论

在本指南中,我们使用Siege基准测试工具和Sproxy代理服务器在Web服务器上生成可配置的负载,并将其推至最大吞吐量。这些工具对于任何网站部署都非常有用,因为它们有助于查明性能问题并规划升级。

有关减少磁盘I / O和内存瓶颈的另一种方法,请查看Varnish HTTP Cache。Varnish是一个易于使用的反向代理,可存储静态网站资产,减少RAM使用和磁盘I/O。

除了Siege测试工具之外,还有其他的Web性能测试工具,关于更多的Web测试的教程欢迎访问腾讯云+社区学习更多知识。


参考文献:《How to Benchmark a Website with Firefox, Siege, and Sproxy On Ubuntu 16.04》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

运维架构师进阶:Linux进程管理

来源:IBM 译者:ljianhui 链接:blog.csdn.net/ljianhui/article/details/46718835 1.1 Linu...

3669
来自专栏北京马哥教育

秒懂!四步16点高效搞定高性能web服务器nginx

Nginx(读音engine x)服务器由于性能优秀稳定、配置简单以及跨平台,被越来越多的公司和个人所采用,现已成为市场份额继Apache之后的第二大Web服务...

1522
来自专栏Linyb极客之路

使用Jmeter进行http接口性能测试

在进行网页或应用程序后台接口开发时,一般要及时测试开发的接口能否正确接收和返回数据,对于单次测试,Postman插件是个不错的Http请求模拟工具。

2906
来自专栏linux驱动个人学习

Linux进程上下文切换过程context_switch详解--Linux进程的管理与调度(二十一)

因此当前linux的调度程序由两个调度器组成:主调度器,周期性调度器(两者又统称为通用调度器(generic scheduler)或核心调度器(core sch...

2812
来自专栏CDA数据分析师

工具 | 当python爬虫遇到10060错误

相信做过网站爬虫工作的同学都知道,python的urllib2用起来很方便,使用以下几行代码就可以轻松拿到某个网站的源码: ? 最后通过一定的正则匹配,解析返回...

2239
来自专栏HappenLee的技术杂谈

P2P结构与Quorum机制------《Designing Data-Intensive Applications》读书笔记8

有些数据存储系统放弃了Leader的机制,允许任何副本直接接受用户的写操作。(如Amazon的Dynamo,FaceBook的Cassandra,虽然最终Fac...

1262
来自专栏信安之路

轻松了解 web 日志分析过程

日志分析,其实涵盖的面是很广的,什么地方都可以有日志。而本篇文章主要针对 web 日志做一下分析。因为之前去学校里授课的时候有讲过一次,感觉内容挺不错的,就写到...

2432
来自专栏北京马哥教育

Linux性能及调优指南(翻译)之Linux进程管理

本文为IBM RedBook的Linux Performanceand Tuning Guidelines的1.1节的翻译 原文地址:http://www.re...

4009
来自专栏landv

robocopy的用法,数据库局域网备份

2495
来自专栏Java学习网

提升效率的Linux终端快捷操作汇总

提升效率的Linux终端快捷操作汇总 很多普通 Linux 桌面用户都对使用终端感到排斥和恐惧,其实它没大家想的那么复杂,很多常见操作都可以直接在终端中进行,如...

3237

扫码关注云+社区

领取腾讯云代金券