加载testing一个骨干应用程序

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

我的应用程序利用与NGinx的静态资产caching优势,与节点/快速集群和套接字使用Redis的多核启用。 所有这一切,我已经经历了很多麻烦,以确保它能够承受负载。

我在10秒内用5万用户用blitz.io打了它,甚至没有眨眼……哪一个关心我是因为我想看到它崩溃,或者至less有一点气息; 但50K是你可以用这个工具扔在它的最大值,这表明他们希望你不能合理地或者需要处理更多的东西……当我意识到这并不是真正发生的时候我期望的负载,因为负载是在页面加载后启动的,Backbone应用程序启动并启动套接字连接并从正确的REST API端点(从不同的服务器)请求数据。

所以,这是我的问题:

我怎样才能加载testing整个应用程序? 我需要负载testing以与客户实际相同的方式对服务器征税,这意味着:

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

如果testing工具使用类似浏览器的环境来加载页面,parsingJS并运行它,那么所有东西都会是相同的(NGinx / Node / Express服务器将会受到攻击,PHP / MySQL服务器也会受到影响)。 否则,testing工具将需要通过几乎同时发射至less十几种不同的请求来模拟。 否则,就像压力testing一万门(就是说,这是毫无意义的)。

我需要确保我的应用程序可以处理1000个用户在一分钟内打完所有加载相同的页面。

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

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

这意味着testing对您所使用的技术是不可知的。

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