Conforme eu desenvolvo em Scala / Play / Mongo, fico confortável em manter meu próprio servidor. Há cerca de um mês, obtive um pequeno VPS (2 GB de RAM) da DigitalOcean e o preparei como meu ambiente host, instalando os seguintes pacotes como de costume:
- Git
- Nginx (como servidor front-end)
- Virtualmin
- DNS
- Servidor de Email
- Apache
- MySQL
- RoundCube (como webmail)
- MongoDB
- OpenJDK 7
Como você pode imaginar, eles precisariam de uma quantidade razoável de RAM.
Eu também tenho um script de publicação em minha máquina local que compila o código-fonte (usando stage
), envia por push para o repositório especial no servidor de implantação (usando git
) e reinicia o servidor embutido do aplicativo Play (usando ssh
).
Implantei vários aplicativos da mesma forma com sucesso, mas desta vez tive um problema. Havia três aplicativos do Play em execução neste servidor. O problema é que os aplicativos param de rodar de vez em quando com um hs_err_pid*.log
arquivo que indica que a memória é insuficiente! Pior do que isso, o servidor da Web do Play não era iniciado após a publicação.
Hoje, descobri acidentalmente que a troca de servidor é zero. Este foi o principal motivo do erro de memória insuficiente. Depois de adicionar o arquivo de troca, o servidor e os aplicativos da web estão funcionando perfeitamente.
Não preciso que todos os processos em execução sejam extremamente rápidos. Além disso, quanto mais o processo é usado, mais prioridade ele recebe.
Conclusão
Sempre verifique a troca de servidor antes de qualquer outra ação em seu VPS.