Монго + Java + слишком много открытых файлов
Я использую mongo-java2.4jar для связи с сервером mongo. В моем веб-приложении я использую mongo=new Mongo("serverIp","port")
где когда-либо это требуется, и когда обработка завершена, я закрываю соединение Монго, используя mongo.close()
,
Но через некоторое время я получаю следующее исключение:
java.net.SocketException: слишком много открытых файлов
Я думаю, что когда я закрываю соединение, оно не закрывает сокеты. Пожалуйста, помогите мне разобраться с этой проблемой.
Спасибо!
1 ответ
Класс Mongo прозрачно выполняет пул соединений, и вы, как правило, должны иметь только один экземпляр для каждого процесса JVM. Пожалуйста, посмотрите на http://api.mongodb.org/java/2.5-pre-/com/mongodb/Mongo.html
Если вы интенсивно создаете экземпляры этого класса, я думаю, вы приобретете слишком много соединений, прежде чем они могут быть освобождены. Просто создайте синглтон при запуске приложения для всего приложения и поместите его в контекст приложения. Звоните близко только тогда, когда ваше приложение останавливается.
Ура,
Sven