在今天的node.js连接中的mongodb

当为节点使用本地mongo.db驱动程序时,是否应该为每个应用程序打开1个连接,每个页面“服务”,还是每当需要时打开并closures它?

我已经看到了一些较旧的答案,但我知道这个项目总是在发展,所以我想知道今天是什么状态。

这不是一个会改变的情况; 打开到服务器的新连接将比使用已build立的连接性能低。

注意:这是服务器应用程序的一般情况,并不是特定于MongoDB的。

典型的开销包括:

  • parsing服务器名称到IP
  • build立到服务器的networking连接
  • 每个连接内存分配在服务器上

对于MongoDB尤其如此:

  • 打开一个新的连接意味着服务器上有一个新的套接字连接和线程
  • 每个连接(自MongoDB 2.0起)在服务器上分配1Mb的RAM(另请参阅: 检查内存使用情况 )
  • 打开的文件/连接的每个进程限制(另请参阅: 打开的文件过多 )

对于MongoDB Node.js驱动程序,您可以通过在构造函数中设置poolSize来利用连接池。 一个博客文章的例子是: Node.js:连接池和MongoDB 。