如果有太多用户同时访问该网站,那么在极端负载下该网站的性能如何?
如果要确保站点无论其流量如何都可以正常运行,则应该进行负载测试。
简而言之,负载测试是性能测试的子集。它用于识别Web应用程序的上限并检查系统如何处理重负载。
如果您曾经问过自己:如果有太多用户同时访问该网站,那么在极端负载下该网站的性能如何?然后继续阅读,因为这正是我们将在本文中回答的问题。
下面,我们将向您展示三种不同的工具,可以使用它们进行这种类型的测试。
但是在我们开始使用这些工具之前,让我们先看看我们需要收集哪些数据。
关于性能测试,这些指标最能描述我们的应用:
- 响应时间 -请求和响应之间的时间。
- 平均加载时间 -平均响应时间。
- 峰值响应时间 -最长的响应时间。
- 吞吐量/每秒请求数(rps)-每秒处理的请求数
- 内存/ CPU利用率 -主机消耗的内存/ CPU数量。
- 错误率-错误/请求比率。
- 并发用户 -应用程序中的活动用户/会话数。
- 百分位数(50%和95%) -时间超过一定值的请求所占的百分比。
负载测试
第一个工具是一个名为loadtest的npm软件包。
要使用此工具,您需要在计算机上安装NodeJS,然后需要运行以下命令:
npm install -g loadtest
出于演示目的,我们将使用我最喜欢的网站blank.org,这是一个主要用于测试目的的空白网页。
以下命令将从30个不同的并发客户端发送最多60个请求:
loadtest -n 60 -c 30 https://blank.org
!注意:并发用户数并不意味着并发请求数。
并发用户数/会话数表示连接到应用程序的用户数,该应用程序以固定间隔但同时发送请求。
上一条命令的输出如下
该工具向我们提供有关以下内容的信息:
- 百分位数(50,90,95,99和100%)
- 平均潜伏期
- 错误率
我们可以看到,对于blank.org而言,来自我们的请求(30个请求)的50%的时间少于581 ms,最长请求的响应花费了649 ms。
装载机
我们可以使用的另一个工具是Loadmill,这是一个基于Web的免费测试工具。如果我们想自己编写代码,它还带有npm软件包,但是出于演示目的,我们将使用在线工具。
要使用Loadmill进行负载测试,我们要做的就是在相应的面板中创建一个请求并提供应用程序的URL。
下一步是单击“ 运行测试”按钮,并配置并发会话数和测试持续时间。
您会注意到blank.org域显示为红色按钮。那是因为这是一个未经验证的域。毕竟,我不拥有blank.org网站。因此,我们可以将一定的最大负载阈值发送到该站点。
通过此配置,我们将看到在2分钟的时间内5个并发会话尝试使用该应用程序时的blank.org表现。
作为输出,我们可以看到一段时间内的性能:
- 所有请求的平均响应时间为55毫秒,
- 我们一开始就偷看了一下,其中95%的请求的响应时间小于1,059毫秒,而50%的请求的响应时间小于51毫秒
这意味着最长的响应时间超过了1秒。
同时,我们可以看到会话的错误率和 吞吐量,以rps(每秒请求数)为单位。这是我们的并发用户在1秒钟的时间内发送的请求数。
现在您可能会问自己,为什么第一个工具的结果与这个工具之间的差异如此之大?
这是需要注意的极其重要的事情,即数据的相关性和正确性。
您需要保持现实,并尝试使您的测试尽可能地反映现实。
进行性能测试时,有不止一种策略。一些工具和提供程序仅使用本地环境,而其他工具和提供程序则为每个并发用户启动虚拟机。
Loadmill其他服务,由于真实网络流量及其用法不同,生成的测试服务器上的负载。换句话说,去往目标网站的流量来自真正的浏览器。
在负载测试封装有很大关系在其上运行测试的本地机器,并为你的CPU让你可以去远。
如您所见,我使用命令行在计算机上使用loadtest运行测试。响应时间比使用Loadmill的响应时间大10倍。让我们来看看为什么。
如果blank.org我们开放的开发工具,我们可以找到它的IP,这是18.217.80.105。使用这个值,我们可以执行IP查询,看服务器位于俄亥俄州,美国 🇺🇸 。
我们知道响应时间是在请求和响应之间测得的时间。因此,请求将发送到服务器,然后再从服务器返回到代理(浏览器)。
使用第一个工具,我们大约需要500毫秒,因为我是从我的机器发送请求的。因此,请求必须来回接近11000英里。
Loadmill使用真实的网络流量,并具有更多配置选项。它使我们能够从无数的地理位置和计算机上测试应用程序。
如果我们进入测试结果PERFORMANCE / COUNTRY的第二个面板。我们看到所有请求都是从美国发出的。这就是为什么响应时间明显缩短的原因。
请记住,在进行测试时,最好模拟尽可能接近实际情况的条件,以使数据尽可能准确。
在使用下一个工具之前,我想谈一谈有关Loadmill的另一件事,那就是它可以配置为完成更多工作。
我们可以创建包含多个请求的复杂负载测试场景,这些请求包含参数和数据,包括基本身份验证和电子邮件通知。
Apache JMeter
我们列表中的最后一个工具是Apache JMeter,这是一个用于性能测试的基于Java的开源应用程序。此应用程序需要安装,并且很难配置。因此,以下信息分为多个步骤。
步骤1-下载并安装
将二进制档案下载到计算机中,然后解压缩内容。
然后,进入bin文件夹并运行jmeter.bat文件两次。一次配置工具,第二次启动它。
第2步-添加线程组
该线程组具有影响负载考了特别重要的属性:
- 线程数(用户):JMeter将创建的并发会话数。
- 加速时间(以秒为单位):测试的持续时间。
- 循环计数:执行测试的次数。
第3步-添加HTTP请求采样器
在“ HTTP请求样本 ”的“ HTTP请求”部分下,填写要测试的应用程序的“服务器名称”,“协议”和“ 路径 ”。
第4步-添加视图
在JMeter中,您将使用侦听器输出性能测试的结果。有多种侦听器可用,您可以通过安装插件来添加其他侦听器。在这种情况下,让我们使用表格。
第5步-运行测试
单击绿色三角形,运行测试。
现在我们可以分析测试了。
首先,我们可以在右上角看到测试运行了10秒钟,与我们在前面的选项中指定的完全一样。
之后,我们最感兴趣的列是Status和Latency。
- 延迟:从请求到收到初始响应之间经过的毫秒数。
- 状态-表示请求的状态,如果是成功还是失败。用于计算错误率。
作为一个侧面说明,我们可以观察到的值是类似于使用所获得的那些负载测试。这是因为他们以同样的方式工作。
剩余指标
使用这些工具,我们获得了有关我们在开始时谈论的大多数指标的信息。
最后,如果我们想获得的信息内存/ CPU使用率也,那么我们就需要在应用程序托管连接到我们的机器上并运行以下命令:
$ top
此命令将显示CPU利用率(百分比)和内存利用率。
要么
$ free -h
该命令将仅显示有关内存的数据,但更易于阅读。
本文作者:Dipto Karmakar
原文链接(英文)
本文来自投稿,不代表微擎百科立场,如若转载,请注明出处:https://www.w7.wiki/develop/4072.html