如何维护数据库池连接

时间:2019-07-23 16:26:32

标签: database mongodb threadpool connection-pooling

我对维护数据库池连接有疑问。实际上,我有用于多个项目的客户端数据库,因此,例如,使用Mongodb,我做了类似的操作
Mongodb.connect(URL,{poolSize:5}, function(err,resp)=>{})

。当客户端点击一个API时,此MongoDB连接已建立,因此现在另一个客户端点击了API,它将再次调用mongo函数。 poolSize概念在这里起作用吗?当前是否从poolSize建立了两个连接,还是在我第一次点击时发生了这种情况

Mongodb.connect(url,{poolSize:5}, function(err,resp)=>{this.connections[{'db':resp}})

我将连接存储在连接数组中,现在有一个客户端命中的API,建立了一个连接,响应存储在数组中,同时另一个客户端检查连接数组中是否存在某些内容,如果存在,它将使用该响应来对数据库的查询。数据库连接池在这里如何工作?

1 个答案:

答案 0 :(得分:0)

听起来您的应用正在 not 重复使用连接池。主要问题是这一部分:

  

当客户端点击一个API时,MongoDB建立连接,所以现在   另一个客户端点击了API,它将再次调用mongo函数。

听起来每次调用API都会创建一个新的MongoDB连接。这些呼叫中的每一个都会创建自己的距离连接池。 poolSize将在每个单独的池上强制执行,但是总的来说,连接总数可能远远超过该限制。

应该在命中API之前(例如在应用程序启动时)建立与数据库的连接。然后,这将使应用程序在命中API时立即使用池中的连接,而无需等待连接打开。

blog post以Node.JS和Express为例,提供了实现连接池的正确和错误方法的一些示例。

相关问题