Rails 4.2: Problemas com falta de memória para compilar a asset pipeline
Você já tentou compilar a asset pipeline em uma máquina Ubuntu e recebeu a mensagem abaixo?
Poisé! Isso significa que o seu servidor não possui memória suficiente para executar a operação. Mas não se desespere, pois isso tem jeito.
Provavelmente o seu servidor não está com o swap habilitado.
Eu descobri isso montando um VPS com 512Mb RAM na Digital Ocean. Com o Rails 4.0 eu conseguia compilar na boa. Ao atualizar o projeto para o Rails 4.2, o problema se revelou.
No próprio site da Digital Ocean possui um excelente tutorial ensinando como fazer.
Como eu achei bem útil a informação, vou aproveitar a oportunidade e traduzí-lo para o português.
Algumas considerações sobre a tradução
Você lerá coisas como “arquivo de swap”. Eu preferi traduzir desta maneira. Apesar de já ter ouvido outros técnicos usarem o termo “arquivo de troca”.
Você verá também a autora falando sobre Virtual Private Server ou VPS – ela está se referindo às máquinas montadas na Digital Ocean, mas nada impede de você usar essas dicas num servidor físico.
Como adicionar swap no Ubuntu 12.04 / 14.04
Sobre Linux Swapping
A RAM do Linux é composta por pedaços de memórias chamados de páginas. Para liberar páginas de RAM, um “linux swap” podemo ocorrer e uma página de memória é copiada da RAM para um espaço pré-configurado no hard disk. Linux swaps permitem um sistema disponibilizar mais memória do que estava originalmente fisicamente disponível.
No entanto, sawpping tem suas desvantagens. Porque os hard disks são muito mais lentos que a memória RAM, a performance do servidor privado virtual (aqui o autor está falando de um VPS, mas pode ser qualquer servidor) pode cair consideravelmente. Adicionalmente, limpeza de swap podem acontecer se o sistema for inundado por muitos arquivos sendo trocados e destrocados.
Verificar o espaço de Swap
Antes de procedermos com a configuração do arquivo de swap, nós precisamos nos certificar que nenhum arquivo de swap está habilitado no VPS (servidor), dando uma olhada no sumário de uso do swap.
Uma lista vazia irá confirmar que você não tem arquivos de swap habilitados:
Verificar o sistema de arquivo
Após nós sabermos que nós não temos um arquivo de swap habilitado no servidor virtual, nós podemos verificar quanto espaço nós temos on servidor com o comando df
. O arquivo de swap irá ocupar 256MB – como estamos usando somente em torno de 8% do /dev/sda, nós podemos proceder.
Criar e habilitar the arquivo de Swap
Agora é hora de criar o arquivo de swap em si usando o comando dd
:
“of=/swapfile” designa o nome do arquivo. Neste caso o nome é swapfile
.
Subsequentemente nós vamos preparar o arquivo de swap criando uma área de swap no linux:
Teremos como resultado:
Finalizaremos ativando o arquivo de swap:
Você então será capaz de ver o novo arquivo de troca quando você visualizar o sumário de swap.
O arquivo permanecerá no servidor privado virtual até que a máquina seja reiniciada. Você pode se certificar que o swap será permanente adicionando-o no arquivo fstab
.
Abra o arquivo:
Cole a seguinte linha:
“Swappiness” no arquivo deve ser configurado para 10. O pulo deste passo pode resultar em uma performance pobre, ao passo que configurá-lo para 10 irá fazer o swap agir como um buffer de emergência, prevenindo crashes por falta de memória.
Você pode fazer isso com os seguintes comandos:
Para prevenir o arquivo de ser “lido pelo mudo”, você deveria configurar as permissões corretas para o arquivo de swap:
Post original:
https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-12-04
Autor Original:
Etel Sverdlov
Traduzido por Cezinha Anjos.