1
當爲節點使用本地mongo.db驅動程序時,是否應該爲每個應用程序打開1個連接,每頁「serve」,還是每當需要時打開並關閉它?今天在node.js連接中使用mongodb
我見過幾個older answers但我知道這個項目一直在發展,所以我想知道它今天是什麼狀態。
當爲節點使用本地mongo.db驅動程序時,是否應該爲每個應用程序打開1個連接,每頁「serve」,還是每當需要時打開並關閉它?今天在node.js連接中使用mongodb
我見過幾個older answers但我知道這個項目一直在發展,所以我想知道它今天是什麼狀態。
這不是一個會改變的情況;與使用已建立的連接相比,打開到服務器的新連接的性能會降低。
注意:這是服務器應用程序的一般情況,並非特定於MongoDB。
典型的開銷包括:
對MongoDB的連接存儲網絡連接到服務器
因爲你可以通過在構造函數中設置poolSize利用連接池的MongoDB的Node.js的驅動程序。以使用此示例爲例的博客文章:Node.js: Connection Pools and MongoDB。
這不是每個服務器的情況。有些服務器每個連接只處理一個併發查詢(例如postgres),因此您可能需要打開另一個連接。有時候,如果你有一個長期未使用的連接,你爲其他可選客戶端持有資源。 – 2012-07-27 01:36:53
@YaronNaveh:[Postgres](http://wiki.postgresql.org/wiki/Replication,_Clustering,_and_Connection_Pooling#Connection_Pooling_and_Acceleration)中連接設置和相關資源使用的一般性能問題仍然存在。另一個問題是您的應用程序或驅動程序如何管理重用/關閉連接以及併發性。最小化資源使用的典型數據庫驅動程序概念是使用[連接池](http://en.wikipedia.org/wiki/Connection_pool),它維護一組可用的活動連接。 – Stennie 2012-07-27 03:20:58
游泳池允許你每次打開連接都打開連接(如果你幸運的話,你會從游泳池打開一個連接)。 mongo令我驚訝的是,您爲整個應用程序保留了一個全局連接。 mongo中允許這樣做的特殊功能是什麼?是否b/c mongo沒有交易(需要不同的連接)?它是否是b/c mongo在同一個連接上執行併發請求更高效? – 2012-07-27 10:05:59