7

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

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

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

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

如此迷茫...

这个问题特定于 Ruby 和 Mongo,但我想它适用于其他语言/数据库。

4

1 回答 1

3

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

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

于 2010-02-24T17:06:30.980 回答