Confira os cgroups
Eu tenho um processo de linha de comando que é executado pelo meu aplicativo ruby on rails para usar o comando 'convert' do ImageMagick para converter um PDF em múltiplos PNGs. O problema é que quando eu executo o comando ele pega toda a memória do meu VPS (512MB) e renderiza muitas outras funções quase inúteis (servidor web, ssh etc).
Meu comando de conversão é o seguinte:
convert -density 288 ./document.pdf -resize 25% ./pages/page_%03d.png
Eu tentei usar o ulimit para limitar a memória que esse processo pode consumir para aproximadamente 15% de memória, que no meu VPS de 512MB é de aproximadamente 76.800 kbytes. Se eu executar o comando acima com ulimit, como visto abaixo, o processo inicialmente aumenta sem limite, ocupando até 80% da memória e torna inúteis outras funções do servidor devido ao atraso. Depois de um tempo, o processo cai para menos de 10% (geralmente 4-8% da memória), mas toda a funcionalidade do outro servidor ainda é lenta.
Observe que meus números sobre a quantidade de memória que o processo está consumindo estão vindo de cima.
bash -c 'ulimit -m 76800; convert -density 288 ./document.pdf -resize 25% ./pages/page_%03d.png'
Alguém tem alguma idéia de como eu posso executar este comando sem consumir toda a minha memória?
Obrigado!
Tags bash memory ulimit imagemagick linux