VPS com 8 GB de RAM: vários projetos, 1C e servidores de jogos numa só máquina
Oito gigabytes costumam ser escolhidos quando os servidores pequenos ficaram numerosos demais e dá vontade de reuni-los num só, ou quando uma tarefa específica exige memória de verdade: 1C com banco para vários usuários, servidor com mods, GitLab, runners de CI. Nesse volume, a pergunta principal já não é «vai caber?», e sim «como dividir a memória entre os serviços para que um não sufoque os outros».
O que se roda com 8 GB
- Consolidação. Cinco a dez sites num Nginx compartilhado e um único MySQL, além de bots e tarefas cron que antes viviam em VPS separados de 1–2 GB. Um único banco com buffer de 2–3 GB funciona com mais eficiência que cinco pequenos.
- 1C:Enterprise. Base em arquivo com publicação web ou versão cliente-servidor com PostgreSQL para 5–10 usuários: o cluster 1C ocupa 2–4 GB, e o banco, mais 2–3. Detalhes sobre licenças e versões da plataforma na seção VPS para 1C.
- GitLab para uma equipe pequena: o mínimo oficial é 4 GB, mas com runner, registro de contêineres e Prometheus fica confortável a partir de 8 GB. Veja VPS para GitLab.
- Servidores de jogos: Minecraft com modpack para 20–40 jogadores, um servidor de Rust ou ARK para uma comunidade pequena, alguns servidores de CS2 ao mesmo tempo. A escolha por jogo está na página VPS para servidor de jogos.
- Windows Server como servidor de terminal para 3–5 funcionários com programas de escritório.
8 GB é demais para um único site em CMS, um único bot ou uma VPN corporativa: essas tarefas vivem por anos com 2 GB, e a memória extra simplesmente vai para o cache de arquivos. Ficará pouco quando o banco de dados passar de 10–15 GB e deixar de caber no buffer, quando surgir um Elasticsearch no servidor ou quando os usuários do 1C passarem de quinze. O sinal é o swap ocupado de forma constante e o tempo de resposta crescendo nos horários de pico, embora o processador não esteja carregado.
Como dividir a memória entre os serviços
O erro mais comum com 8 GB é cada serviço estar configurado «para o servidor inteiro». MySQL com a recomendação de «buffer de 70% da memória», Java com heap padrão e PHP-FPM com uma centena de processos parecem razoáveis separadamente; juntos, garantem um OOM. Planeje o orçamento com antecedência:
- Deixe 1 GB para o sistema e o cache de arquivos.
- Dê ao banco uma fatia fixa:
innodb_buffer_pool_sizeoushared_buffers— pelo tamanho dos dados quentes, e não por uma fórmula baseada na memória total. - Para aplicações Java e servidores de jogos, defina
-Xmxcom 25% de folga para a memória fora do heap. - Para contêineres Docker, defina
mem_limit; para serviços systemd,MemoryMax=no arquivo de unidade. Assim, num vazamento, o kernel mata o culpado, e não o banco.
Um swap de 2–4 GB continua necessário como seguro, mas mantenha o vm.swappiness baixo: um servidor de jogos que foi para o swap começa a travar para todos os jogadores de uma vez.
Núcleos, disco e a honestidade do plano
A combinação típica é 8 GB com 4 núcleos virtuais e 80–160 GB de disco. Para servidores de jogos e para o 1C, a frequência de um núcleo importa mais que a quantidade, enquanto GitLab e CI, ao contrário, gostam de paralelismo. Nesse volume, pela primeira vez a diferença entre planos do mesmo tamanho fica bem visível: os 8 GB mais baratos muitas vezes são vendidos em nós com sobrealocação, onde a memória é formalmente sua, mas o processador e o disco são divididos com dezenas de vizinhos. O sinal é um steal alto no top quando a sua carga está parada.
Memória garantida versus burst
Planos de contêiner OpenVZ e LXC de 8 GB às vezes são montados como 4 GB garantidos e 4 GB de burst. Para um conjunto de sites, isso é tolerável; para 1C, banco de dados e servidor de jogos, não: eles precisam de memória que não seja retirada no pico da noite. Para essas tarefas, escolha um VPS com KVM, em que o volume é alocado inteiro à máquina virtual. Mas mesmo no KVM o provedor pode usar o driver balloon: verifique lsmod | grep virtio_balloon — o módulo por si só não é um problema, mas se o MemTotal diminui com o tempo, estão tirando memória da máquina.
Como verificar o servidor depois da compra
free -h: MemTotal em torno de 7,7–7,8 GB é normal para KVM.stress-ng --vm 2 --vm-bytes 6G --timeout 120s— alocar todo o volume não deve resultar em processos mortos nem em travamento do SSH.sysbench memory run— velocidade da memória. Um resultado muito baixo em comparação com outros planos é motivo para suspeitar de um nó sobrecarregado.- Depois de um dia de funcionamento, veja
sar -rou os gráficos de monitoramento: assim se vê quanta memória os seus serviços realmente ocupam e se não é hora de cortar excessos.