2013-07-16 90 views
6

我開發了一些基於nodejs的API,我想測試API的性能。任何工具都可以輕鬆地計算每個API調用的時間嗎?REST API測量服務器端響應時間(性能)。

或者如何實現測量REST API響應請求所需的時間。

+0

您是否在尋找一個代碼覆蓋工具?這應該給你大部分你想要的。雖然不知道我的頭頂有一個。 – tjameson

+2

爲什麼不寫你自己的工具?這很簡單 – Rikky

+0

我創建了一個基於nodejs的Web服務,暴露了一些其他的API,一些客戶端正在使用這些API。我想監視每個API調用的時間,有沒有這樣的工具? – ldlchina

回答

3

下面是如何使用express.js進行精確時間測量的事件注入示例。

你的路由前補充一點:

app.all('*', function(req, res, next) { 
    var start = process.hrtime(); 

    // event triggers when express is done sending response 
    res.on('finish', function() { 
    var hrtime = process.hrtime(start); 
    var elapsed = parseFloat(hrtime[0] + (hrtime[1]/1000000).toFixed(3), 10); 
    console.log(elapsed + 'ms'); 
    }); 

    next(); 
}); 

這將節省開始每個請求的時間,並會引發finish響應發送到客戶端後。
感謝user419127指向'完成'事件

+0

我是否需要在每個API中調用req.timer.complete()?這會影響性能嗎?我不想在代碼中做太多改變,這會影響性能。 – ldlchina

+0

您可以重寫您的發送方法以便爲您調用,也可以在每次發送後自行手動調用它。你絕對是過度複雜的功能 - 因爲性能真的在複雜的情況下,而不是像測量請求的時間那麼少。 – moka

+0

我已經修改了上面的答案,現在已注入'res.send'不完全需要任何API修改。 – moka

0

那麼性能測量工具如Apache JMeter怎麼辦?您可以輕鬆地使用它來模擬服務器(負載)的負載,然後測量響應時間和其他性能指標。它爲此提供了多個圖形表示。

Blog Post顯示瞭如何爲Web-API設置基於HTTP的性能測試。我這樣做來測試我的RESTful Web服務。

0

保持它簡單使用節點中的console.time('timerName');console.timeEnd('timerName')功能。 'timerName'顯然是可配置的。

例子:

console.time('getCustomers'); console.timeEnd('getCustomers')

輸出:

getCustomers: 58ms