首页 > 解决方案 > 从 mlab 切换到 mongodb-atlas 后的连接问题

问题描述

我在 heroku 上运行了一个流星应用程序,直到上周数据库还在 mlab 上运行。然后我切换到 MongoDB Atlas,几天后应用程序运行非常缓慢。我从 M2 升级到 M5,所以还可以,但现在又变慢了。似乎存在网络输出限制,但使用 mlab 则没有。

这可能是查询的问题还是我做错了什么,我必须考虑什么?

有人知道这个问题或有使用流星/heroku/mongodb-atlas 组合的经验吗?

提前致谢

标签: herokumeteormongodb-atlas

解决方案


在 Heroku 中,当您选择 MLab 服务时,数据库很可能与您的 Meteor 实例在同一个 VPC 中提供。我首先要确保我在与 Heroku 相同的区域和服务提供商中运行 Atlas MongoDB。(例如 Meteor 和 Mongo 都在 AWS eu-central 上运行)。你做了这个了吗?https://www.mongodb.com/blog/post/integrating-mongodb-atlas-with-heroku-private-spaces

您是否超出了 Mongo 集群的限制?https://docs.atlas.mongodb.com/reference/atlas-limits/这对于避免为不需要的服务规模付费很重要。

Monti APM ( https://montiapm.com/ ) 为 Meteor 提供 8 小时保留的免费监控服务。这可以帮助您了解您的 Oplog 交易和交易量。

我不知道你是如何设置 Oplog 的,但你也可以试试这个(旧的)Mongo URI。我仍然将它与最新的 Meteor 版本一起使用,我很好:

"env": {
      "MONGO_URL": "mongodb://yourapp:XXXXXXXXXXXXXXXX@yourapp-shard-00-00-zc1lg.mongodb.net:27017,yourapp-shard-00-01-zc1lg.mongodb.net:27017,yourapp-shard-00-02-zc1lg.mongodb.net:27017/meteor?ssl=true&replicaSet=yourapp-shard-0&authSource=admin",
      "MONGO_OPLOG_URL": "mongodb://yourapp-oplog:XXXXXXXXXXXXXXXX@yourapp-shard-00-00-zc1lg.mongodb.net:27017,yourapp-shard-00-01-zc1lg.mongodb.net:27017,yourapp-shard-00-02-zc1lg.mongodb.net:27017/local?authSource=admin&ssl=true&replicaSet=Yourapp-shard-0"
    }

推荐阅读