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

7
所以我的Passenger会启动5个我的Rails应用程序实例
我使用Connection.new("localhost", 3000, :pool_size => 1, :timeout => 5)连接到MongoDB
如果我只在启动Rails应用程序时产生开销而不是每个请求,为什么需要“连接池”?为什么单个进程需要多个连接?
超时的目的是什么?为什么我希望连接超时?它不应该在Rails进程的生命周期内持续存在吗?
如此困惑...
这个问题特定于Ruby和Mongo,但我想它也适用于其他语言/数据库。
1个回答

3
你在这里不需要使用连接池。由于你正在使用Passenger,请确保每个实例都使用单独的连接,方法是捕获start_worker_process事件。此方法已在驱动程序自述文件中记录。
对于某些多线程应用程序,连接池可能很有用。pool_size是连接将处理的最大并发线程数,timeout是线程在抛出异常之前可以等待可用套接字的最长时间(以秒为单位)。

在Ruby驱动程序的情况下,conn = Connection.new(...,:pool_size => 10),哪个对象拥有池及其连接?使用池是否意味着我不必在线程中锁定连接? - Alexandre
在这种情况下,conn将拥有连接和池。您根本不必围绕连接对象进行锁定。 - Kyle Banker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接