ruby - MongoDB:什么是连接池和超时?

标签 ruby mongodb database

所以我的乘客启动了我的 Rails 应用程序的 5 个实例

我使用 Connection.new("localhost", 3000, :pool_size => 1, :timeout => 5) 连接到 MongoDB

如果我只在启动我的 Rails 应用程序时产生开销,而不是每个请求,我为什么需要一个“连接池”?为什么单个进程需要多个连接?

超时的目的是什么?为什么我希望连接超时?它不应该在 Rails 进程的整个生命周期中持续存在吗?

好困惑……

这个问题是针对 Ruby 和 Mongo 的,但我猜它适用于其他语言/数据库。

最佳答案

您不需要在这里使用连接池。当您使用乘客时,只需通过捕获 start_worker_process 事件来确保每个实例使用单独的连接。这记录在驱动程序自述文件中。

连接池对于某些多线程应用程序很有用。 pool_size 是连接将处理的最大并发线程数,timeout 是在抛出异常之前线程可以等待可用套接字的最大秒数。

关于ruby - MongoDB:什么是连接池和超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2327416/

相关文章:

c# - 需要帮助连接到 mysql 数据库

ruby - 在 Windows 的命令行中安装 github-pages gem 时出错

ruby - 如何使用特定版本的 Ruby gem?

ruby - 在 Ruby 中按身份比较对象的保证方法

java - 如何使用 Spring Data 删除 MongoDB 中的记录

mongodb - 在一个查询中查找最接近的日期

mongodb - 如何访问oplog MongoDB(MMS副本集)

mysql - 随机执行 SELECT 时为数据库表建立索引会有多大区别

ruby-on-rails - 安装 heroku toolbelt 后出现 Ruby 错误

mysql - 满足多种用户偏好的数据库设计?