В настоящее время я использую слой Persistence Mongo Spring для запроса MongoDB. В запросе коллекции I содержится около 4 Гб данных. Когда я запускаю код поиска в своей среде IDE, он извлекает данные. Однако, когда я запускаю тот же код на своем сервере, он зависает примерно на 15-20 минут и, в конце концов, выдает ошибку ниже. Я забочусь о том, что он работает без сучка и задоринки на моей IDE, работающей на моем ПК с 4G Ram Windows, и не работает на моем сервере с сервером 14G. Я просмотрел Mongo Log, и там ничего нет, что указывает на проблему. Я также предположил, что проблема может быть экологической проблемой, поскольку она работает на моей локальной Spring IDE, однако библиотеки на моем локальном компьютере такие же, как на моем сервере. Кто-нибудь имел такую проблему, или кто-нибудь может указать мне на то, что я делаю неправильно. Также странно, операция поиска работает, когда я возвращаюсь к методам поиска java-драйверов Mongo.Функция поиска Spring Mongo зависает на сервере Windows 2008 Машина
Я использую Монго-Java-драйвер - 2.12.1 весна-данных-MongoDB - 1.7.0.RELEASE
смотри ниже образец находят кода операции и сообщения об ошибках.
List<HTObject> empObjects =mongoOperations.find(new Query(Criteria.where("date").gte(dateS).lte(dateE)),HTObject.class);
Исключение я получаю:
09:42:01.436 [main] DEBUG o.s.data.mongodb.core.MongoDbUtils - Getting Mongo Database name=[Hansard]
Exception in thread "main" org.springframework.dao.DataAccessResourceFailureException: Cursor 185020098546 not found on server 172.30.128.155:27017; nested exception is com.mongodb.MongoException$CursorNotFound: Cursor 185020098546 not found on server 172.30.128.155:27017
at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:73)
at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:2002)
at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:1885)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1696)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTempate.java:1679)
at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:598)
at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:589)
at com.sa.dbObject.TestDb.main(TestDb.java:74)
Caused by: com.mongodb.MongoException$CursorNotFound: Cursor 185020098546 not found on server 172.30.128.155:27017
at com.mongodb.QueryResultIterator.throwOnQueryFailure(QueryResultIterator.java:218)
at com.mongodb.QueryResultIterator.init(QueryResultIterator.java:198)
at com.mongodb.QueryResultIterator.initFromQueryResponse(QueryResultIterator.java:176)
at com.mongodb.QueryResultIterator.getMore(QueryResultIterator.java:141)
at com.mongodb.QueryResultIterator.hasNext(QueryResultIterator.java:127)
at com.mongodb.DBCursor._hasNext(DBCursor.java:551)
at com.mongodb.DBCursor.hasNext(DBCursor.java:571)
at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:1871)
... 5 more
Спасибо за ваш ответ. Вещь - это размер результата на самом деле довольно маленький. Кроме того, тот же запрос отлично работает на моей IDE. Даже при нахождении одного объекта сервер все еще зависает и впоследствии выдает одно и то же исключение. Как я могу управлять курсорами с использованием весеннего монго. – obi
AFAIK, изменяя курсор с использованием Spring Data Mongo, невозможно. Вы пытались получить дамп потока (jstack), чтобы увидеть, где процесс зависает или запускает ваш сервер в режиме отладки и прикрепляет отладчик во время процесса? Тайм-аут курсора пахнет, что что-то происходит в пределах отображения, которое потребляет много времени. – mp911de