负载测试Backbone App

时间:2013-08-05 17:20:34

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

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

我的应用程序利用NGinx的静态资产缓存,使用Redis进行群集,使用Redis启用多核。所有这一切,我都经历了很多麻烦,试图确保它可以承受负荷。

我使用blitz.io在10秒钟内用50,000个用户点击它并且它甚至没有眨眼......这让我很担心,因为我想看到它崩溃,或者至少呼吸有点沉重;但是50k是你用这个工具扔掉它的最大值,向我表明他们希望你没有合理地能够或者不需要处理更多......当我意识到它实际上并没有发生时我期待的负载,因为负载是在页面加载后启动的,Backbone应用程序启动并启动套接字连接并从正确的REST API端点(来自不同的服务器)请求数据。

所以,这是我的问题:

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

  1. 从我的NGinx / Node / Express服务器请求单页Backbone应用程序
  2. 启动NGinx对静态资产的请求(模拟浏览器会做什么)
  3. 启动对REST API的请求(在不同服务器上运行的PHP / MySQL)
  4. 创建与Socket.io服务的连接(在NGinx / Node / Express上运行,利用Redis处理多核垃圾)
  5. 如果测试工具使用类似浏览器的环境加载页面,解析JS并运行它,一切都将是copasetic(NGinx / Node / Express服务器将受到攻击,PHP / MySQL服务器也将受到攻击)。否则,测试工具将需要通过几乎同时触发至少十几种不同类型的请求来模拟这一点。否则,就像压力测试门一样,看10,000次(也就是说,它毫无意义)。

    我需要确保我的应用可以处理1,000个用户在一分钟内完成所有加载同一页面的用户。

1 个答案:

答案 0 :(得分:1)

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

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

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

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