node.js - 负载测试主干应用程序

标签 node.js backbone.js express socket.io load-testing

我有一个 NGinx/Node/Express3/Socket.io/Redis/Backbone/Backbone.Marionette 应用程序,它代理对 PHP/MySQL REST API 的请求。我需要对整个堆栈作为一个整体进行负载测试。

我的应用程序利用 NGinx 的静态 Assets 缓存、 Node/express 的集群和使用 Redis 启用的多核套接字。就是说,我经历了很多麻烦来尝试确保它能够承受负载。

我使用 blitz.io 在 10 秒内吸引了 50,000 名用户,它甚至没有眨眼……这让我很担心,因为我想看到它崩溃,或者至少呼吸有点沉重;但是 50k 是您可以使用该工具投入的最大值,这向我表明他们希望您合理地无法或不需要处理超过该数量的东西……那时我才意识到它实际上并没有招致我期望的负载,因为负载是在页面加载后启动的,Backbone 应用程序启动并启动套接字连接并从正确的 REST API 端点(来自不同的服务器)请求数据。

所以,这是我的问题:

我如何对整个应用程序作为一个整体进行负载测试?我需要负载测试以与客户端实际相同的方式对服务器征税,这意味着:

  1. 从我的 NGinx/Node/Express 服务器请求单页 Backbone 应用
  2. 启动来自 NGinx 的静态 Assets 请求(模拟浏览器会做什么)
  3. 启动对 REST API 的请求(在不同服务器上运行的 PHP/MySQL)
  4. 创建与 Socket.io 服务的连接(在 NGinx/Node/Express 上运行,利用 Redis 处理多核垃圾)

如果测试工具使用类似浏览器的环境来加载页面、解析 JS 并运行它,一切都会正常(NGinx/Node/Express 服务器会受到攻击,PHP/MySQL 服务器也会受到攻击)。否则,测试工具将需要通过几乎同时触发至少十几种不同类型的请求来模拟这一点。否则就像对一扇门进行压力测试,看一万遍(也就是说,没有意义)。

我需要确保我的应用程序可以处理 1,000 个用户在一分钟内点击它,所有用户都加载同一页面。

最佳答案

您应该学习使用 Apache JMeter http://jmeter.apache.org/ 你可以用它进行压力测试, 请参阅本教程 https://www.youtube.com/watch?v=8NLeq-QxkSw

正如您所说,“我需要负载测试来以与客户端实际相同的方式对服务器征税”

这意味着测试与您使用的技术无关。

我强烈推荐 Jmeter,它被广泛使用,您可以将它与 Jenkins 集成并用它做很多很酷的事情。

关于node.js - 负载测试主干应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18063957/

相关文章:

Javascript/Node : (() => 0) === (() => 0)

backbone.js - 在 "reset"事件后使用 Promises 将主干绑定(bind)到 "fetch"

Javascript 从嵌套函数返回值

jquery - GET Ajax 在响应中返回 html 代码而不是 json 对象

javascript - 有选择地强制浏览器缓存清除 Ajax 请求

backbone.js - 有什么方法可以获取主干 Marionette 复合或 itemview 中 View 渲染的状态吗?

node.js - 在nginx服务器上部署nodejs项目

node.js - 如何在 Mongoose 的一个查询中获取数据并进行计数

node.js - Express js 为明显存在的 .js 文件生成 404

node.js - Mocha 调用所有 "it"回调模拟(测试中间件)