是否可以使用 curl 来准确地对包含大量 javascript 的网站进行压力测试?

是否可以使用 curl 来准确地对包含大量 javascript 的网站进行压力测试?

我有一个网站,其中包含大量 javascript 但只有简单的 html。我想尝试使用 curl 进行简单的压力测试。这可能吗?如果我仅对网站进行 curl,则会得到 HTML。因此,发出大量 curl 请求并不能真正告诉我它在特定流量速率下的表现如何。(我知道有数千种复杂的压力测试框架和方法——我很高兴学习它们。但现在我需要一些快速而粗糙的方法,因为该网站将在几天内获得大量流量。)有没有办法使用 CURL 来测试 javascript 密集型网站?

答案1

你是对的,curl 不会像真实用户使用真实浏览器那样浏览你的网站,所以你需要其他东西(如果你关心这种差异)。

请记住,JS 在浏览器中执行,因此这不会一定增加服务器负载(这当然取决于您的 JS 是否调用服务器来执行更多工作,例如 ajax 调用)。您关心页面到达用户后会发生什么,还是在测试服务器的性能?无论哪种方式,您都有几个性能/负载测试选项。

您可以使用类似 phantomjs 的东西(如果您需要完全呈现的网页或需要与 JS 交互,它很有用...这可以为您提供 curl 无法提供的功能),但即便如此,您也无法轻松地模拟来自不同位置的大量用户。

phantomjs.org/ PhantomJS 是一个无头 WebKit,可使用 JavaScript API 编写脚本。它为各种 Web 提供快速且原生的支持...

您可以研究 beezwithmachineguns,但这可能需要修改才能像真正的浏览器一样正确加载 JS。

如果你没有时间,可以尝试已经可以满足你需求的在线服务。我曾经使用过https://www.blitz.io/在过去,由于它是一种软件即服务,所以不需要下载或配置任何东西,所以很容易开始使用。

答案2

Curl 实用程序不执行 JavaScript 我猜你需要像 N 个浏览器一样同时访问你的网站。

如果你有足够的硬件,你可以考虑使用硒网格

但是,仍然可以使用消耗较少 CPU/RAM 的测试工具来捕获和复制 AJAX 请求,例如Apache JMeter。您可以通过以下方式将浏览器指向正在测试的网站JMeter 代理服务器它将记录所有请求,包括异步 JavaScript 驱动,然后使用大量虚拟用户重放脚本。

答案3

或者,考虑在有限许可的基础上使用以下商业工具

  • SOASTA CloudTest lite。100 个线程,永不过期
  • LoadRunner 版本 12 社区版。50 个虚拟用户,永不过期

如果您已经达到了财务风险足够高而需要进行性能测试的地步,那么您将发现,如果您衡量故障对财务的影响,即使是与最昂贵的商业工具相比,故障的成本也会远远超过任何可用的市场工具的成本。

如果您将免费或开源工具交给不具备成功技能的人,您仍然可能会获得负投资回报率,就像将异国风情的意大利跑车的钥匙交给不相信汽车、成年后一直乘坐公共汽车和火车的人一样。汽车性能很好:司机则不然。

相关内容