背景:我正在尝试优化我的 Node.js API 的速度,该 API 在 Amazon Cloud 上使用 Express 和 Mongoose 构建。我有一个 API 调用需要很长时间才能运行(我的 /stats API 调用会编译来自大量来源的数据,因此会进行数百个 mongo 查询,因此运行大约需要 20 秒)。我注意到,当这个 API 调用正在运行时,其他也命中 Mongo 副本集的 API 调用返回缓慢。我的第一个想法是统计查询很慢,因此阻塞,但根据我的统计面板,我没有任何查询需要超过 100 毫秒才能运行,而且我的 Mongo DB 统计数据都在相当健康的范围内(每个查询 20 多个)第二,<1% btree 未命中,<5% 锁定)。
问题:现在,我的 Node.js 应用程序在启动时建立到 Mongo 集的单个连接,并且所有查询都使用该连接。建立多个连接会更好吗?例如,我应该为每个入站 API 请求建立一个新的 Mongo 连接吗?或者,也许我应该有一个到副本集的静态连接数,并在执行查询时在这些连接之间进行负载平衡?
或者也许我完全不在基地?