Defina o número máximo de processos iniciados por incrond

1

Estou usando incrond para monitorar um diretório de arquivos recebidos. Após cada arquivo chegar ao diretório, um script python é chamado para processá-lo.

Ocorre um problema quando a taxa de arquivos recebidos é mais rápida do que a taxa em que os arquivos são processados. Sob essas condições, o sistema fica sobrecarregado e o resultado é incerto.

Existe uma maneira de definir o número máximo de processos que o incrond tem permissão para iniciar? Outra ferramenta pode ser usada para enfileirar o processamento dos arquivos, para que eles sejam processados de maneira controlada?

    
por Demetris 24.02.2016 / 16:54

1 resposta

1

Você não deve ter incrond iniciando mais processos de processamento do que fazer sentido em paralelo, por exemplo, conforme determinado pelo seu número de CPUs ou sua memória. Este é o número N referenciado no texto a seguir.

Os processos de processamento só devem ser iniciados por incrond e continuar processando os arquivos no diretório "in" até que nada seja deixado. Se vários desses processos forem executados, haverá alguma coordenação necessária para que dois processos não tentem processar a mesma tarefa.

Se os scripts python só puderem ser executados com um arquivo como argumento, peça que incrond inicie um script wrapper que continue gerando o script python original, desde que haja novos arquivos para processar, caso contrário ele existe. Este script de wrapper é iniciado por icrond se houver menos de N em execução ao mesmo tempo. Os scripts do wrapper continuam sendo processados desde que a taxa de entrada de arquivos seja maior, mas eles não perderão nada nem retardarão desnecessariamente o sistema por meio de muitos scripts paralelos em execução. Quando a taxa de entrada ficar abaixo da taxa de processamento, o número de arquivos que ainda precisam de processamento será reduzido para, finalmente, chegar a zero e todos os scripts de wrapper serão encerrados.

Se não houver uma maneira fácil de distinguir os arquivos que acabaram de chegar dos já processados, peça ao incrond que escreva algum arquivo de tarefa em um diretório, a partir do qual os arquivos de tarefas serão processados.

    
por 24.02.2016 / 20:59