Tarefa Cron vs NodeJS setInterval para desempenho ideal

3

Estou criando um script nodejs simples que atualiza um registro DNS com base no meu IP atual. O script funciona bem, mas tenho algumas dúvidas sobre como devo executá-lo. A verificação do meu IP deve ser realizada a cada 5 minutos e estou enfrentando um dilema.

Devo usar o setInterval ou devo criar um cron job? Qual consumirá menos RAM e CPU? Por favor, tenha em mente que o script é executado em um Raspberry Pi Zero com 512MB de RAM e apenas 1 núcleo.

Eu sei que o cron parece uma opção melhor, mas quanto melhor é isso? Isso importa, dadas as minhas especificações?

    
por Meletis 04.06.2017 / 22:10

2 respostas

2

Vantagens da solução cron

  • menor consumo de memória em 90% do tempo
  • vazamentos de memória são efetivamente eliminados
  • o código está recarregando todas as bibliotecas todas as vezes para que as atualizações entrem em vigor na próxima execução sem complexidade adicional

Vantagens da solução daemon

    O
  • tempo de carregamento só acontece uma vez, portanto a E / S e a CPU do disco são menores para as execuções subseqüentes, já que você não analisará seu código-fonte nem coletará todas as bibliotecas
  • a menor CPU e E / S de disco para execuções subseqüentes também significa que há mais desses recursos disponíveis para qualquer que seja a sua aplicação principal para o Raspberry.
  • O Linux deve trocar a memória que você não está usando. Isso pode ser muito lento dependendo do seu armazenamento.

Conclusão

Concordo com Alexander T que cron parece ser melhor, mas se o seu aplicativo principal for sensível a processos em segundo plano, talvez seja melhor usar o daemon.

    
por 05.06.2017 / 22:20
0

Minha opinião, cron é melhor. Acho que começar o seu script a cada 5 minutos é melhor do que começar o script que é acionado a cada 5 minutos. Por exemplo, se seu roteiro morrer, o que você fará? Com o cron, basta começar da próxima vez em 5 minutos.

Assim, para memória e CPU. Eu não sei como o node.js gasta memória agora, mas antes havia um problema com vazamentos de memória, e com o processo funcionando por muito tempo poderia haver um problema. Para a utilização da CPU, não há diferença, eu acho.

    
por 04.06.2017 / 23:01