2011-12-19 70 views
0

我有以下幾點:發送大量請求到服務器上的node.js

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

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

它創建本地主機上的服務器:8008。

,如果我在URL行中我的瀏覽器中鍵入以下內容:

localhost:http://localhost:8008/fun2 

它會調用FUN2功能,將執行所需要的。

話說回來,

我怎麼可以編寫一個腳本函數(FUN2),它模擬了大量

請求(說10000)以tempServer的

打個電話?

任何幫助將非常感激!

+0

你想成爲一個服務器來訪問自己? – 2011-12-19 01:41:30

+0

不,我只是想要一個腳本來模擬大量的服務器調用... – Itzik984 2011-12-19 01:44:56

+0

Yeap,但你的'fun2'函數是從'tempServer'調用的,並且應該調用'tempServer'。我對嗎 ?如果我是,那沒有任何意義...... – 2011-12-19 01:47:41

回答

0

您是否有興趣在腳本通過http2萬調用FUN2或 發放萬個從FUN2節點內的請求?

如果它在Node內,並且您可能知道所有代碼都是按順序編寫的,但事件是異步執行的。

檢查調度功能EventEmitter呼籲埃文斯:

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

1

你可以試試這個在您的筆記本電腦,但你會發現,你的電腦將無法真正能夠在同一時間創造10,000個請求到一個臨時服務器(或任何地方)。大多數現代機器最多可同時連接1000個左右。

您可以在代碼中創建的東西,一定會做陸續此一個連接,但這是不一樣的,你斜和下斜每秒請求數的真實負載測試。您將很快發現這是IO和連接限制,而不是您的應用程序的真正測試。

如果您試圖對服務器進行基準測試/壓力,最好的辦法就是將服務器放在可以上網訪問的盒子或服務上,如nodejitsu或nodester(兩種免費服務),然後使用其他服務(免費或否則)打到你的服務器的URL。你不會說這是你在做什麼,但這是進行負載和壓力測試的常用方式。

過去我使用過的兩家公司是Load ImpactBlitz.io,以獲取同時向用戶請求服務器的數量。對於10,000個用戶,您需要付出一些代價,但這並不是太大的費用。

您可能還需要尋找到圖書館從New Relic幫助您監控服務器/服務本身及其行爲在壓力下。他們在幫助找到應用程序瓶頸方面有一些很棒的功能。

這可能比您尋找的要多一點,但我希望它有幫助。如果我不符合標準,請告訴我,我很樂意將其修改爲更接近您要查找的內容。