【问题标题】:How does node-mssql handle connection pooling?node-mssql 如何处理连接池?
【发布时间】:2015-06-18 17:09:03
【问题描述】:

我正在使用 node-mssql 包在 Node 中创建 API 端点。

我想知道包如何处理连接池,因为在 package website 上没有太多解释。

我的配置中有以下内容,以允许池增加到 10 个。

var config = {
  server: '',
  user: '',
  password: '',
  database: '',
  pool: {
    max: 10,
    min: 0,
    idleTimeoutMillis: 30000
  }
}

我已将这些行添加到每个请求中,因此我可以在 Node 控制台中查看正在发生的事情...

// Dump info about connection pool
console.log('SQL Pool - waitingClientsCount: ' + connection.pool.waitingClientsCount())
console.log('SQL Pool - getPoolSize: ' + connection.pool.getPoolSize())
console.log('SQL Pool - availableObjectsCount: ' + connection.pool.availableObjectsCount())

我已经导航到浏览器中的端点并刷新了几分钟。在 Node 控制台中,上面的每一个输出,都是这样的……

SQL Pool - waitingClientsCount: 0
SQL Pool - getPoolSize: 1
SQL Pool - availableObjectsCount: 0

我预计池的大小会随着所有这些请求而增加。

池是否会根据负载自动配置自己,还是我误解了什么?

编辑:从外观上看,该软件包正在使用繁琐的驱动程序。

【问题讨论】:

    标签: sql-server node.js node-mssql


    【解决方案1】:

    在 GitHub 上的项目问题跟踪器中找到答案:https://github.com/patriksimek/node-mssql/issues/118#issuecomment-92522160

    答案是……

    Clarkey,IIRC 默认池大小为 10,如果您的请求返回的速度足够快...第一个连接将被简单地重用...如果您使用 siege 之类的东西,如果您真的想测试的话。此外,iirc 连接将保持打开状态大约 30 或 60 秒,然后循环退出。

    【讨论】:

    • 就我而言,我正在做 createPool(pool);在我的每个请求上,因为我们有很多数据库,它会影响性能还是会自动管理。
    猜你喜欢
    • 2019-08-27
    • 2013-08-09
    • 2017-10-26
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多