Português (Brasil)

Ferramentas de desenvolvedor · Gerador Crontab

Executando um cron job a cada minuto: quando a pesquisa está errada e o que usar

· Por que é importante

cron votação desempenho

Marcações de sessenta minutos ao lado de uma expressão curinga de cinco campos
Ilustração vetorial original ToolAcre

Trabalhos a cada minuto são fáceis de escrever e caros de se conviver. Este post explica os custos, os casos em que se justificam e as alternativas de intervalos mais longos a daemons e gatilhos de eventos.

A sintaxe de cada minuto cria 1,440 candidatos de calendário em um dia completo de 24 horas

`* * * * *` se expande para cada minuto de 0 até 59, a cada hora e em cada data do calendário. Em um dia completo de vinte e quatro horas que produz 1,440 etiquetas de minutos correspondentes ao relógio de parede. A predefinição e os testes de ToolAcre estabelecem a gramática, enquanto sua visualização mostra apenas os próximos cinco candidatos para manter a interface legível.

A contagem descreve oportunidades, não ações bem-sucedidas. Um minuto local inexistente durante uma transição de zona de avanço pode ser omitido por esta visualização e o navegador nunca executa uma tarefa. Use a expressão para raciocinar sobre a cadência e depois medir os efeitos reais do tempo de execução onde o comando e o agendador existem.

O custo do tempo de execução não pode ser calculado apenas a partir da expressão

Uma expressão não contém tempo de inicialização do processo, contagem de conexões, volume de log ou uso de recursos. Um cheque de uma linha e uma grande importação podem comcomcompartilhar as mesmas cinco estrelas e, ao mesmo tempo, impor custos incomparáveis. A lista de despesas gerais da pasta de trabalho pode ser plausível, mas ToolAcre não pode quantificá-las a partir do texto do cronograma.

A análise de desempenho, portanto, começa fora do gerador: observe a duração, CPU, I/O e as chamadas posteriores para a ação real. Multiplique cuidadosamente pela frequência candidata somente após medir execuções representativas. O analisador pode informar quantos valores de minutos correspondem; não pode dizer quanto custa cada partida.

A adequação depende de uma ação externa e de um requisito de latência

Se a votação a cada minuto é justificada depende do requisito de latência e do design da ação. ToolAcre não sabe se o comando é idempotente, se existe uma fonte de evento ou qual atraso os usuários podem tolerar. Não deve rotular o cronograma como inerentemente bom ou ruim.

Traduza o requisito em um intervalo máximo aceitável e compare-o com o custo observado e o tratamento de falhas. Se a latência de cinco minutos for suficiente, `*/5 * * * *` reduz os candidatos de minuto para doze por hora. Se apenas a latência de um minuto funcionar, mantenha a cadência e resolva explicitamente as questões de execução.

As compensações de minutos distribuem o trabalho horário fixo, mas não o randomizam

Um deslocamento fixo como `7 * * * *` seleciona o sétimo minuto de cada hora. Ele pode separar esse trabalho do trabalho fixado no minuto zero, mas é determinístico e não aleatório. Vários deslocamentos podem distribuir trabalhos conhecidos ao longo da hora, quando o minuto exato não é importante.

ToolAcre descreve o minuto sete de cada hora e visualiza as datas correspondentes. Ele não inspeciona outros agendamentos no host, portanto não pode provar que o deslocamento escolhido é silencioso. Crie um inventário antes de reivindicar a distribuição da carga e preserve o motivo da compensação na documentação.

Workers e timers de serviço são alternativas fora deste repositório

Trabalhadores de longa duração, entrega de eventos e temporizadores do gerenciador de serviços podem substituir a votação em alguns sistemas. Nenhum é implementado pelo gerador Crontab e sua configuração não pode ser inferida de `* * * * *`. O repositório não possui integração de cliente ou supervisor de fila.

Escolha alternativas a partir das evidências da arquitetura alvo. Um trabalhador pode remover a inicialização repetida enquanto introduz requisitos de ciclo de vida e recuperação. Um caminho de evento pode reduzir verificações vazias ao adicionar semântica de entrega. O gerador permanece útil para quaisquer tarefas periódicas residuais, mas não pode julgar essas compensações.

Exemplo resolvido: reduza a frequência dos candidatos e compare as visualizações

Compare três expressões no painel: a cada minuto, `*/5 * * * *` e `7 * * * *`. O primeiro avança um minuto, o segundo seleciona 0, 5, 10 e múltiplos subsequentes, e o terceiro seleciona uma posição de minuto por hora. As descrições expõem cada alteração sem executar um poller.

Use essas listas de candidatos para discutir a latência em termos concretos. Se uma solicitação chegar imediatamente após um candidato de cinco minutos, a próxima oportunidade estará a quase cinco minutos de distância. Esse limite simples é uma evidência do cronograma. A duração do processamento, o atraso na fila e o sucesso permanecem medidas adicionais que o navegador não pode fornecer.

O que isso não cobre — agendamento de subminutos, que o cron não pode expressar

O cron de cinco campos não pode expressar segundos porque este analisador começa com minuto. Uma entrada de seis campos é rejeitada em vez de tratada como frequência mais alta. Criar um loop de shell para emular trabalho de menos de um minuto é um comportamento de comando fora de ToolAcre e não é recomendado aqui sem testes específicos de tempo de execução.

Se o requisito for inferior a um minuto, selecione um agendador ou trabalhador projetado e documentado para essa resolução. Não force um valor de segundos não suportado no primeiro campo. O erro exato de cinco campos é um protetor de dialeto útil que evita que uma expressão de aparência rápida seja silenciosamente mal interpretada.

Conclusão: escolha o intervalo mais grosseiro que atenda à necessidade - e o gerador criará uma expressão */5 ou */15 tão fácil quanto cinco estrelas

Escolha a cadência mais grosseira que satisfaça uma necessidade medida, mas mantenha a decisão separada da validade da expressão. ToolAcre pode tornar programações de minutos, cinco minutos e deslocamentos igualmente sintaticamente corretas. Somente a evidência operacional determina qual deles pertence a um sistema.

Use o gerador para enumerar oportunidades e, em seguida, anexe medidas de custo, latência e confiabilidade do alvo. Esse registro combinado é mais honesto do que declarar o cron de cada minuto caro em todos os casos ou assumir que uma expressão menos frequente corrige automaticamente o trabalho ineficiente.