【问题标题】:recommended pool size to set for mongo from a rails app (nginx, mongomapper)?从 Rails 应用程序(nginx、mongomapper)为 mongo 设置的推荐池大小?
【发布时间】:2013-06-10 09:04:59
【问题描述】:

我们的应用程序在 rails 3.2.12、mongo 2.2(将迁移到 2.4)、mongomapper 上运行,并使用 nginx + 乘客。

如果我们在具有 5 GB RAM 的 VPS 上,确定应用程序的最佳池大小的最佳方法是什么?我们在哪里设置它?

【问题讨论】:

  • 您的 MongoDB 实例是否与您的应用程序在同一个 VPS 上运行?你的数据集有多大?
  • mongodb 由 objectrocket 托管。通过数据集,您是指整个 mongo 数据库吗?我们要连接的数据库是
  • 顺便说一句,@BrandonBlack,我们还有另一个相关问题也可以解决我们的可扩展性问题:stackoverflow.com/questions/17098660/…。既然听起来你是 mongo 专家,你介意看看吗?谢谢!

标签: ruby-on-rails ruby-on-rails-3 mongodb passenger mongomapper


【解决方案1】:

对于像 Passenger 这样的 Web 应用程序服务器,您的 MongoDB 连接的最大池大小将是每个乘客工作进程,因为 Web 服务器会为每个工作人员分叉您的整个应用程序。

此外,如果您的应用(您的代码)没有产生任何线程并尝试并行工作,那么您可以将池大小保留为 1,因为在这种情况下增加它实际上对您没有多大帮助。

如果您要生成线程来与数据库通信,那么只需确保您的池大小 * 乘客工作人员的数量不超过您想要的与数据库的连接总数(例如,池大小 = 5 * 乘客工作人员= 10 = 50 个与 MongoDB 的连接)。您可能希望线程池大小和连接池大小彼此相当接近。

此外,请记住,MongoDB 对单个 MongoDB 实例的连接数有 20k 的硬性限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 2017-09-12
    • 1970-01-01
    • 2011-10-23
    相关资源
    最近更新 更多