连接池和按小时计费的实例



我正在努力更好地了解连接池在knex中的工作方式。

将来,我想将我的应用程序部署到一个PaaS上,该PaaS具有按小时计费的MySQL数据存储。我担心的是,使用连接池(如knex所做的那样)会导致我保持与不再需要的数据存储的连接打开,从而耗费实例数小时。

因此,我的问题是:knex是否会在长时间不使用池中的连接后自动删除这些连接?此外,如果是没有缩减连接的情况,当池中的所有连接都处于非活动状态时,我应该怎么做才能确保我不会因未使用的实例小时数而被收取费用?

我想,如果没有自动缩减,我需要能够访问池中的活动连接,以确保我知道何时所有连接都处于非活动状态,然后销毁池。不幸的是,我不完全确定如何做到这一点(我在文档中找不到它)。

Knex使用Pool2进行池化,默认情况下至少打开2个连接(请参阅Knex.js池化)。因此,如果使用这些默认值,您的担忧是有效的。

要改变行为,请尝试以下操作:

var knex = require('knex')({ 
client: '<your driver, mysql?>', 
connection: { <your connection parameters> }, 
pool: { 
min: 0 /* no connections if idle */, 
idleTimeout: 10*1000 /* 10 secs idle connections are closed */ 
}});

相关内容

  • 没有找到相关文章

最新更新