Назад | Перейти на главную страницу

SocketException в журналах Mongo

Мы уже 4 месяца работаем с монго, но в последнее время я вижу много

SocketException handling request, closing client connection: 9001 socket exception [2] server [127.0.0.1:58996]

Как узнать причину этой ошибки? Связано ли это с ошибкой кода или настройками администратора?

У нас есть Fedora 16 server, mongo версии 2.0.7

Во-первых, взгляните и выполните шаги, описанные здесь:

http://www.mongodb.org/display/DOCS/Troubleshooting#Troubleshooting-Socketerrorsinshardedclustersandreplicasets

Затем найдите любые проблемы с 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);

Это сделало его более плавным (не так много запусков / остановок) и с меньшим количеством неприятных сообщений. Фактически нет.