Se algum dia eu estiver preocupado com um cronjob iniciado antes que outro termine, normalmente eu crio um arquivo temporário em /tmp
(como /tmp/lockFile_$$
) que é removido como a última etapa do primeiro cronjob e só tem o segundo O cronjob começa com um loop na existência desses arquivos, dormindo entre 5 e 10 segundos em cada loop e interrompendo o loop quando o arquivo desaparece (possivelmente enviando um e-mail a cada tantas iterações para que você tenha mais facilidade em perceber os jobs paralisados). / p>
Se o ponto de estrangulamento no primeiro é a largura de banda da rede, você pode tentar brincar com as opções --compress
e --compress-level
para o rsync.
Se o ponto de estrangulamento for CPU, você pode tentar dar ao processo de rsync um valor mais baixo
Se for iowait
time, você pode considerar ionice
se estiver usando o cfq no Linux ou dividindo o comando rsync em vários processos simultâneos para que um processo possa estar aguardando E / S enquanto outro está transmitindo em vez de ir em série. A maioria das plataformas também permite ajustar a funcionalidade de E / S. No Linux, durante o primeiro cronjob, você pode considerar migrar temporariamente para o deadline
scheduler (para priorizar as leituras sobre gravações) e aumentar temporariamente o read_ahead_kb
, já que está obtendo arquivos grandes inteiros do disco.