Добрый день.
Длительное время сражаемся с монгой и не можем найти причину возникновения такого поведения.
У нас имеется коллекция (более 16млн записей), большая часть из них привязана к одному клиенту. В определенные дни (не знаю от чего зависит, магнитные бури может) при запросе к данной коллекции и выборке данных за сутки по каждой компании отдельно, происходит длительное получение курсора и как следствие - исключение "Read timed out after reading 0 bytes, waited for 120.000000 seconds.".
Уже перепробовали все, что только можно. Различные составные индексы. Способ выборки данных (перешли от find к aggregateCursor с размером пакета по 50 записей). И все равно, именно на этом клиенте, происходит зависание. Т.е. в процессе выполнения запросов, идет 4-5 запросов удачных, потом ошибка и остальные запросы проходят успешно. Даже отлов ошибки и повторный запрос через 10 минут, не дал результата.
Более того, почему то каждое утро, по данному же клиенту не удается обратиться даже к другой коллекции, так же по индексу. Пока не делаю запрос вручную на explain по данному индексу. Первый такой запрос выполняется долго, потом быстро и база отвисает.
Монго: 3.0.4 на Linux CentOS
Запрос:
'timestamp' => [
'$gte' => 1482624000,
'$lte' => 1482710399,
],
'type' => [
'$in' => ['one', 'two', ...]
],
'client_id' => 215,
'status' => [
'$ne' => -100
]