2011-02-18 76 views
2

我正在使用mongo-java2.4jar與mongo服務器進行通信。 在我的webapp中,我使用的地方是mongo=new Mongo("serverIp","port"),而且在處理完成後,我使用mongo.close()關閉了mongo連接。mongo + java +太多打開文件

但一段時間後,我得到以下異常:

java.net.SocketException異常:打開的文件太多

我想,當我關閉它沒有關閉套接字連接。 請幫我解決這個問題。

謝謝!

+0

什麼平臺是你嗎?當你使用這個時,你應該看看你的開放式套接字。如果您使用的是unix-ish系統,請使用netstat。看看有多少連接是開放的,以及它們處於什麼狀態。 – nojo 2011-02-18 15:43:02

+0

在linux上,你可以看到在windows上有`netstat -p`的開放套接字的數量應該是類似的。 – 2011-02-18 15:44:02

回答

3

Mongo類透明地執行連接池,每個JVM進程通常應該只有一個實例。請看http://api.mongodb.org/java/2.5-pre-/com/mongodb/Mongo.html

如果你大量創建這個類的實例,我認爲你將獲得太多的連接,才能被釋放。只需在應用程序啓動時爲整個應用程序創建一個單例,並將其放置在應用程序上下文中。只有當您的應用停止時才能關閉。

乾杯,

斯文