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