Criando Arquivo De SWAP

Aprenda a criar um arquivo de SWAP e melhore a estabilidade de seus servidores hospedados na DigitalOcean. Turbine seu Linux com essa super dica.

É normal enfrentarmos problemas com nossas droplets se não configurarmos um arquivo de SWAP corretamente, já que por padrão, ao se criar um novo servidor o SWAP não é gerado automaticamente. A DigitalOcean deixa por conta do desenvolvedor as configurações básicas de sua droplet, isso garante maior flexibilidade e opções ao desenvolvedor. Entre essas configurações básicas a nosso cargo, está a criação do arquivo de SWAP, que muitos se esquecem de realizar. Por isso nesse artigo vamos aprender como criar e dimensionar um arquivo de SWAP corretamente. Mesmo que você seja um novato no mundo GNU/Linux, no final deste tutorial, você terá seu arquivo SWAP funcionando perfeitamente.

Primeiramente vamos entender os problemas que possamos vir a ter caso o SWAP não esteja configurado corretamente, e em seguida, o que é o SWAP propriamente dito. Desta forma se nos depararmos com um comportamento anormal em nossos servidores, podemos diagnosticá-los corretamente e em seguida proceder a correção de forma fácil.

Para começar vamos descrever uma situação-problema como. Digamos que você possui um servidor (droplet) no qual o banco de dados está apresentando erros. Tudo funcionava perfeitamente quando você criou o seu servidor, mas com o passar do tempo o banco de dados (MySQL por exemplo) para de funcionar e em consequência a sua aplicação para junto. Simplesmente o processo do MySQL “morre” sem maiores explicações. Quando você reinicia o seu servidor, tudo volta a funcionar corretamente, porém em algum tempo depois, o sistema volta a finalizar o processo do banco de dados misteriosamente.

Criando Arquivo De SWAP

O problema relatado no parágrafo anterior é bastante comum e acontece devido à falta de memória em seu servidor. Quando o seu banco de dados precisa de mais memória, ele solicita ao sistema operacional, que como já está praticamente sem memória, não consegue atender à solicitação do banco de dados. Sem recursos para poder funcionar corretamente o processo do banco de dados acaba travando e “morrendo” misteriosamente.

Como o SWAP funciona?

Com o relato anterior fica claro uma coisa, manter o servidor sempre com memória RAM sobrando é algo indispensável, porém como balancear custos com os recursos realmente gastos? Não adianta aumentar muito a memória de meu servidor e pagar fortunas. Também não adianta manter os recursos no mínimo e não atender picos de demanda, terminando assim com meu site fora do ar. O segredo aqui é balancear as coisas, e isso pode ser feito através do arquivo de SWAP.

O arquivo de SWAP é nada mais que uma área de troca, onde a memória principal (RAM) ociosa pode ser armazenada para quando for novamente necessária. Esse armazenamento ocorre em disco rígido, já que ele possui muito mais espaço que a memória RAM (geralmente). Assim quando o sistema fica sem memória, ele recorre ao SWAP, que guarda o conteúdo da memória mais antigo em disco e recicla seu espaço para que um novo aplicativo possa utilizar. Resumindo o SWAP é uma área de espera, onde quem não está utilizando a memória RAM fica aguardando a sua vez de utilizá-la.

A grande vantagem da DigitalOcean sobre os demais hosts existentes no mercado é o seguinte – seus servidores contam com discos SSDs no lugar dos discos rígidos comuns. Isso significa que a velocidade de leitura e escrita e dezenas de vezes superior ao disco rígido comum. A grande desvantagem da SWAP é essa, a área de troca é geralmente lenta, pois os discos rígidos são lentos ao serem comparados a memória RAM, porém na DigitalOcean isso não é verdade, pois até mesmo a área de SWAP é extremamente rápida.

Criando um arquivo de SWAP

Para criar um arquivo de SWAP é muitos simples. Primeiramente vamos criar um arquivo (cheio de zeros) no qual montaremos nossa partição de SWAP. O tamanho deste arquivo será de 500MB, o que atende a maioria das aplicações. Existe bastante discussão sobre o tamanho ideal de uma partição de SWAP, porém no mundo moderno, a maioria dessas discussões são infundadas. Execute o comando abaixo e crie um arquivo de 500MB para sua área de SWAP, raramente encontrará problemas como esse valor.

sudo dd if=/dev/zero of=/swapfile bs=1M count=500

O comando acima criará um arquivo na raiz do sistema chamado swapfile, esse arquivo será a nossa área de troca. Para estabelecer a área de SWAP nesse arquivo, execute o comando abaixo.

sudo mkswap -f /swapfile

Para que nosso arquivo funcione corretamente precisamos definir as permissões corretas para ele. Execute o comando abaixo para que as permissões sejam definidas corretamente.

sudo chmod 600 /swapfile

Agora precisamos editar o arquivo /etc/fstab para adicionar o nosso arquivo de SWAP. Para isso execute o comando abaixo:

sudo nano /etc/fstab

Copie e cole a linha abaixo no final do arquivo que você acabou de abrir para edição.

/swapfile none swap sw 0 0

Depois de inserir a linha acima, pressione Ctrl+x para sair do editor de texto e, quando solicitado, pressione a tecla Y e em seguida o Enter para salvar as alterações

Vamos ativar o nosso arquivo de SWAP com o comando abaixo:

sudo swapon -a

Pronto o seu arquivo de SWAP está funcionando perfeitamente. Recomendo realizar o reboot do servidor para que todos os aplicativos já possam tirar proveito dessas alterações.

Para testar digite o comando abaixo. Se no campo swap aparecer o valor de 500MB (ou bem próximo a ele), nosso SWAP está funcionando corretamente.

free –h

Conclusão: Para você que sofre com queda em seus serviços e não consegue identificar a causa, verifique se seu arquivo de SWAP está funcionando corretamente. Caso identifique que o SWAP não exista, use esse tutorial para criá-lo e melhorar a estabilidade de seu servidor.

Cadastre-se na DigitalOcean com Descontos!

Cadatre-se hoje mesmo na DigitalOcean e ganhe um cupom de $10 para iniciar os testes na plataforma

Renato Tavares

Analista de Sistemas

Sou formado em Análise de Sistemas e trabalho com Linux e programação há 10 anos, sou especialista em servidores WEB e apaixonado pela ferramenta que a DigitalOcean construiu.