2011-12-09 97 views
20

我將擁有一個擁有20k +併發用戶的網站。mongodb和max連接

我打算使用mongodb使用一個管理節點和3個或更多節點進行數據分片。

現在我的問題是最大的連接。如果我有很多用戶訪問數據庫,我如何確保他們沒有達到最大限制?我也必須改變內核上的任何東西來增加連接嗎?

基本上數據庫將被用來保持連接的用戶到站點,所以會有大量的讀/寫操作。

預先感謝您。

+1

使用持久連接,可在大多數mongodb驅動程序中使用。 – DhruvPathak

+0

這將有助於瞭解您的首選堆棧(LAMP/PHP/Perl/Python/Ruby on Rails/Apache/Tomcat/Windows/Linux?) – Kato

回答

23

每次新用戶連接時,您都不想打開新的數據庫連接。我不知道您是否可以輕鬆擴展到20k +併發用戶,因爲MongoDB爲每個新連接使用一個新線程。您希望您的Web應用程序後端僅打開一個到幾個數據庫連接並僅使用池中的連接,特別是因爲Web使用非常異步且受事件驅動。

看到:http://www.mongodb.org/display/DOCS/Connections

服務器將使用每個TCP連接 一個線程,因此它是高度recomended您的應用程序 使用某種形式的連接池。幸運的是,大多數司機在幕後爲你處理這個 。一個明顯的例外是設置,其中您的應用程序爲每個請求生成一個新進程,例如CGI和PHP的一些配置 。

無論您使用哪種驅動程序,您都必須瞭解他們如何處理連接以及他們是否合併。例如,Node的Mongoose是非阻塞的,因此通常每個應用程序使用一個連接。這是你可能想要的那種。

+0

感謝您的回答,現在,我總是noob ..什麼是你在談論這個驅動程序?我怎麼設置它?謝謝 –

+1

@enrico那麼,你想要使用的編程模型是基於事件的編程,而不是你想到的基於線程的模型。 Node.js + Express + Mongoose + MongoDB是一個很受歡迎的堆棧。如果你使用Perl,請查看Mojolicious或AnyEvent。如果你不使用一個系統,你會遇到的問題是C10k問題:http://www.kegel.com/c10k.html 我有一個Node.js web應用程序的例子:http ://github.com/EhevuTov/netPeek – EhevuTov