Angularjs 在某个时间点监视活动数据库连接

Angularjs 在某个时间点监视活动数据库连接,angularjs,node.js,postgresql,connection-pooling,knex.js,Angularjs,Node.js,Postgresql,Connection Pooling,Knex.js,关于我的问题,在我的NodeJS应用程序中,使用Knex作为数据库库,我的第一个字节的时间很慢 版本: 博士后:9.6.1 节点:7.4.0 Knex:0.12.6 角度的:1.3 有人建议: 要解决此问题,您需要了解如何使用连接: 游泳池的大小 在所有请求中管理连接的方式 运行http请求时,如何查看活动连接以及knex如何管理池?如何确保我的连接得到最佳利用 节点中的池knex配置: pool: { min: 2, max: 8, } 使用DEBUG=knex:环境变量

关于我的问题,在我的NodeJS应用程序中,使用Knex作为数据库库,我的第一个字节的时间很慢

版本:

  • 博士后:9.6.1
  • 节点:7.4.0
  • Knex:0.12.6
  • 角度的:1.3
有人建议:

要解决此问题,您需要了解如何使用连接:

  • 游泳池的大小

  • 在所有请求中管理连接的方式

运行http请求时,如何查看活动连接以及knex如何管理池?如何确保我的连接得到最佳利用

节点中的池knex配置:

pool: {
  min: 2,
  max: 8,
}

使用
DEBUG=knex:
环境变量运行应用程序,当您启动请求时,您将看到非常详细的信息
knex中正在发生的事情和计时

应该给你足够的信息,看看时间在哪里流逝

如果您希望直接从
通用池请求统计数据,请执行以下操作:

knex = require('knex')({client: 'pg', connection: 'postgres:///knex_test'})
poolStats = {
  connectionsAvailable: knex.client.pool.availableObjectsCount(),
  connectionsUsed: knex.client.pool.inUseObjectsCount(),
  clientsWaitingForConnection: knex.client.pool.waitingClientsCount(),
};

{ connectionsAvailable: 2,
  connectionsUsed: 0,
  clientsWaitingForConnection: 0 }

最佳池使用由应用程序需求决定。我不知道knex是否能给你这种灵活性。它抽象了很多,通常不止一个需要完全控制你的应用程序进行优化。你需要一个合适的检测层来帮助监控你正在使用的各种平台组件的单个事务和计时。我不知道有多少免费的值得一试,但我碰巧用了NewRelic。他们可能有一个免费的开发版本——在你的节点应用程序顶部添加一个简单的
require
语句。您应该能够看到——几乎不费吹灰之力——每个事务在Postgres、Node等方面的时间和资源细分。希望这能有所帮助。