Мы уже 4 месяца работаем с монго, но в последнее время я вижу много
SocketException handling request, closing client connection: 9001 socket exception [2] server [127.0.0.1:58996]
Как узнать причину этой ошибки? Связано ли это с ошибкой кода или настройками администратора?
У нас есть Fedora 16 server, mongo версии 2.0.7
Во-первых, взгляните и выполните шаги, описанные здесь:
Затем найдите любые проблемы с ulimit на целевом хосте (для нового сокета требуется новый файловый дескриптор, который может вызвать ошибку):
http://www.mongodb.org/display/DOCS/Too+Many+Open+Files
Наконец, есть несколько проблем, связанных с использованием незанятых соединений, когда они не должны использоваться, и которые также могут способствовать возникновению проблем этого типа:
https://jira.mongodb.org/browse/SERVER-5793
До того как СЕРВЕР-5632 завершено, единственное средство здесь - очистить соединения, перезапустив процессы mongod / mongos.
Я заставил это прекратить происходить, добавив параметр arg batchSize в мой запрос курсора
например перед:
var cursor = db.collection('images').find( {}, {"_id": 1} ).sort({"_id": 1});
после:
var cursor = db.collection('images').find( {}, {"_id": 1} ).sort({"_id": 1}).batchSize(1000);
Это сделало его более плавным (не так много запусков / остановок) и с меньшим количеством неприятных сообщений. Фактически нет.