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

介绍

Siege是一个可配置的基准和测试工具,用于测试通过对网页提出请求的网页服务器的网站。

这些信息对发现性能瓶颈非常有用,通过突出显示哪个服务器资源首先耗尽,以及在哪个流量级别。 凭借这些信息,您可以对服务器配置进行更改或在现场网站失败之前升级服务器硬件。

在本指南中,我们将安装和配置 Siege 以运行在基准和浏览模式中.基准模式会处理尽可能多的请求,而浏览模式会模拟可配置的网站访问者数量。

由于配置通过代理服务器运行的互联网连接在Firefox中特别简单,我们将使用它通过Proxy(https://www.joedog.org/sproxy-home/)代理服务器连接到互联网。

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

<$>[警告] 警告: 只使用 Siege 来测试您拥有或有权测试的网站,在某些国家使用 Siege 针对未经授权的网站可能被视为犯罪。

前提条件

为了完成本教程,您将需要:

  • 1个Ubuntu 16.04 服务器通过跟随[这个Ubuntu 16.04 初始服务器设置教程 (https://andsky.com/tech/tutorials/initial-server-setup-with-ubuntu-16-04)而设置,包括一个sudo非根用户和一个防火墙. 请在初始服务器设置的) 中打开端口8080 。 这是 Sproxy 默认听取的端口 。
  • 安装了火狐。 如果您在本地电脑上使用macOS或Windows,请从官方Mozilla网站下载安装文件. 如果您正在使用Linux,您应该使用您的软件包管理器,或者遵循Mozilla的官方指令安装Firefox. 此教程包含与Firefox版本56工作的指示.
  • 您拥有或拥有测试权限的网站,可以公开使用,也可以从您安装的Siege上的服务器上访问。 .

步骤 1 — 构建和安装Sproxy

Sproxy不是预先包装的二进制,所以你必须从其官方网站下载,然后从源头构建它。

由于Sproxy的构建过程依赖于默认情况下在Ubuntu上没有安装的工具,您需要安装一些额外的软件包。

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

1sudo apt-get update

然后,安装这些包。

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

「build-essential」提供了在基于 Debian 的 Linux 发行版上构建软件所需的通用库和工具,而「libnet-ssleay-perl」、「liburi-perl」和「libwww-perl」是用于 Perl 编程语言的库,Sproxy 依赖于通过 SSL 进行连接,操纵 URI 字符串,并与 World Wide Web 接口。

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

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

然后,创建一个名为proxy的目录来构建Sproxy,并将源代码档案解包到新目录中。

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

在这里,-zxf选项将 tar 告诉gunzip并提取proxy-latest.tar.gz文件的内容。--strip-components=1选项将每个文件名中的第一个主要组件删除。

现在,转到Proxy目录以构建和安装Sproxy,使用配置制造命令。

1cd sproxy
2./configure
3make
4sudo make install

/configure命令检查所有必要的程序依赖和构建工具是否存在于系统上。make命令然后构建程序二进制。最后,make install命令将新二进制复制到服务器上的正确位置。由于Sproxy在/usr/local/lib/sproxy/JoeDog创建了一个新目录,您需要运行make install与根特权。

最后,通过返回您的主目录来测试Sproxy是否正常工作,以使用-v选项启动Sproxy。

1cd ~
2sproxy -v

输出告诉你Sproxy正在收听的端口,Sproxy正在编写的输出文件的位置,以及Sproxy会等待远程主机的响应的秒数。

1[secondary_label Sproxy Output]
2SPROXY v1.02 listening on port 9001
3...appending HTTP requests to: /user/urls.txt
4...default connection timeout: 120 seconds

如果 Sproxy 无法启动,请检查终端中的消息,以获取有关错误的信息。

一旦您确认一切正常工作,请用CTRL+C停止Sproxy。

Sproxy现在已经准备好使用,所以让我们修改Firefox以通过Sproxy连接到互联网,以便创建一个URL列表以与Siege进行比较。

步骤2 —配置Firefox使用Sproxy

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

因为我们希望Sproxy记录我们访问的每个URL,我们还会清除Firefox的本地网络缓存。Web缓存是Firefox已经访问的网站的图像和其他静态内容的本地存储。

更改网络设置

首先,在 Firefox 主屏幕上的一般选项卡中更改网络代理设置。

  1. 联合国 开火狐. (此教程包括给 Firefox 版本 56 的指令. 其他版本参见[Firefox的官方支持文件] (https://support.mozilla.org/en-US/kb/connection-settings-firefox).
  2. 联合国 点击屏幕上右上角的汉堡菜单并选择首选项 去** General** 屏幕. 3个 向页面底部滚动并定位到 Network 代理 部分. 4.四. 点击 设置... 按钮打开 ** 连接设置** 面板。 .

Image showing the button to select the proxy settings

在此面板中,配置 Firefox 以通过您在 [步骤 1] 中安装的 Sproxy 服务器传递所有请求(# step-1-%E2%80%94-building-and-installing-proxy)。

  1. 选择 手动代理配置 2. 在** HTTP Proxy** 字段中输入您的 Sproxy 服务器的公共 IP 地址 3. 在** Port** 字段中设置端口号为 8080

Image showing Firefox's connection settings panel with populated fields

您现在已经配置了 Firefox 以使用您的 Sproxy HTTP 代理服务器,因此您已经准备好清除本地缓存。

清除本地缓存

Firefox 将本地缓存称为 离线网页内容 . 它位于 Firefox 屏幕的 ** 偏好** 隐私和安全 ** 部分中。

  1. 点击屏幕右上角的汉堡菜单,选择偏好以进入一般屏幕。2. 点击隐私与安全在屏幕左侧。3. 滚动到页面的底部,找到离线网页内容和用户数据部分,然后按清除现在按钮。

Image showing the clear cache button

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

测试配置

Firefox 现在已配置为通过 Sproxy 路由所有基于 HTTP 的请求,但您在 [步骤 1](# step-1-%E2%80%94-building-and-installing-proxy)的末尾停止了 Sproxy 的CTRL+C

Image showing a Firefox error message

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

当您想要再次正常使用 Firefox 时,请重新跟踪 [更改网络设置] 上面的指示(# step-2-%E2%80%94-configuring-firefox-to-use-proxy),但这一次,请在 连接设置 面板上选择** 没有代理程序** 选项。

现在我们已经配置了Firefox以通过Sproxy连接到互联网,我们可以通过启动Sproxy并使用Firefox浏览目标网站创建一个URL列表。

步骤3 —启动Sproxy和生成URL列表

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

首先,切换到您的主目录并启动Sproxy。

1cd ~
2sproxy -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将等待远程主机响应的时间。

1[secondary_label Sproxy Output]
2SPROXY v1.02 listening on port 8080
3...appending HTTP requests to: mixed-urls.txt
4...default connection timeout: 180 seconds
5http://www.example.com/
6http://www.example.com/index.html
7http://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。

现在你在mixed-urls.txt文件中列出了Firefox在测试网站上遇到的每个基于HTTP的URL的列表,下一步是删除任何不符合您的网站的URL,以确保您只使用Siege针对授权的域名。

步骤 4 — 清理 URL 文件

现代网站经常在多个位置托管内容. 此内容可能是内容交付网络(CDN)托管的图像或第三方服务(如Google)托管的字体。 当我们运行 Siege 时,我们希望确保我们仅是我们有权测试的基准域。

使用 grep,一个实用程序来搜索简单的文本输入对用户指定的 常规表达式,只找到匹配你的测试领域的 URL 和 重定向结果到一个名为 urls.txt的新文件。

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

a 标志告诉 grep 像文本文件一样处理二进制文件,这是必要的,因为浏览器有时会发出包含二进制数据的 POST 请求,而 Sproxy 则会将其写到 mixed-urls.txt

在常规表达式中,^字符表示字符串必须从http://www.example.com开始,才能被视为匹配。

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

现在,打开urls.txt,以确保每个行都以测试网站的域名开始,并删除不正确的行。

1nano urls.txt

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

您的 URL 列表现在只包含您授权测试的 URL,所以我们已经准备好安装 Siege. 如果您还希望通过 HTTPS 对比您的网站,请遵循 [步骤 5](# step-5-%E2%80%94-creating-an-https-url-file-(可选))中的可选说明,以创建包含您的 URL 的 HTTPS 版本的第二个 URL 文件。

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

许多网站都运行在 HTTP 和 HTTPS 上,甚至在 HTTPS 上,所以您可以将您的网站与 HTTPS 进行比较也很重要。

首先,使用cat命令打开urls.txt,并将其内容传输到sed,这是一个用于解析和转换文本的实用程序。

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

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

1[secondary_label Example Output]
2https://www.example.com/
3https://www.example.com/index.html
4https://www.example.com/about.html

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

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

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

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

步骤6 —基准和测试与围攻

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

Siege可以从标准的Ubuntu包存储库中使用,因此可以使用apt-get来安装。

1sudo apt-get install siege

Siege 有两种操作模式:互联网和基准模式. 互联网模式模拟访问者浏览目标网站,而基准模式使请求尽可能快,网络服务器可以处理。

互联网模式很好,可以通过随着时间的推移增加同时访问者的数量来缓慢增加服务器上的负载,这种模式还可以创建长期的持续负载,如果您需要在创建备份等操作中找出网站性能发生了什么,这很有用。

如果您想测试仅对 HTTP 地址,请将 urls_file 替换为 urls.txt. 如果您遵循 [步骤 5](# step-5-%E2%80%94-creating-an-https-url-file-(可选))并希望对 HTTPS 地址进行测试,请将 urls_file 替换为 urls-https.txt

1cd ~
2siege --internet --concurrent=5 --time=30S --log="siege-internet.log" --file="urls_file"
  • --Internet 将 Siege 设置为 Internet 模式. * `--竞争对手' 是要模拟的访问者数量。

我們告訴 Siege 模擬 5 位同時使用者,以產生一些流量而不壓倒伺服器. 隨著您更熟悉伺服器的功能,您可以根據需要增加這個數字。

  • " 时间 " 是多久 包围会跑的 这一值可设定为 " S " 秒、 " M " 分数分数和 " H "分数分数分数。 在这个例子中,我们告诉Siege运行30秒, 再一次,产生一些流量而不压倒服务器。 将来,你可以用不同的时间长度进行实验,看您的服务器如何应对持续的流量负荷.
  • --log'是通往你想要的位置的道路 围攻将测试结果写给。 默认情况下,该位置为/var/log/sigege.log'并需要sudo权限.
  • `-file'是包含Siege将用于测试的URL文件的路径。 .

当您第一次启动 Siege 时,它会报告您正在使用的版本号和模拟的同时使用者的数量,然后告诉您测试已经开始。

1[secondary_label Siege Output at Start of Run]
2** SIEGE 3.0.8
3** Preparing 5 concurrent users for battle.
4The server is now under siege...

当 Siege 完成运行或用 CTRL + C 结束后,它还会显示测试结果以及结果日志文件的位置。

 1[secondary_label Siege Output at End of Run]
 2...
 3Lifting the server siege... done.
 4
 5Transactions:                    157 hits
 6Availability:                 100.00 %
 7Elapsed time:                  29.72 secs
 8Data transferred:               0.15 MB
 9Response time:                  0.49 secs
10Transaction rate:               5.28 trans/sec
11Throughput:                     0.01 MB/sec
12Concurrency:                    2.59
13Successful transactions:         161
14Failed transactions:               0
15Longest transaction:            0.74
16Shortest transaction:           0.27
17
18FILE: siege-internet.log
19You can disable this annoying message by editing
20the .siegerc file in your home directory; change
21the directive 'show-logfile' to false.

由于输出中包含的统计数据很复杂,我们将在 [第 7 步] 中深入探索它们(# step-7-%E2%80%94-understanding-siege%27s-results)。

现在,让我们在基准模式下运行 Siege,以发现该网站能够同时提供的页面请求的最大数目。 这是当试图决定哪些额外技术可以改善您的网站性能时的有用信息。 此外,基准模式可以突出资源瓶颈,正如我们在 [步骤 8](# step-8-%E2%80%94-identifying-performance-bottlenecks)中更仔细审视此模式时所看到的那样。

再次启动 Siege,这一次在基准模式中,使用基准而不是互联网

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

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

 1[secondary_label Siege Output]
 2** SIEGE 3.0.8
 3** Preparing 5 concurrent users for battle.
 4The server is now under siege...
 5Lifting the server siege... done.
 6
 7Transactions:                    444 hits
 8Availability:                 100.00 %
 9Elapsed time:                  29.72 secs
10Data transferred:               18.16 MB
11Response time:                  0.49 secs
12Transaction rate:               105.28 trans/sec
13Throughput:                     4.41 MB/sec
14Concurrency:                    14.14
15Successful transactions:         421
16Failed transactions:               0
17Longest transaction:            0.74
18Shortest transaction:           0.27
19
20FILE: siege-benchmark.log
21You can disable this annoying message by editing
22the .siegerc file in your home directory; change
23the directive 'show-logfile' to false.

与互联网模式的统计数据一样,基准模式的统计数据是复杂的,我们将在 [步骤 7](# step-7-%E2%80%94-understanding-siege%27s-results)和 8中深入研究它们。

现在,我们已经测试并与 Siege 对比您的网站,我们可以更详细地探索结果,并在实践中使用统计数据。

步骤7 —了解围攻的结果

当涉及到了解您的网站的性能,识别瓶颈,并决定将您的升级努力集中在哪里时,Siege可以是一个强大的资产,它提供的统计数据涵盖了一系列指标,可以为您提供对网站整体健康的深刻见解。

正如我们在 [步骤 6] 所看到的(# 步骤-6%E2%80%94 - 基准和测试与封锁),Siege 的输出通常看起来如下:

 1[secondary_label Siege Output at End of Run]
 2...
 3Transactions:                    904 hits
 4Availability:                  97.41 %
 5Elapsed time:                   4.59 secs
 6Data transferred:               4.37 MB
 7Response time:                  0.07 secs
 8Transaction rate:             196.95 trans/sec
 9Throughput:                     0.95 MB/sec
10Concurrency:                   12.86
11Successful transactions:         904
12Failed transactions:              24
13Longest transaction:            1.95
14Shortest transaction:           0.00
15...

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

  • `交易 ' 是指Siege提出的要求总数。
  • )。
  • `耗时 ' 是测试持续的时间。
  • " 数据传输 " 是指测试该站点所用的带宽包围总量。
  • " 答复时间 " 是网络服务器响应请求的平均时间。
  • " 交易率 " 是指网络服务器所服务的每秒交易的平均数。
  • `Troughput'是网络服务器服务每秒数据的数量。
  • " 货币 " 是开放同时连接的平均数目。
  • " 成功交易 " 是指以不足400个HTTP状态代码答复的交易总数。
  • " 交易失败 " 是指用HTTP状态代码大于400答复的交易总数。
  • `最长的交易 ' 是最长的请求完成的时间。
  • `最短交易 ' 是最短请求完成的时间。 .

交易率失败交易提供了您网站服务器的整体健康状况的最快测试。

交易率表示您的网站的速度,因为它是您的网站服务器每秒可以服务的页数。这个数字越高,您的网站可以处理的访问者越多,访问者每页都会得到的速度越快。

失败交易值是指包含错误代码的网页服务器的任何响应,例如503服务不可用这些错误通常指向无法处理接收请求数量的数据库或没有 RAM 的网页服务器等问题。

当你进行更改以增加你的交易率,并随着时间的推移减少你的失败交易,也记得查看你创建的日志文件,因为它包括你在终端看到的所有相同的统计数据,以及测试的日期和时间。

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

步骤8 — 识别性能瓶颈

在基准模式中,Siege每秒会发出尽可能多的请求,以至于Web服务器能够提供服务。

四个最可能受到影响的资源是:

  1. RAM 2. CPU 3. 磁盘 4. 网络带宽

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

您可以监控前三个资源 - RAM、CPU 和磁盘使用率 - 使用一款提供动态、实时的系统资源视图的工具。

Ubuntu 默认提供顶部,所以您不需要安装它. 只需运行命令,‘顶部’。

上面的信息分为两个部分。

 1[secondary_label Sample top Output]
 2top - 21:02:32 up 50 min, 1 user, load average: 0.07, 0.02, 0.00
 3Tasks: 102 total, 1 running, 101 sleeping, 0 stopped, 0 zombie
 4%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
 5KiB Mem :   1015200 total, 63536 free, 431456 used, 520208 buff/cache
 6KiB Swap:        0 total, 0 free, 0 used. 512308 avail Mem 
 7
 8  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND                                                                                                                   
 9 3249 www-data 20 0 469592 92276 33488 D 24.6 9.1 0:05.01 apache2                                                                                                                      
10 3239 www-data 20 0 442836 75080 41896 S 5.6 7.4 1:31.97 apache2                                                                                                                      
11 3572 www-data 20 0 424372 35272 21164 S 4.0 3.5 0:02.69 apache2

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

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

虽然顶部是 管理流程监控CPU使用的有用工具,在这种情况下,我们希望在围困基准测试的艰难之下看到它可以告诉我们的系统。

CPU 使用率表示, %Cpu(s): 37.3 us, 7.3 sy,. 这些值告诉我们,用户流程消耗了 37.3% 的 CPU,而系统流程消耗了 7.3%。

如果您的服务器正在运行或接近100%的CPU使用率,请检查流程列表中的顶部条目,看看是否有一项或多个流程正在消耗异常高的CPU。

现在,让我们来看看记忆使用。

 1[secondary_label Sample top Output]
 2top - 21:02:32 up 51 min, 1 user, load average: 0.21, 0.47, 0.80
 3Tasks: 102 total, 1 running, 101 sleeping, 0 stopped, 0 zombie
 4%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
 5MiB Mem :   991.406 total, 223.914 free, 395.621 used, 371.871 buff/cache
 6MiB Swap:        0.000 total, 0.000 free, 0.000 used. 526.156 avail Mem 
 7
 8  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND                                                                                                                   
 9 3249 www-data 20 0 469592 92276 33488 D 24.6 9.1 0:05.01 apache2                                                                                                                      
10 3239 www-data 20 0 442836 75080 41896 S 5.6 7.4 1:31.97 apache2                                                                                                                      
11 3572 www-data 20 0 424372 35272 21164 S 4.0 3.5 0:02.69 apache2

默认情况下,RAM 使用量在第四行中表示为 kilobyte. 在上一个示例输出中,我们已经按过一次SHIFT+E,将值转换为 megabyte,以便更容易使用数字。

值是服务器上可用的总内存量,请记住,内核在启动时保留了一些内存,因此1024 MB的机器将显示991 MB的内存。

avail Mem显示了系统上剩余的内存量,随着使用更多的RAM,这个数字会变得更小,当服务器上没有剩余的内存时,它最终会达到零。

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

最后,让我们来看看磁盘的使用。

 1[secondary_label Sample top Output]
 2top - 21:02:32 up 52 min, 1 user, load average: 0.21, 0.47, 0.80
 3Tasks: 102 total, 1 running, 101 sleeping, 0 stopped, 0 zombie
 4%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
 5KiB Mem :   1015200 total, 63536 free, 431456 used, 520208 buff/cache
 6KiB Swap:        0 total, 0 free, 0 used. 512308 avail Mem 
 7
 8  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND                                                                                                                   
 9 3249 www-data 20 0 469592 92276 33488 D 24.6 9.1 0:05.01 apache2                                                                                                                      
10 3239 www-data 20 0 442836 75080 41896 S 5.6 7.4 1:31.97 apache2                                                                                                                      
11 3572 www-data 20 0 424372 35272 21164 S 4.0 3.5 0:02.69 apache2

我们感兴趣的磁盘使用量,I/O等待,不是有多少磁盘空间可用,而是磁盘访问量是如何减慢服务器的。

顶部将此信息报告为)在等待磁盘数据的时间的百分比,这个数字应该尽可能接近0。

在上面的示例中,wa值为31.6,这意味着CPU花费了三分之一的时间在等待来自磁盘的数据。

I/O 等待通常是访问磁盘以获取文件或对本地数据库进行重复调用的结果. 如果 wa 远高于 0.0,请考虑将静态资源移动到远程位置,例如内容交付网络(CDN),或探索减少应用程序到相关本地数据库的访问次数的方法。

Q来输出顶部。

我们将研究的最终资源是网络使用,为了监控这一点,我们将使用新一代带宽监控工具。

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

1sudo apt-get install bwm-ng
2bwm-ng

输出的顶部显示了 Bandwidth Monitor New Generation 的版本号,数据的更新频率(默认情况下每 5 秒),输入源用于确定可用的网络接口(在 Linux 上默认情况下 `/proc/net/dev)和显示的统计数据(默认情况下数据使用率)。

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

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

1[secondary_label Sample bwm-ng Output]
2  bwm-ng v0.6.1 (probing every 0.500s), press 'h' for help
3  input: /proc/net/dev type: rate
4  -         iface Rx Tx Total
5  ==============================================================================
6               lo:           0.00 KB/s 0.00 KB/s 0.00 KB/s
7             eth0:          30.99 KB/s 499.11 KB/s 530.11 KB/s
8  ------------------------------------------------------------------------------
9            total:          30.99 KB/s 499.11 KB/s 530.11 KB/s

当网络带宽导致瓶颈时,通常是因为Tx已经最大化了。 要解决这个问题,请从您的托管提供商那里获得您的服务器的连接速度,并将其与bwm-ng所示的速度进行比较。

CTRL+C,在测试完成后退出新一代带宽监视器。

结论

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

对于减少磁盘输入和内存瓶颈的另一种方法,请查看 Varnish HTTP Cache. Varnish 是一个易于使用的反向代理程序,可存储静态网站资产,减少 RAM 使用量和磁盘输入。

如果您的网站使用PHP,请考虑安装 PHP-FPM作为标准PHP实现的替代方案。

Published At
Categories with 技术
comments powered by Disqus