Назад | Перейти на главную страницу

Должен ли я отключить отключение профилировщика MongoDB на производственной машине?

По умолчанию в соответствии с [1] собирать данные профиля, когда время выполнения> 100 мс.

Но одна из проблем заключается в том, что когда время выполнения большинства запросов> 100 мс, наша система начинает перегружаться, и я не уверен, что профилировщик делает нашу систему еще более загруженной.

Я думаю отключить или установить большое значение, например 2 сек. Кажется, значение по умолчанию 100 мс слишком мало?

[1] http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/

Во-первых, профилировщик по умолчанию отключен. Медленные запросы (по умолчанию это любой запрос, который занимает более 100 мс, как вы упомянули) будут регистрироваться в журнале MongoDB, но это не то же самое, что профилировщик, и не будет занимать много ресурсов (по сути, он просто пишет строка текста в файл вне БД, без блокировки и т. д.). Как правило, безопасно оставить это как есть, и преимущества обнаружения медленных запросов обычно намного перевешивают обратную сторону наличия большого файла журнала.

Во-вторых, когда профилировщик включен, он записывает все собранные данные в system.profile коллекция. На уровне по умолчанию 0 он отключен, на уровне 1 он будет регистрировать все «медленные» операции на основе того же ограничения, а на уровне 2 он будет регистрировать все операции, независимо от скорости.

Как вы понимаете, установка значения 2 очень ресурсоемкая - вы удваиваете объем записи и добавляете запись для каждого чтения. В зависимости от вашей нагрузки уровень 1 также может быть интенсивным. В общем, я бы рекомендовал профилировщик только в контролируемых обстоятельствах (период обслуживания, отладка, среда разработки / контроля качества).

Хотя вы можете рассматривать два метода записи медленных операций как совершенно разные, в настоящее время значение замедления повлияет на оба метода с точки зрения того, что считается медленным запросом.

Следовательно, если вы установите значение выше (2 секунды), это уменьшит количество операций, записываемых в ваш журнал. Обратной стороной этого является то, что вы пропустите все операции, которые занимают определенное количество времени, которое обычно считается вечностью с точки зрения современных баз данных. Значение 100 мс, как правило, является неплохим стартером, и я даже видел, как люди снижали его в зависимости от требований приложения с точки зрения тайм-аутов, но редко, когда увеличение значения того стоит.

Профайлер берет ресурсы у mongodb! Он должен синхронизировать запрос и записать его в mongodb.log.

Если вам это вообще не нужно, можете спокойно отключить.