У нас есть несколько скриптов Python 3.6, которые выполняют проверку в сети и сохраняют результаты в коллекции mongo (сервер mongo версии 3.6.3 и pymongo 3.4.0).Эти сценарии выполняются несколько раз в день и используют многопроцессорную обработку Python для выполнения тысяч операций чтения и записи над коллекцией, некоторые из них одновременно.После завершения удаления из Интернета процесс выполняет итерацию только новых записей в коллекции для поиска дубликатов.
Каждый день вставляется около 60000 новых документов и обновляется около 1 миллиона.Общее количество документов составляет около 7 миллионов (около 5 ГБ данных).
Каждую неделю или около того (это случается не всегда), сразу после завершения проверки и запуска дубликатов, pymongoВызывает эту ошибку:
pymongo.errors.AutoReconnect: connection closed
Двойной процесс - это первая «большая» операция чтения (означающая большой запрос как запрос, который возвращает много документов коллекции), который выполняетсяв процессе после всех вставок.
После того, как эта ошибка возникает один раз, она возникает каждый раз, когда скрипт пытается выполнить большую операцию чтения над коллекцией.Оболочка Mongo по-прежнему доступна, и большинство запросов на вставку и чтение все еще работают.
Проблема исправлена после выполнения db.repairDatabase()
в оболочке mongo.
Мое странное предположение состоит в том, что документ или группаили документы повреждены при вставке, но я не знаю, как это проверить, и возникшая ошибка «соединение закрыто» не помогает.
Любая подсказка о том, как точно знать, если проблемаповрежденные документы / избежать повреждения документа при вставке?