介绍
Siege是一个可配置的基准测试工具,用于通过发出网页请求来测试Web服务器的网站。 Siege请求的每秒页数可以设置为从每秒几页到网站可以处理的最大页数。
这个信息对于发现性能瓶颈是非常有用的,通过突出显示首先耗尽哪个服务器资源以及在哪个流量级别。 有了这些信息,您可以更改服务器的配置,或者在实际站点发生故障之前升级服务器的硬件。 另外,通常的系统管理程序(如备份)可以在模拟负载下进行测试,以确定它们对网站性能的影响。
在本指南中,我们将安装并配置Siege以基准测试和浏览模式运行。 基准测试模式提供了与Web服务器可以处理的请求数量一样多的数据,并且浏览模式模拟了可配置数量的网站访问者。
因为使用Firefox配置通过代理服务器运行的Internet连接特别简单,我们将使用它通过Sproxy代理服务器连接到Internet。 Sproxy是专门为与Siege一起工作而创建的,它将每个通过它的请求的URL记录到一个文件中。 我们将使用该文件来告诉Siege要测试哪些URL。
在本教程的第一部分中,我们将安装Sproxy并将Firefox配置为通过它连接到Internet。 从那里,我们将生成一个URL列表来进行Siege测试,最后,我们将检查测试结果并确定性能瓶颈。
警告:只能使用Siege来测试您拥有的或有权测试的网站。 对未经授权的网站使用Siege可能会在某些国家被视为犯罪。
先决条件
为了完成本教程,您将需要:
- 遵循这个Ubuntu 16.04初始服务器设置教程设置的一台Ubuntu 16.04服务器,包括一个sudo非root用户和一个防火墙。 请务必使用
sudo ufw allow 8080
命令在初始服务器设置教程的第7步中打开端口sudo ufw allow 8080
。 这是默认情况下Sproxy监听的端口。 - Firefox安装。 如果您在本地计算机上使用macOS或Windows,则应从官方Mozilla网站下载安装文件。 如果你使用Linux,你应该使用你的软件包管理器,或者按照Mozilla的官方说明来安装Firefox。 本教程包含使用Firefox版本56的说明。
- 您拥有或有权测试的网站是公开可用的,或者您可以从安装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-perl
, liburi-perl
和libwww-perl
是Sproxy依赖的Perl编程语言库通过SSL,操纵URI字符串,并与万维网接口。
现在,转到您的主目录并从其官方网站下载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
选项从每个文件名剥离第一个主要组件。 这sproxy
压缩包解压缩到sproxy
目录中 - 由--directory
选项指定 - 而不是sproxy- 1.02 /sproxy/
。
现在,转到sproxy
目录,使用configure
和make
命令来构建和安装Sproxy。
cd sproxy
./configure
make
sudo make install
./configure
命令检查系统上是否存在所有必需的程序依赖关系和构建工具。 make
命令然后构建程序二进制文件。 最后, make install
命令将新的二进制文件复制到服务器上正确的位置。 由于Sproxy在/usr/local/lib/sproxy/JoeDog
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现在已经可以使用,所以让我们通过Sproxy修改Firefox来连接到互联网,以便制作一个URL列表来与Siege进行基准测试。
第2步 - 配置Firefox使用Sproxy
我们现在将更改Firefox的网络配置,通过Sproxy发送所有的Web请求,生成Siege需要的基准目标列表。
因为我们希望Sproxy记录我们访问的每个URL,我们也将清除Firefox的本地网页缓存。 网页缓存是Firefox已经访问的网站的图像和其他静态内容的本地存储。 默认情况下,Firefox不会重新请求已经缓存的网站资源。
修改网络设置
首先,在Firefox的主首选项屏幕的常规选项卡下更改网络代理设置。
- 打开Firefox。 (本教程包含Firefox版本56的说明,其他版本参见Firefox的官方支持文档 。
- 点击屏幕右上角的汉堡包菜单,然后选择首选项以进入常规屏幕。
- 滚动到页面底部,找到“ 网络代理”部分。
- 点击设置...按钮打开连接设置面板。
在此面板中,将Firefox配置为通过您在第1步中安装的Sproxy服务器传递所有请求。
- 选择手动代理配置 。
- 在HTTP代理字段中输入您的Sproxy服务器的公共IP地址。
- 在端口字段中将端口号设置为
8080
。 - 单击确定保存更改。
您现在已经将Firefox配置为使用您的Sproxy HTTP代理服务器,因此您已经准备好清除本地缓存。
清除本地缓存
Firefox将本地缓存称为离线网页内容 。 它位于Firefox 首选项屏幕的隐私和安全部分。
- 点击屏幕右上角的汉堡包菜单,然后选择首选项以进入常规屏幕。
- 点击屏幕左侧的隐私和安全 。
- 滚动到页面底部,找到“ 离线网页内容和用户数据”部分,然后按“ 立即清除”按钮。
您的网页缓存现在是空的,所以Firefox遇到的每个基于HTTP的网站资源的地址将被传递给Sproxy,直到该资源被重新缓存。
测试配置
Firefox现在配置为通过Sproxy路由所有基于HTTP的请求,但是在第1步结束时用CTRL+C
停止了Sproxy。 因此,如果您尝试通过与Firefox的HTTP连接访问网站,您将看到一个错误页面。
如果您没有看到此错误消息,请确认您的Firefox设置与之前的屏幕截图相匹配,然后仔细检查是否没有通过HTTPS连接到网站。
如果要再次正常使用Firefox,请重新跟踪先前修改网络设置的说明 ,但是这次请在“ 连接设置”面板上选择“ 无代理”选项。
现在我们已经配置Firefox通过Sproxy连接到互联网,我们可以通过启动Sproxy和使用Firefox浏览目标网站来创建一个URL列表。
第3步 - 启动Sproxy并生成一个URL列表
在这一步中,我们将启动Sproxy服务器并使用Firefox浏览目标网站。 Sproxy会将每个基于HTTP请求的基于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会将Firefox请求的每个URL写入mixed-urls.txt
文件,同时将URL打印到终端。
一旦你访问了所有你打算测试的网页,用CTRL+C
停止Sproxy。
现在,您在测试网站上遇到的每个基于HTTP的URL的mixed-urls.txt
文件中都有一个列表。 下一步是删除任何不解析到您的网站的URL,以确保您只使用Siege对授权的域名。
第4步 - 消毒URL文件
现代网站通常在不止一个位置托管内容。 此内容可能是托管在内容交付网络(CDN)上的图片,也可能是托管在Google等第三方服务上的字体。 当我们运行Siege时,我们要确保我们只是对我们有权测试的域进行基准测试。 因此,我们必须删除mixed-urls.txt
文件中没有指向目标网站的任何网址。
使用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
有二进制数据,grep会失败,没有-a
标志。
在正则表达式中, ^
字符表示字符串必须以http:// www.example.com
开头才能被视为匹配。
这个命令在终端上不会输出,但会创建一个名为urls.txt
的新文件。
现在,打开urls.txt
,确保每行都以您的测试网站的域名开头,并删除任何不包含的行。
nano urls.txt
完成编辑后保存更改并关闭文件。
您的URL列表现在只包含您有权测试的URL,所以我们准备安装Siege。 如果您还想通过HTTPS对网站进行基准测试,请按照第5步中的可选说明创建包含网址的HTTPS版本的第二个网址文件。
第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有两种操作模式:互联网和基准。 互联网模式模拟访问者浏览目标网站,而基准模式使得请求像Web服务器能够处理的一样迅速。 我们将首先在互联网模式下运行Siege。
互联网模式有助于通过增加同时访问者的数量来缓慢地增加服务器上的负载。 这种模式也可以创建一个长时间的持续负载,如果您需要了解在创建备份等操作期间您的网站性能会发生什么情况,这种方式非常有用。
切换到您的主目录,并在Internet模式下启动Siege。 如果您想对纯HTTP地址进行测试, urls_file
用urls.txt
替换urls.txt
。 如果您按照第5步进行操作,并且想要针对HTTPS地址进行测试,请将urls_file
替换为urls-https.txt
。
cd ~
siege --internet --concurrent=5 --time=30S --log="siege-internet.log" --file="urls_file"
-
--internet
设置围攻互联网模式。 -
--concurrent
是模拟的访问者数量。 在这个例子中,我们告诉Siege模拟5个并发用户产生一些流量而不会压倒服务器。 随着您对服务器功能的熟悉程度的提高,您可以根据需要增加此数字。 -
--time
是围攻将运行多长时间。 该值可以用秒设置,秒为M
,分钟为H
,小时为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,以发现网站一次能够提供的最大页面请求数。 在尝试决定哪些其他技术可以提高您网站的性能时,这是非常有用的信息。 此外,基准测试模式可以突出显示资源瓶颈,正如您在第8步中更仔细地检查此模式时所看到的。
再次启动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.
与互联网模式的统计数据相比,基准模式的统计数据比较复杂。 我们将在第7步和8中深入探讨它们。
现在我们已经用Siege对您的网站进行了测试和基准测试,我们可以更详细地探索输出并实际使用统计数据。
第7步 - 了解围攻的结果
当谈到了解您的网站性能,确定瓶颈和确定升级的重点时,Siege可以成为一个强大的资产。 它提供的统计数据涵盖了一系列指标,可以让您深入了解您网站的整体健康状况。
正如我们在第6步中看到的,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
是Web服务器响应请求所花费的平均时间。 -
Transaction rate
是Web服务器每秒Transaction rate
的平均事务数。 -
Throughput
是Web服务器每秒钟处理的数据量。 -
Concurrency
是同时打开的连接的平均数量。 -
Successful transactions
是HTTP状态码小于400的响应Successful transactions
的总数。 -
Failed transactions
数是HTTP状态码大于400的响应Failed transactions
的总数。 -
Longest transaction
是最长的请求完成的时间。 -
Shortest transaction
是最短的请求完成的时间。
Transaction rate
和Failed transactions
提供了对您的Web服务器整体健康最快的试金石。
Transaction rate
代表您网站的速度,因为它是您的网站服务器可以服务的每秒页数。 这个数字越高,您的网站可以处理的访问者就越多,访问者收到的每个网页就越快。 如果您使用Siege来提高网站的一般响应能力,这是您想要增加的数字。
Failed transactions
值是指来自包含错误代码的Web服务器的任何响应,例如503 Service Unavailable
。 这些错误通常指向像无法处理其正在接收的请求数量的数据库或RAM耗尽的Web服务器的问题。 如果这个数字不是零,你应该看看你的Web服务器的日志文件,看看到底发生了哪些错误,并得到如何解决问题的方向。
当您进行更改以增加Transaction rate
并减少Failed transactions
时,还请记住在每次运行Siege时请参阅您创建的日志文件,因为它包含您在终端中看到的所有统计信息以及日期和测试的时间。 这将帮助您跟踪您的努力的总体轨迹。
现在我们已经检查了Siege的输出以确定您的Web服务器的速度和健壮性,现在是时候看看我们如何使用相同的信息来识别和消除性能瓶颈。
第8步 - 识别性能瓶颈
在基准测试模式下,Siege每秒发出的请求数量与Web服务器能够提供的数量相同。 当服务器达到可以服务的最大页数时,它已达到资源限制 。
受影响的四种最可能的资源是:
- 随机存取存储器
- 中央处理器
- 磁盘
- 网络带宽
要充分利用基准测试模式,您需要与Siege同时运行多个附加工具,以便您可以监视Siege增加测试负载时发生的情况。
您可以使用top命令监视前三个资源(RAM,CPU和磁盘使用情况),该工具可以动态地实时查看系统资源。
Ubuntu默认配置最高,所以你不需要安装它。 只需运行命令, top
。
顶部显示的信息分为两部分。
Sample top Outputtop - 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
由前五行输出组成的上部分显示了当前系统使用情况的摘要。
下面的部分显示了当前在系统上运行的各个服务器进程以及每个进程的标识号,所有者,优先级,好值,虚拟内存使用,物理内存使用,共享内存使用,状态,CPU使用百分比,内存使用百分比,活动总时间和名称。
虽然top是管理进程和监视CPU使用情况的有用工具,但在这种情况下,我们希望看到在Siege基准测试的胁迫下,能够告诉我们有关我们系统的信息。
CPU使用%Cpu(s): 37.3 us, 7.3 sy,
这些值告诉我们,用户进程消耗了37.3%的CPU,系统进程消耗了7.3%。 如果将这两个值一起添加,则会得到总CPU使用率。
如果服务器的CPU使用率为100%或接近100%,请检查进程列表中的顶部条目,以查看是否有一个或多个消耗异常高的CPU数量。 如果是这样,请考虑重新配置或微调进程以使用较少的CPU。 如果这不可行,则可能需要升级服务器上的CPU。
现在,我们来看看内存使用情况。
Sample top Outputtop - 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
默认情况下,第四行的内存使用量以千字节显示。 在前面的示例输出中,我们已经按下SHIFT+E
一次,将该值转换为兆字节,以使数字更容易处理。 再次按SHIFT+E
将该值转换为千兆字节,然后继续按SHIFT+E
循环回到默认的千字节显示。
总值是服务器上可用的内存总量。 请记住,内核在启动时会保留一些内存,所以一个1024 MB的机器将在这里显示991 MB的内存。
avail Mem
显示系统上剩余的内存量。 这个数字会随着更多的内存使用而变小,并且当服务器上没有剩余的内存时最终会达到零。
与CPU使用情况一样,如果avail Mem
运行在零或接近零,请检查消耗异常大量内存的条目的进程列表。 如果可能的话,重新配置或微调这些进程以使用更少的内存或升级服务器上的RAM数量。
最后,我们来看看磁盘使用情况。
Sample top Outputtop - 21:02:32 up 52 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, 31.6 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
我们感兴趣的磁盘使用情况I / O等待,并不是有多少磁盘空间可用,而是有多少磁盘访问正在减慢服务器的速度。 磁盘访问(特别是在使用旋转硬盘的服务器上)非常缓慢,并且每当服务器访问磁盘时,CPU都必须等待检索信息。
顶部以wa
值报告这个信息。 它表示CPU(s)闲置等待磁盘数据的时间百分比。 这个数字应该尽可能接近0.0。
在前面的例子中, wa
值是31.6
。 这意味着CPU花费了三分之一的时间等待磁盘上的数据。 这是一个很大的时间,这将严重影响网站的性能。
I / O等待通常是访问磁盘文件或重复调用本地数据库的结果。 如果wa
超过0.0,则考虑将静态资源移动到远程位置(如内容交付网络(CDN)),或者研究如何减少应用程序对其相关本地数据库的访问次数。
按Q
退出顶部。
我们将要看的最后一个资源是网络使用。 为了监视这一点,我们将使用带宽监视器新一代工具。
用apt-get
安装这个工具,然后用命令bwm-ng
运行它。
sudo apt-get install bwm-ng
bwm-ng
输出的上半部分显示带宽监视器新一代的版本号,数据更新的频率(默认每0.5秒),输入源用于确定可用的网络接口(默认情况下为/proc/net/dev
Linux),并显示statstic(默认数据使用率)。
输出的底部包含一个表格,用于报告每个网络接口的传入数据量( Rx
),传出数据量( Tx
)和总数据量( Total
)。
最后一行显示所有网络接口的总值。
Sample bwm-ng Output 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。
如果您的网站使用PHP,请考虑安装PHP-FPM作为标准PHP实现的替代方案。 PHP-FPM降低了对基于PHP的网页的CPU要求,从而加快了整个网站的速度。