MongoDB - PHP - MongoCursorException «Курсор не найден»

У меня есть 2 коллекции: A (3,8 млн документов) и B (1,7 млн ​​документов)

I у меня есть PHP-скрипт, который я запускаю из оболочки, который:

  1. перебирает каждую запись в A
  2. ~ 60% времени, он выполняет findOne на B (используя _id)
  3. выполняет некоторые основные математические вычисления, создавая массив php

после выполнения цикла для всех документов в a:

4) цикл по массиву php

5) вставка в коллекцию C

во время (1), я постоянно получаю: Неустранимая ошибка PHP : Неперехваченное исключение «MongoCursorException» с сообщением «Курсор не найден» Последний обработанный элемент был # 8187 из 3872494.

real    1m25.478s
user    0m0.076s
sys     0m0.064s

При повторном запуске, без изменения кода, исключение было выдано в элементе № 19826/3872495

real    3m19.144s
user    0m0.120s
sys     0m0.072s

И снова # 8181/387249

real    1m31.110s
user    0m0.036s
sys     0m0.048s

Да, я понимаю что я могу (и, вероятно, должен) поймать исключение ... но ... почему оно вообще выбрасывается? Особенно при таком разном затраченном времени / глубине в базе данных.

Если это поможет, моя установка представляет собой набор реплик с 3 узлами (2 + произвольная). Я отключил вторичный и попробовал запустить только первичный. Те же результаты (разное количество обработанных результатов и раз, но всегда возникает исключение «Курсор не найден»).

6
задан Z Jones 24 July 2011 в 07:18
поделиться