Монго + Java + SocketTimeOut - PullRequest
       16

Монго + Java + SocketTimeOut

4 голосов
/ 29 марта 2011

Я использую MongoDb и у меня возникают проблемы при чтении записей из БД.Я могу получить их в курсоре, но когда я пытаюсь получить записи из курсора с помощью курсора.постоянно увеличивается, поэтому я получаю больше записей в курсоре.Также база данных, к которой я обращаюсь, находится на удаленной машине.

Пожалуйста, помогите по этому вопросу.

Спасибо!

1 Ответ

4 голосов
/ 03 апреля 2011

Исходя из того, что вы описали, я думаю, что я столкнулся с этой проблемой в PHP, когда коллекция испытывает как большую нагрузку чтения, так и загрузку записи. Некоторые чтения могут работать, но в конечном итоге они начнут отсчитывать время. Мой тайм-аут курсора установлен на 30 с, что не является проблемой, так как мы используем Mongo для внутреннего анализа / обработки данных. Мы смогли несколько смягчить проблему, защищая наши серверы, но проблема все еще возникает довольно регулярно. Я думаю, что это связано с тем, что большая часть Mongo является однопоточной, и поэтому большая нагрузка превращается в длинную очередь обработки, которая в конечном итоге превращается в тайм-ауты.

Я бы также проверил и удостоверился, что ваша ОЗУ не заполняется индексными данными или фактическими данными - в этом случае Mongo должен перейти на жесткий диск, чтобы получить эти данные, и это на больше В 80 раз медленнее , чем чтение из памяти. Вы можете узнать, каков ваш индекс / объем данных, запустив db.getStats() для рассматриваемой базы данных.

...