在node.js上向服务器发送大量请求

时间:2011-12-19 01:31:33

标签: javascript node.js

我有以下内容:

 var tempServer=require("./myHttp");

 tempServer.startServer(8008,{'/fun1':fun1 , '/fun2': fun2 , '/fun3':fun3 , '/fun4':fun4},"www");

在localhost上创建服务器:8008。

如果我在浏览器中输入以下网址:

 localhost:http://localhost:8008/fun2

它将调用fun2函数并执行所需的操作。

说完了,

如何编写一个模拟大量调用的脚本函数(fun2)

请求(比如10000)到tempServer?

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

您可以在笔记本电脑上尝试此操作,但您会发现您的计算机实际上无法同时向临时服务器(或任何位置)创建10,000个请求。大多数现代机器大约有1000个左右的同时连接。

您可以在代码中创建一些接一个连接的代码,但这与真正的负载测试不同,您可以逐步增加并减少每秒的请求数。您很快就会发现这是IO和连接限制,而不是您的应用程序的真正测试。

你最好的选择,如果你试图对你的服务器进行基准测试或压力,就是把你的服务器放在一个可以上网的盒子或服务上,比如nodejitsu或nodester(两个免费服务),然后使用另一个服务(免费或其他服务) )点击服务器的URL。你没有说这是不是你正在做的事情,但这是进行负载和压力测试的常用方法。

我过去使用过的两家公司Load ImpactBlitz.io来获取服务器的同时用户请求数。对于10,000名用户,您需要支付一些费用,但费用不会太高。

您可能还想查看New Relic中的库,以帮助您监控服务器/服务本身及其在压力下的行为。他们在帮助发现应用程序瓶颈方面具有一些很好的能力。

这可能比你想要的要多一点,但我希望它有用。如果我没有标记,请告诉我,我会很乐意将其修改为更接近你正在寻找的东西。

答案 1 :(得分:0)

您是否有兴趣通过http2或者脚本编写10,000个来自fun2的电话 在节点内从fun2发出10,000个请求?

如果它在Node中,并且您可能知道所有代码都是按顺序编写的 事件以异步方式执行。

检查EventEmitter是否在evens上调度函数调用:

http://nodejs.org/docs/v0.4.7/api/all.html#events.EventEmitter

并将此示例视为并行发出呼叫的灵感:

http://ricochen.wordpress.com/2011/10/15/node-js-example-2-parallel-processing/

希望这有帮助。

Edmon