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
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.