我很不明白 mysql 中的 connectionLimit
模块工作。
我通过以下方式创建了一个连接池:
var connPool = mysql.createPool({
host: config.get('database.host'),
user: config.get('database.user'),
password: config.get('database.password'),
database: config.get('database.dbname'),
connectionLimit: 5
});
现在,limit 5 在这里做什么?
这是我的想法:
假设有 5 个用户使用我的 REST API 从表中选择一些数据。现在,在我的 API 中,我从 pool 获得一个连接,执行一些操作,然后释放连接。
那么现在,假设有12个用户同时向这个API发送请求。因此,他们中的前 5 应该可以访问数据,而其他 7 将收到错误/无响应。他们将不得不再次请求以获取数据。
是这样还是别的什么?
最佳答案
Is this like so or something else?
这是另外一回事。
如果 connectionLimit
为 10,则驱动程序与数据库建立的最大连接数为 10。
假设默认驱动程序选项,如果所有这些连接都处于事件状态(也就是说,它们已从池中获取以执行查询,但尚未释放),那么下一个连接请求 ( pool.getConnection()
) 将排队:驱动程序将等待,直到其中一个事件连接被释放回池中。您的用户只会注意到一点延迟,但他们不会收到错误或没有响应;只是一个延迟的响应。
所有这些都可以使用记录的选项进行微调 here .例如,如果您希望驱动程序返回错误而不是等待,请设置 waitForConnections : false
。
或者,如果您希望驱动程序在有 25 个请求排队等待接收连接时返回错误,请设置 queueLimit : 25
。
关于mysql - connectionLimit 在 node mysql 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45522907/