【问题标题】:Too many connections to MongoDb - Node.js with Sails与 MongoDb 的连接过多 - 带有 Sails 的 Node.js
【发布时间】:2014-03-22 21:11:54
【问题描述】:

我正在使用 Node.js 和 Sails 开发一个应用程序。

我打算同时运行同一个应用程序的 20 个实例,它们都将使用本地 MongoDB 来存储模型数据。

我的问题是这样开始的:只有前 7 或 8 个启动的应用程序正在启动,其他应用程序因无法连接到数据库而失败。

好的,我进行了一些搜索,发现我必须增加连接数,但让我觉得有些不对劲的是:每个应用程序启动时,都会创建大约 35 个连接!

因此,当启动 6 或 8 个应用程序时,它们占用了大约 250 个连接!!!

这似乎很多,因为每个应用程序只有一个连接就足够了(我认为)。这是“正常”,还是 Sails Waterline 核心有问题?

【问题讨论】:

  • 每个应用程序只能打开一个从 Node.js 到 MongoDB 的连接。 stackoverflow.com/a/15688610/446681
  • @HectorCorrea 这不是我现在的问题...我可以同时运行 6 或 7 个应用程序没有问题,但由于每个应用程序创建大约 35 个连接,我无法设法将更多应用程序放在同一台机器上。这里的问题是,为什么 Waterline Sails-mongo 只为一个适配器创建 35 个连接...
  • 另外,这 20 个实例将在一个单独的线程中运行……这是并行任务,而不是一个具有多个连接的应用程序。 @HectorCorrea
  • 不确定这个参考有多有用,但查看code 我发现default 池大小应该为 1。但是在只定义一个模型的干净启动中,我看到 5 个连接已创建。
  • @NeilLunn 没错。我有 6 个模型,因此,每个模型都创建 5 个连接,每个应用程序总共提供 30 个连接。我将拥有 23 个应用程序,总共有 690 个连接,而它可能只有 23 个......我是否有正确的想法?

标签: node.js mongodb sails.js connection waterline


【解决方案1】:

有解决这个问题的办法吗?

我有同样的问题(负载平衡实例连接到 mongo )没有使用帆...

另一个问题是,由于“零停机部署”,我克隆了集群,然后更改了 DNS,因此暂时拥有双倍的连接量。

所以在我的情况下,我也在听 SIGINT 和 SIGQUIT 并在应用程序终止之前关闭连接,所以希望“保持活动”连接将与应用程序一起消失。

周围有很多人有类似的问题,但我没能找到准确的解决方案 /=

【讨论】:

  • 忘掉风帆吧。开始使用 Geddy (geddyjs.org)。这解决了我的(所有)问题......
  • 我很久以前就修好了。但是对于“解决方法”,我想我只是增加了 Mongo 中接受的连接数。然而,不是最好的解决方案,解决了我的问题......
猜你喜欢
  • 2015-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-02
  • 1970-01-01
  • 2020-04-09
  • 2020-09-26
相关资源
最近更新 更多