Задание Cron против NodeJS setInterval для оптимальной производительности

Я создаю простой скрипт nodejs, который обновляет запись DNS на основе моего текущего IP. Сценарий работает нормально, но у меня есть некоторые опасения относительно того, как мне его запустить. Проверка моего IP должна выполняться каждые 5 минут, и я сталкиваюсь с дилеммой.

Должен ли я использовать setInterval в Node или создать задание cron? Какой из них потребляет меньше всего оперативной памяти и процессора? Пожалуйста, имейте в виду, что скрипт работает на Raspberry Pi Zero с 512 МБ оперативной памяти и только 1 ядром.

Я знаю что cron кажется лучшим вариантом, но насколько он лучше? Имеет ли это значение, учитывая мои характеристики?

2 ответа

Решение

Преимущества решения cron

  • меньшее потребление памяти в 90% случаев
  • утечки памяти эффективно устраняются
  • код перезагружает все библиотеки каждый раз, поэтому обновления вступают в силу при следующем запуске без дополнительной сложности

Преимущества решения демона

  • время загрузки происходит только один раз, поэтому дисковый ввод-вывод и загрузка процессора снижаются для последующих запусков, поскольку вы не будете разбирать исходный код или извлекать все библиотеки
  • более низкий процессор и дисковый ввод-вывод для последующих запусков также означает, что этих ресурсов будет больше для любого основного приложения Raspberry.
  • Linux должен поменять память, которую вы не используете. Это может быть очень медленно в зависимости от вашего хранилища.

Заключение

Я согласен с Александром Т, что cron Вероятно, это будет лучше, но если ваше главное приложение чувствительно к фоновым процессам, возможно, лучше использовать демон.

Мое мнение, cron лучше. Я думаю, что запускать скрипт каждые 5 минут лучше, чем запускать скрипт, который запускается каждые 5 минут. Например, если ваш сценарий умирает, что вы будете делать? С Cron это просто начать в следующий раз через 5 минут.

Так что для памяти и процессора. Я не знаю, как node.js тратит память прямо сейчас, но раньше была проблема с утечками памяти, и с процессом, работающим в течение долгого времени, могла быть проблема. Думаю, разницы в загрузке процессора нет.

Другие вопросы по тегам