如何维护数据库池连接

How to maintain db pool connection

我对维护数据库池连接有疑问。实际上,我有在多个项目中使用的客户端数据库,因此,例如,使用 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 建立连接并将响应存储在一个数组中,同时另一个客户端检查连接数组中是否存在某些内容,如果存在,它只是使用对数据库查询的响应。数据库连接池如何在这里工作?

听起来您的应用没有重用连接池。主要问题是这部分:

when a client hit an API this MongoDB connection is made, so now another client hit API it will again call mongo function again.

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

应在 API 被命中之前建立与数据库的连接,例如在应用程序启动时。这将允许应用程序在点击 API 时立即使用池中的连接,而不需要等待连接打开。

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