como manter o processo de sobrecarregar o servidor

1

Eu tenho um servidor web, onde as imagens estão sendo coletadas e convertidas em gifs. Eu estou usando o programa de conversão de imagem-magick, a cada 1000 imagens. O processo enquanto corre completamente inunda meu servidor.

Eu ainda quero apenas converter mais de 1000 imagens em um gif. Como posso manter os recursos do sistema exigidos por convert de colocar muita carga do sistema em meu servidor?

    
por j0h 20.03.2017 / 21:42

3 respostas

2

Se uma resposta simples que aumentará o tempo necessário para converter suas imagens será suficiente, a resposta fácil é lançar convert usando nice , por exemplo:

nice -n 19 convert ... (Onde ... é o resto do seu comando de conversão atual) reduzirá a prioridade do programa de conversão de 20 (o padrão) para 39

O efeito exato da configuração de um determinado valor de niceness para um processo depende dos detalhes de como o planejador é projetado nessa implementação do Unix / Linux. O agendador de um sistema operacional em particular também terá várias heurísticas incorporadas (por exemplo, para favorecer processos que são principalmente ligados a E / S sobre processos que são ligados à CPU).

Como um exemplo simples, quando dois processos idênticos ligados à CPU estão rodando simultaneamente em um sistema Linux com uma única CPU, cada parte do tempo da CPU será proporcional a 20-p, onde p é a prioridade do processo. Assim, um processo executado com nice +15 receberá 25% do tempo de CPU alocado para um processo de prioridade normal: (20 - 15) / (20 - 0) = 0,25. [2] No scheduler BSD 4.x, por outro lado, a proporção no mesmo exemplo é de cerca de dez para um.

Fontes:

man nice

link

    
por Elder Geek 20.03.2017 / 22:14
2

O Imagemagick construiu um método para o controle de uso de recursos. Você pode limitar os recursos disponíveis para imagemagick no arquivo policy.xml. Por padrão, no Ubuntu, provavelmente está localizado em /etc/ImageMagick-6/policy.xml

Existem várias opções para jogar, por exemplo, você pode definir o limite de threads para um número menor do que a contagem de seus núcleos de CPU, habilitar a aceleração da CPU e / ou limitar o uso de memória de acordo com o que está disponível no seu servidor. / p>

Você pode ver as configurações atuais com o comando identify -list resource .

    
por Maadinsh 21.03.2017 / 12:46
1

Se ele estiver comendo E / S e CPU, execute-o com ionice e bom. Observe que o ionice só funciona se você estiver usando o agendador de E / S do bloco CFQ. Este planejador de E / S pode ser configurado em um dispositivo de bloco (por exemplo, / dev / sda) usando:

echo "cfq" | sudo tee /sys/block/sda/queue/scheduler

e, em seguida, execute seu processo usando:

ionice -c 2 -n 7 nice -n 19 <your command>

.. isso executará o processo com o niceness de E / S de melhor esforço no nível mais baixo 7 com o nível de nicho de CPU mais baixo.

    
por Colin Ian King 21.03.2017 / 13:40