mysql - connectionLimit 在 node mysql 中如何工作?

标签 mysql node.js express node-mysql

我很不明白 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/

相关文章:

mysql - 在MySQL中,如何将 "join"三张表

mysql - 恰好加入 1 条记录,即使条件匹配多条记录

node.js - 将默认值设置为属性的新列, Mongoose 查询

node.js - 连接到本地主机 :3000 from another computer | expressjs, nodejs

mysql - 删除特定字符串或数字右侧和底部的所有内容

Mysql 多个离线数据库

node.js - Koa-router 在到达路由之前获取已解析的参数

javascript - 在 NODE.JS 中重新加载变量值

javascript - 我想从 MongoDB 文档返回特定字段值,但我不断将 [object Promise] 作为返回值

javascript - 使用表单删除 express 请求不起作用