负载测试Backbone App

cmc*_*loh 5 load-testing node.js express backbone.js socket.io

我有一个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处理多核垃圾)

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

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

alf*_*dev 1

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

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

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

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