2014-11-17 4 views
1

Привет, я пытаюсь использовать верный курсор mongodb для получения живых данных на моем графике, пока все хорошо с некоторыми незначительными проблемами .. одна из основных проблем связана к высокой загрузке центрального процессора, на моем первом звонок с следующим вариантом установить для Монго tailable запросаMongodb tailable cursor, high cpu usage - nodejs + mongodb

tailable: true, 
awaitdata: true, 
numberOfRetries: -1 

использование процессора почти 8-10% и после этого для каждого дополнительного запроса он увеличивается с таким же количеством нагрузки ...

Однако, когда я меняю его на

tailable: true, 
awaitdata: false, 
numberOfRetries: -1, 
tailableRetryInterval: 200 

использование процессора идет вниз, и все это хорошо

awaitdata {Boolean}, awaitdata позволяют курсор ждать данных, применимы только для tailable курсора.

tailableRetryInterval {Number}, tailableRetryInterval указывает милисекунды между getMores на хвостовой курсор.

мой вопрос в том, лучше ли отключать данные awaitdata и использовать tailableRetryInterval, который легко справляется с процессором или я делаю что-то неправильно?

ответ

2
  1. Использование ЦП на 10% - ничто. В самом деле. Использованные ресурсы - это хорошие ресурсы с , они фактически используются для чего-то более полезного, чем холостого хода около. Конечно, до определенного порога.
  2. Когда вы уменьшаете интервал, в котором установлен контрольный курсор, как и вы, конечно, процессор используется меньше. Это зависит от того, как выглядит ваш пример использования. Если вы можете жить с тем, что есть определенная задержка до тех пор, пока запись не будет обработана, все в порядке. Но обычно вы хотите, чтобы вещи обрабатывались как можно быстрее. Также имейте в виду, что несколько записей, возможно, вошли в ограниченную коллекцию, когда вы ждете некоторое время - и для их обработки может потребоваться время и циклы процессора. Я стараюсь как можно больше поддерживать загрузку процессора и предотвращать всплески любой ценой. Потому что, когда всплески, вызванные разными причинами, случаются в одно и то же время, у вас проблемы.
  3. Трудно сказать, если вы сделаете что-то неправильно, если не знаете ваши функциональные и нефункциональные требования, ограничения, прецедент или одну строку кода.