2013-08-06 63 views
43

我們正在構建一個網絡應用程序,將在比賽中使用 來投票選手並在中央顯示屏上顯示實時投票統計數據。Meteor.js中內置的Web應用程序可以併發多少個用戶?

比賽將持續15分鐘,大約4000名用戶將連接到 的網絡應用程序,時間流逝併發送投票,但每個用戶設備都是唯一的。

我們正在考慮使用Meteor.js開發這樣的web應用程序。然而,由於我們在爲大量的併發用戶開發服務方面經驗不足,以及Meteor.js的測試版狀態,我們對該項目的實際可行性有一些擔憂。

以下是我們正在解決的問題:

  1. 是否有流星能有多少併發用戶處理任何標杆?我認爲這取決於網絡應用本身的複雜性。在我們的情況下,這將是相當直接的,只有用於中央顯示的客戶端將訂閱現場Mongo查詢votes.find({}),其餘用戶將只看到/已經投票按鈕。

擁有來自真實案例或測試場景的一些數據將對我們有很大幫助。

  1. Meteor的基礎設施能夠處理4000個用戶嗎?或者我們應該去找這個deleted question中列出的其他託管解決方案(您需要10k +代表才能看到它)?

  2. Meteor.js是否有任何性能方面的考慮,我們應該注意?

我們已看到類似的帖子,但是他們沒有被處理如此大的用戶量在這麼短的時間:

另外,我們可以使用Cluster smart package。任何人都有這方面的經驗?

+0

+1好問題。我有很多編程流星的經驗,但對負載下的性能也知之甚少。集羣智能包是一種愚蠢的恕我直言,緩慢同步;這更多的是一個概念證明,我不希望它像核心流星一樣穩定。 –

+1

另外,在提出這個問題之前,要做好大量正確的研究。 –

+1

只是爲了清除事情。這個問題中提到的羣集是歷史。現在我們有另一個集羣包:https://github.com/meteorhacks/cluster (它是由相同的作者出於同樣的目的在更好的方式) –

回答

4

我認爲誠實的答案是,每種情況都不相同,並且沒有硬性規定,人們可以根據您的系統在不同負載下的表現來提供給您。

最好的辦法是實際構建一個帶有一個或兩個函數的系統原型,然後使用多個併發用戶運行一些性能測試,以確定限制條件。這應該爲您提供一個很好的基礎,然後迭代您的原型並研究是否/如何支持您需要的用戶數量。

11

https://github.com/alanning/meteor-load-test

如果您快速小樣的應用程序,它應該是相當簡單建立一個測試在15分鐘內4000間的連接。我沒有親自使用它,但是一旦我完成了自己的應用程序,就打算這樣做。

+0

很好的參考 - 但是,測試本地連接,因爲否則流量和不流星將成爲瓶頸。 –

36

更新 ClassCraft報告一個Meteor服務器處理6400個併發用戶。詳情請參閱Scalability section of my Why Meteor article

也看到論壇帖子
How Many Simultaneous Users Does the Biggest Current Meteor App Support?


這裏有一個基準不完全有關併發用戶,而是如何設置訂閱(可以說是一個更大的壓力測試)。

Arunoda最近發佈了使用meteor-down(負載測試工具similar to @alanning's meteor-load-test)和Cluster(一種Meteor負載平衡工具)的測試結果。

測試是最便宜的數字海洋服務器上運行(512MB RAM,$ 5元/月),並且結果是相當令人印象深刻:

enter image description here

對於上述所有情況下,服務器響應時間小於8ms。

基本上由一種商品機器能處理每分鐘2500個流星訂閱和8毫秒內響應。水平縮放的開銷不到5%。

您可以在Meteor Cluster Performance Test: Impressive Results瞭解更多關於測試的信息。

相關問題