Configuração eficiente do servidor para imagemagick

4

Estou operando um sistema com edição pesada de imagens processada pelo imagemagick.

Agora, para um novo servidor, eu queria saber quais requisitos de sistema são mais importantes para melhorar o desempenho do imagemagick e da edição de imagens, como converter e compor gifs, jpgs e pngs.

A resolução das imagens é geralmente entre 800x400 e 1980x1080 px. Múltiplas imagens podem ser processadas ao mesmo tempo.

Eu estava pensando que muita RAM (rápida) seria mais importante, mas mesmo assim o full hd em 32 bits leva apenas cerca de 8MB, então talvez a CPU seja mais importante?

Qualquer ideia é altamente apreciada!

Atualização:
htop mostra que a CPU é provavelmente o gargalo.
Como o imagemagick precisa de muitos recursos, eu poderia imaginar que atingiria os limites de CPU com um servidor rapidamente. Alguma idéia de como eu poderia equilibrar a carga dinamicamente (poderia haver picos enormes)? Algo como o Amazon Web Services, mas mais rápido, já que as imagens são renderizadas na hora?

    
por horen 28.06.2013 / 14:58

4 respostas

7

Processar imagens tão pequenas (e 1920x1080 é pequena) não requer muita memória, a CPU é dominante.

Você precisa de muita energia da CPU, se você tiver muitas imagens para converter de uma vez, executar as conversões em paralelo é uma boa ideia. Além disso, como é fácil executá-lo paralelamente, ter CPU com mais núcleos e maior frequência proporcionará maior desempenho. Você precisa apenas executar muitos trabalhos ao mesmo tempo.

Em outras palavras, procure máquinas com quantidade mínima de memória (4-8 GB) e muitos núcleos ou até mesmo muitos CPUs. Se você está usando o Amazon, então instâncias de alta CPU é o que você está procurando. Para uma carga muito grande, pode ser uma boa ideia examinar as instâncias do cluster.

Dependendo do número específico de solicitações de conversão, você pode ter melhor sorte escalonando horizontalmente - obtendo mais máquinas e distribuindo sua carga sobre elas. Mas isso depende do seu caso de uso exato, custos de colocação ou custos de VM, etc.

    
por 05.07.2013 / 12:17
4

From htop it looks like the CPU would be the bottleneck. It goes up to 100% work load ...

Se o seu CPU está atrelado e tudo o mais está em valores nominais, então você precisa adicionar CPU Moar.

    
por 05.07.2013 / 09:51
3

Eu fiz o projeto photobooth, baseado no software opensource, usamos o ImageMagick para processamento de imagens. Experimentamos as plataformas x86 e ARM v6 / v7. Diferentes tamanhos de imagem, diferentes efeitos, combinação de imagens, etc. Testamos 256 RAM tanto para o antigo PC x86 quanto para o ARM (Raspberry Pi). A CPU era o gargalo e nós éramos praticamente incapazes de usar 1 núcleo para processamento instantâneo - estava demorando cerca de 30 segundos para completar em ARMv6, 10 segundos em P3 e 1 segundo para o mais novo Core de 1 GHz. É uma CPU. Se você estiver executando aplicativos ImageMagick a partir da linha de comando, deverá verificar / tmp, que normalmente é tmpfs / shared memory. Para nós, estava levando cerca de 64 MB por uma imagem de impressão grande, combinada a partir de quatro jpegs de câmeras Canon. Se você estiver executando vários processos de uma só vez - basta adicionar mais núcleos.

Como equilibrar a carga? Depende da sua configuração, como o seu sistema funciona. Você usa serviços da web, executando o ImageMagick com php ou tem seus próprios programas, etc ... Por favor, esclareça ...

    
por 10.07.2013 / 11:21
0

O HAProxy permitirá que você faça o "balanceamento de carga" entre vários servidores do lado da rede ... e fornecerá failover.

    
por 05.07.2013 / 12:00