最近用node读取更新mongodb的文档,发现: Error: db object already connecting, open cannot be called multiple times 的错误出现的次数越来越多,但是我每一次open()后都有close()。。听说用连接池管理mongodb的链接可以优化性能,不需要close()了,所以在这里想请教各位前辈,如何使用连接池解决这个问题,优化mongodb的性能?
PS:我知道有一个mongose可以解决这个问题,但是很想知道不用它应该怎么做。。
You open do MongoClient.connect once when your app boots up and reuse the db object. It’s not a singleton connection pool each .connect creates a new connection pool.
使用node-mongodb-native,这是官方为nodejs提供的驱动。这个库本本身就实现了pool管理,所以不用另外考虑连接池。使用上可以通过配置链接url或server的属性设置连接池大小。可以在程序初始化时创建一个全局的访问client,也可以自己再封装一次。所有通过这个client的发出的mongo操作请求,驱动底层都会自动分配链接。由于底层是用c/c++实现的,所以不用担心代码会阻塞。具体如何创建可以参见http://mongodb.github.io/node-mongodb-native/driver-articles/mongoclient.html#mongoclient-connect