Vik*_*kas 3 mysql node.js express node-mysql
我挺不理解如何connectionLimit
在mysql的模块工作。
我通过以下方式创建了connectionPool:
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
});
Run Code Online (Sandbox Code Playgroud)
现在,极限5在这里做什么?
我的想法是:
假设有5个用户使用我的REST api从表中选择数据。现在,在我的api中,我从pool获得连接,进行处理,然后释放连接。
因此,现在假设有12个用户同时向该api发送请求。因此,它们中的前5个应该访问数据,而其他7个将获得错误/无响应。他们将不得不再次请求以获取数据。
是这样还是其他?
是这样还是其他?
这是另一回事。
如果connectionLimit
为10,则驱动程序与数据库的最大连接数为10。
假设使用默认的驱动程序选项,如果所有这些连接均处于活动状态(即已从池中获取它们以执行查询,但尚未释放它们),则下一个连接请求(pool.getConnection()
)将被激活。已排队:驱动程序将等待,直到其中一个活动连接释放回池中为止。您的用户只会注意到一点点延迟,但不会收到错误或没有响应。只是延迟的回应。
所有这些都可以使用此处记录的选项进行微调。例如,如果您宁愿等待而不是等待,驱动程序将返回错误set waitForConnections : false
。
或者,如果您希望驱动程序返回错误(例如,如果有25个请求排队等待接收连接),请设置queueLimit : 25
。
归档时间: |
|
查看次数: |
3687 次 |
最近记录: |