【问题标题】:Load testing should be done locally or remotely?负载测试应该在本地还是远程进行?
【发布时间】:2019-02-26 09:31:17
【问题描述】:

我正在为我的网站使用 vps,所以我不相信我可以从本地网络或其他地方访问它。 我正在使用 digitalocean 作为 vps。

那么我应该在哪里安装 ab、siege、jmeter 等工具,本地在 vps/在我自己的计算机(客户端)/在同一区域的另一个 droplet(vps) 上并连接通过专用网络到 Web 服务器 Droplet?

根据我的理解,如果我在 vps 本身上使用这些工具,它们可能会使用过多的 cpu 和 ram(与 web 服务器使用相同的 cpu 和 ram)以使测试正确。

另一方面,由于网络瓶颈,远程测试可能会以错误的值告终。如果我在同一子网上使用另一个 vps(例如数字海洋专用网络功能),是否会出现这种情况?

我迷路了,两种解决方案似乎都错了,所以我错过了什么?

【问题讨论】:

    标签: nginx jmeter load-testing vps apachebench


    【解决方案1】:

    最好的选择是将负载生成器安装在与被测应用程序位于同一子网的另一个 VPS 上 - 这样您将能够获得不受connect times / latency 影响的更多“干净”结果

    不建议在同一台机器上同时测试应用程序和负载生成器,因为负载测试工具本身非常占用资源,并且您可能会遇到两个应用程序都在“挣扎”资源因此负载生成器无法运行的情况发送请求的速度不够快,并且被测应用程序无法正确处理请求。一般来说,建议密切关注被测应用程序/负载生成器的资源消耗,以确保两者都有足够的空间,您还可以将增加的虚拟用户数量与增加的资源消耗相关联。如果您没有任何替代方案,您可以使用APM toolJMeter PerfMon Plugin

    作为后备方案,您可以使用本地计算机进行测试,但请确保您有足够的带宽(您可以使用 https://www.speedtest.net/ 服务进行检查)并且您的 ISP 知道您的计划并且不会阻止您欺诈行为(因为它可能被视为DOS attack

    【讨论】:

    • 我正在使用 digitalocean,如果我在同一区域(使用专用网络)添加另一个 droplet,我应该如何在同一子网中加载测试?我的意思是例如在ab -n 1000 -c 100 http://example.com/ 中我应该使用https://example.com 还是droplet 专用网络ip?
    • 我应该使用http还是https(我的vps上有ssl)
    • 负载生成器机器可以访问的任何接口(我相信,公共的)。如果您计划在生产中使用 HTTPS - 选择 HTTPS
    • 如果我使用http://local.private.ip/,每秒的请求速度比使用http://example.com 快30 倍。如果我使用 https://example.com ,我会得到比 http://example.com 慢 5 倍的结果。我不得不提一下,我正在使用 cloudflare ssl 证书,这可能是个问题?哪个最准确?
    【解决方案2】:

    我们使用来自 Amazon Webservices 的 Unix 机器作为负载生成器获得了很好的结果。当负载生成器位于同一网络中时,您不会得到像 Dimitri 提到的那样干净的结果。但是你会得到一个现实的结果,就像最终用户也会得到它一样。在我们的场景中,我们在执行期间评估一些关键值,例如测试期间的 CPU、数据库连接和数据库中更改的数据集的数量。我们多次重复测试,因为结果总是存在一些差异。同一网络中的负载测试将提供更稳定的结果,并且可以与实验室中的测量进行比较,但我认为了解您的应用程序在现实中的表现非常好。

    【讨论】:

      猜你喜欢
      • 2011-02-12
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多