【问题标题】:Mongodb Java API opens too many connections in servletMongodb Java API 在 servlet 中打开了太多的连接
【发布时间】:2013-01-10 17:34:37
【问题描述】:

据我了解,每个应用程序只需要一个 MongoClient 实例,因此为方便起见,我使用此方法扩展了 HttpServlet:

DB getDB(String dbName) throws Exception {
    MongoClient m = (MongoClient)getServletContext().getAttribute("mongo");
    if(m == null) {
        m = new MongoClient();
        getServletContext().setAttribute("mongo",m);
    }
    return m.getDB(dbName);
}

当我运行这段代码时,它工作得很好,我连接并做我需要做的工作,但每次我运行这个特定的 Servlet 时,它似乎都会不断地打开到 mongodb 的新连接:

1 月 26 日星期六 21:31:42 [initandlisten] 接受来自 127.0.0.1:46860 #1 的连接(现在打开 1 个连接) 1 月 26 日星期六 21:31:53 [initandlisten] 接受来自 127.0.0.1:46861 #2 的连接(现在打开 2 个连接) 1 月 26 日星期六 21:32:00 [initandlisten] 接受来自 127.0.0.1:46863 #3 的连接(现在打开 3 个连接)

在我这样做的页面中:

DB db = getDB("foo");
col = db.getCollection("bar");

然后运行一个简单的查询。谁能解释为什么我得到这么多新的连接?我也看过这个 Mongo.Holder 类。这是做我正在做的事情的首选方式吗?

谢谢!

【问题讨论】:

    标签: mongodb caching servlets connection


    【解决方案1】:

    MongoDB Java驱动实现了一个连接池,默认维护10个连接。池由驱动程序在内部进行管理。从 servlet 容器到 Mongo 服务器的连接不应超过 10 个。如果您想更改这些默认设置,请查看MongoOptions

    【讨论】:

    • 我一直在笔记本电脑上进行开发,并在等待响应时将其关闭。我今天重新启动它以做更多的工作,但我根本没有看到相同的行为。现在它只建立了一个我所期望的连接。也许我在某个地方遇到了错误,或者从我的 IDE 重新部署时遇到了一些奇怪的事情。我会接受你的回答,因为现在我似乎无法重现。感谢您的宝贵时间!
    • 哦,还有一件事:当我看到这个时,大约有 37 个连接。
    • 我们开始;如果我提交的足够多,它会超过 10 点:Sun Jan 27 22:12:06 [initandlisten] connection accepted from 127.0.0.1:56225 #9 (9 个连接现在打开) Sun Jan 27 22:12:07 [initandlisten] connection accepted从 127.0.0.1:56226 #10(现在打开 10 个连接)Sun Jan 27 22:12:20 [initandlisten] 从 127.0.0.1:56228 #11 接受连接(现在打开 11 个连接)Sun Jan 27 22:12:31 [ initandlisten] 接受来自 127.0.0.1:56230 #12 的连接(现在打开 12 个连接)
    • 我使用了 MongoClientOptions 并将最大连接数设置为 5,看起来它停止在 5。我想他们将最大连接数从 10 增加到其他东西。除了没有做任何事情的 mongo 二进制文件之外,没有其他任何东西与它相关联。再次感谢!
    【解决方案2】:

    MongoClientOptions中连接池的默认最大大小从10增加到100,详细Javadoc中有提到:http://api.mongodb.org/java/current/com/mongodb/MongoClientOptions.html#getConnectionsPerHost()

    如果你使用的是 MongoOptions,默认还是 10。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多