Mongodb日志显示太多连接打开

时间:2013-07-31 17:06:21

标签: mongodb mongo-java

为什么mongodb日志显示打开的连接太多?它显示的不仅仅是数据库中的最大连接限制和当前操作数。

此外,我的主要人员在达到819限制后拒绝创建更多连接。那个时候,db中的当前操作数量少于819.提升ulimit暂时解决了我的问题,但为什么没有利用空闲连接来满足请求呢?

3 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。我的连接数量一直在增长和增长,直到达到819,然后不​​再允许连接。

我正在使用mongo-java-driver版本2.11.3。似乎解决了这个问题的方法是显式设置MongoClient的connectionsPerHost和threadsAllowedToBlockForConnectionMultiplier属性。在我自己设置这些值并接受默认值之前。

MongoClientOptions mco = new MongoClientOptions.Builder()
    .connectionsPerHost(100)
    .threadsAllowedToBlockForConnectionMultiplier(10)
    .build();
MongoClient client = new MongoClient(addresses, mco); //addresses is a pre-populated List of ServerAddress objects

在我的应用程序中,MongoClient被定义为静态单例。

我正在观看mongodb日志,一旦应用程序达到100个打开的连接,我就没有看到从客户端应用程序建立的任何更多连接。我正在运行副本集,因此您仍然可以看到正在关闭的内部连接。

答案 1 :(得分:0)

来自MongoDB文档:

“如果您在MongoDB日志中看到非常大量的连接和重新连接消息,则客户端经常连接并断开与MongoDB服务器的连接。这是不使用请求池的应用程序的正常行为,例如CGI考虑使用FastCGI,Apache模块或其他类型的持久应用程序服务器来减少连接开销。

如果这些连接不影响您的性能,您可以使用run-time quiet选项或命令行选项--quiet来禁止日志中的这些消息。“

http://docs.mongodb.org/manual/faq/developers/#why-does-mongodb-log-so-many-connection-accepted-events

答案 2 :(得分:0)

确保您使用的是mongodb的最新驱动程序。