【发布时间】:2015-04-17 22:47:43
【问题描述】:
有一个 MongoDB 副本集,它通过向其写入数据的线程定期连接。 过了一会儿,我收到了这个错误。
WARNING: Server seen down: mongoServer:port - java.io.IOException - message: couldn't connect to [mongoServer:port] bc:java.net.SocketException: No buffer space available (maximum connections reached?): connect
ינו 26, 2014 10:29:57 PM com.mongodb.DBPort _open
INFO: connect fail to : mongoServer:port
java.net.SocketException: No buffer space available (maximum connections reached?): connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.mongodb.DBPort._open(DBPort.java:204)
at com.mongodb.DBPort.go(DBPort.java:107)
at com.mongodb.DBPort.go(DBPort.java:88)
at com.mongodb.DBPort.findOne(DBPort.java:143)
at com.mongodb.DBPort.runCommand(DBPort.java:148)
at com.mongodb.ConnectionStatus$UpdatableNode.update(ConnectionStatus.java:184)
at com.mongodb.ReplicaSetStatus$UpdatableReplicaSetNode.update(ReplicaSetStatus.java:612)
at com.mongodb.ReplicaSetStatus$Updater.updateAll(ReplicaSetStatus.java:764)
at com.mongodb.ReplicaSetStatus$Updater.run(ReplicaSetStatus.java:734)
如果有人能说出它为什么会发生以及如何防止它,我会很高兴。我在想,原因与每个打开的到 mongoDB 封装在 MongoClient 对象中的连接都应该关闭有关。
【问题讨论】:
-
你能粘贴源代码吗?
-
您有多少连接打开/可用?您可以通过
db.serverStatus().connections查看。