2015-10-18 155 views
1

我開發了一個基本的nodejs + express服務器,對於一個路由返回狀態200並在本地主機上執行幾個負載測試。問題是,我無法通過1000個請求/秒對於這個簡單的路線:NodeJS負載/壓力測試結果

app.get('/test',function(req.res){ 
    res.status(200).send() 
} 

對於1000請求/秒服務器表現還好,但在此之後的負載測試將返回錯誤。如何增加nodejs的這個值,這是一個好的結果嗎?這只是一個沒有任何處理的簡單路由,所以我認爲服務器應該接受更多的請求。謝謝。

+1

請顯示您的整個設置。如果你只是使用快遞,你應該能夠提供超過你想要的服務。但它完全取決於你的硬件。我希望你不是想在rasperry pi上達到這麼多的請求:) 使用'ab -n 10000 -c 5 http:// localhost:8088/test'我可以每秒獲得大約5000個請求。 –

+1

我的設置就是這樣的路線和app.listen(3000) – alexsc

回答

1

有太多因素會影響你的結果。這通常是你不應該在自己的開發機器上做的事情,如果你想獲得可靠的實際結果。你不應該使用你自己的開發機器的原因是它總是運行與你的應用程序完全無關的其他東西,它們使用你的系統資源 - 例如Google Chrome,I/O等。
另一個因素是你的硬件以及飽和了你的系統資源。

如果您仍想在本地進行測試,我希望您記住結果不會反映生產環境,因此測試無用。
通過使用Node的cluster模塊,您還可以提高性能,使您的服務器利用您所有機器的處理器線程。 Node.js是一種單線程語言。

+1

你好,我已經使用集羣,實際上,功率增加了一點。我瞭解你對測試機器的關注,但是,這個結果是否接近現實呢?我的感覺非常低。 – alexsc

+1

在本地機器上測試時,您將不會得到反映生產環境的結果。這不可靠。我建議你在服務器機器上運行這個測試,而不是獲得更可靠的結果。 '1000 req/sec'很**,即使它對節點應用程序來說不是很多,但它仍然是很多請求。 – Svenskunganka

+1

我不明白你爲什麼強調生產環境。我只是用節點進行一些測試。生產環境也將在路線上進行處理,而不僅僅是簡單的返回,因此請求的數量將顯着減少。 – alexsc