use*_*915 7 database scala mongodb casbah
注意:我意识到在SO上有一个类似的问题,但是它谈到了Casbah的旧版本,而且,答案中解释的行为不是我所看到的!
我的印象是Casbah的MongoClient处理连接池.然而,在我的进程中做lsof我看到一个庞大且越来越多的mongodb连接,这让我怀疑这个池真的存在.
基本上,这就是我正在做的事情:
class MongodbDataStore {
val mongoClient = MongoClient("host",27017)("database")
var getObject1(): Object1 = {
val collection = mongoClient("object1Collection")
...
}
var getObject2(): Object2 = {
val collection = mongoClient("object2Collection")
...
}
}
Run Code Online (Sandbox Code Playgroud)
所以,我从不关闭MongoClient.
我应该在每次查询后关闭它吗?实现我自己的池?然后怎样呢?
谢谢
Casbah是MongoDB Java客户端的包装器,因此连接实际上是由它管理的.
根据Java驱动程序文档(http://docs.mongodb.org/ecosystem/drivers/java-concurrency/):
例如,如果您在Web服务环境中使用,则应创建一个MongoClient实例,并且可以在每个请求中使用它.MongoClient对象维护与数据库的内部连接池(默认最大池大小为100).对于DB的每个请求(查找,插入等),Java线程将从池中获取连接,执行操作并释放连接.这意味着每次使用的连接(套接字)可能不同.
顺便说一下,这就是我在制作中经历的.我没有看到任何问题.
| 归档时间: |
|
| 查看次数: |
559 次 |
| 最近记录: |