O maior portal de MU Online do Brasil — desde 2003
Tutorial Intermediário Infra

Escalar verticalmente vs. horizontalmente: como crescer seu servidor de MU Online

Entenda quando escalar seu servidor de MU Online verticalmente (mais recursos em uma máquina) ou horizontalmente (mais máquinas/instâncias), com critérios de decisão, custos, riscos e um plano prático de migração conforme a base de jogadores cresce.

RO Rodrigo · Atualizado em 29 nov 2014 · ⏱ 15 min de leitura
Resposta rápida

Todo servidor de MU Online que cresce enfrenta a mesma pergunta: quando parar de simplesmente "colocar mais hardware" na mesma máquina e começar a distribuir a carga entre várias? Escalar verticalmente (mais CPU, RAM e disco em uma única máquina) e escalar horizontalmente (mais máquinas ou instância

Todo servidor de MU Online que cresce enfrenta a mesma pergunta: quando parar de simplesmente "colocar mais hardware" na mesma máquina e começar a distribuir a carga entre várias? Escalar verticalmente (mais CPU, RAM e disco em uma única máquina) e escalar horizontalmente (mais máquinas ou instâncias dividindo o trabalho) resolvem problemas diferentes, custam de formas diferentes e trazem riscos diferentes. Decidir errado — seja escalando horizontal cedo demais, seja insistindo em vertical além do ponto de retorno — desperdiça orçamento e ainda deixa o servidor lento. Este tutorial explica os dois caminhos, como diagnosticar qual gargalo você realmente tem, e como planejar a transição sem quebrar o servidor em produção.

O que é escalonamento vertical

Escalar verticalmente significa aumentar a capacidade da mesma máquina: mais núcleos de CPU, mais memória RAM, disco mais rápido (SSD NVMe em vez de SATA), ou uma instância de nuvem em um tier maior. Para um servidor de MU Online típico (ConnectServer, GameServer, banco de dados, todos ou parte na mesma máquina), esse é o primeiro e mais simples caminho de crescimento, e resolve bem a maioria dos gargalos até algumas centenas de jogadores simultâneos.

O que é escalonamento horizontal

Escalar horizontalmente significa dividir a carga entre múltiplas máquinas ou instâncias: um GameServer adicional para outro canal/sub-servidor, um banco de dados replicado, ou até serviços auxiliares (site, launcher, sistema de pagamento) rodando fora da máquina principal do jogo. É mais complexo de configurar e manter, mas remove o teto físico de uma única máquina e melhora a resiliência — se uma instância cai, as demais continuam no ar.

Como diagnosticar o gargalo antes de decidir

Antes de escolher a direção, identifique onde está o problema:

Sintoma observadoGargalo provávelDireção indicada
Lag geral em horário de pico, CPU da máquina em 90%+Processamento insuficiente (CPU)Vertical (mais núcleos/CPU mais rápida)
Travamentos ao logar múltiplos jogadores ao mesmo tempoBanco de dados sob concorrênciaVertical (SSD, mais RAM para cache) ou horizontal (réplica de leitura)
Lentidão só em determinado mapa/evento cheioMuitos jogadores/monstros na mesma instância de mapaHorizontal (mais canais/sub-servidores)
Site/loja lento mas o jogo em si está normalServiço web competindo por recursos com o jogoHorizontal (separar site do servidor de jogo)
Uso de RAM constante, sem pico de CPU, mas travando mesmo assimMemória insuficiente para o volume de jogadoresVertical (mais RAM)

Rodar ferramentas de monitoramento (uso de CPU, RAM, I/O de disco e latência de rede) por pelo menos uma semana, cobrindo horários de pico e eventos, é o que separa uma decisão embasada de um "achismo" caro.

Custos comparados: vertical vs. horizontal

CritérioVerticalHorizontal
Custo inicialMenor (uma máquina maior)Maior (múltiplas máquinas/instâncias)
Complexidade de configuraçãoBaixa a médiaMédia a alta (balanceamento, sincronização)
Teto de crescimentoLimitado pelo hardware máximo disponívelPraticamente ilimitado (adicionar mais nós)
Resiliência a falhasBaixa (ponto único de falha)Alta (outras instâncias seguem no ar)
Tempo de implementaçãoRápido (upgrade de plano/hardware)Mais lento (requer arquitetura e testes)

Para a maioria dos servidores de MU em fase de crescimento (de dezenas a poucas centenas de jogadores simultâneos), o vertical ainda entrega o melhor custo-benefício. Horizontal se torna necessário quando o servidor já é grande o suficiente para justificar a complexidade extra.

Separando serviços antes de separar máquinas

Um passo intermediário, muitas vezes esquecido, é separar logicamente os serviços antes de separar fisicamente: rodar ConnectServer, GameServer, banco de dados e o site em processos ou containers distintos, mesmo que ainda na mesma máquina. Isso facilita imensamente uma futura migração horizontal, porque cada serviço já está isolado e pode ser movido para outra máquina sem reescrever configuração do zero.

Escalando o banco de dados

O banco de dados costuma ser o gargalo mais sutil, porque uma máquina "parece" ter CPU e RAM de sobra enquanto o banco sofre com locks e queries lentas. Antes de escalar horizontalmente com réplicas, esgote as otimizações verticais mais baratas: índices adequados nas tabelas de personagem/inventário, ajuste de cache de memória do banco, e disco SSD dedicado para os arquivos de dados. Só depois disso considere réplicas de leitura ou sharding.

Escalando o GameServer com múltiplos canais

A forma mais comum de escalonamento horizontal em MU é adicionar sub-servidores/canais adicionais no mesmo mundo, cada um rodando sua própria instância de GameServer conectada ao mesmo ConnectServer e banco de dados. Isso distribui a população de jogadores sem duplicar personagens ou economia, mas exige que o ConnectServer e o balanceamento de conexão estejam bem configurados para distribuir os jogadores de forma equilibrada entre os canais.

Plano de migração sem downtime longo

  1. Implemente monitoramento antes de qualquer migração, para ter uma linha de base de comparação.
  2. Separe serviços logicamente (processos distintos) antes de separar fisicamente.
  3. Escale verticalmente o serviço mais crítico (geralmente o banco de dados) até esgotar o custo-benefício.
  4. Quando decidir por horizontal, comece pelo serviço mais fácil de isolar (site/loja), não pelo core do jogo.
  5. Adicione um canal/sub-servidor adicional em horário de baixo movimento e monitore de perto nas primeiras 48 horas.
  6. Só depois disso considere réplica de banco de dados ou balanceamento mais sofisticado.

Quando NÃO escalar (o problema é outro)

Muitos "problemas de capacidade" na verdade são problemas de configuração: queries sem índice, eventos mal otimizados rodando cálculos desnecessários a cada tick, ou logs excessivos gravando em disco lento. Escalar (em qualquer direção) sem corrigir esses problemas apenas adia o sintoma e aumenta o custo — sempre descarte causas de configuração antes de investir em mais hardware.

Erros comuns e soluções

SintomaCausa provávelSolução
Escalou vertical e nada melhorouGargalo real era configuração/query, não hardwareRevise índices, queries e configuração antes de escalar de novo
Escalou horizontal e ficou mais lentoSincronização mal configurada entre instânciasRevise a arquitetura de comunicação entre GameServers/banco
Custo de infraestrutura disparou sem crescimento de jogadoresEscalonamento antecipado, sem diagnóstico prévioVolte ao monitoramento e dimensione pelo uso real
Jogadores distribuídos de forma desigual entre canaisBalanceamento de conexão mal configuradoAjuste a lógica de distribuição no ConnectServer
Falha em uma instância derruba o jogo todoArquitetura ainda monolítica apesar de "parecer" escaladaSepare serviços logicamente antes de contar com resiliência horizontal

Checklist de escalonamento

  • Monitoramento de CPU, RAM, disco e rede implementado por pelo menos uma semana.
  • Gargalo real identificado (CPU, banco, mapa cheio, ou serviço web).
  • Otimizações de configuração/query aplicadas antes de escalar hardware.
  • Serviços separados logicamente (processos/containers distintos).
  • Decisão vertical vs. horizontal tomada com base em dados, não em achismo.
  • Migração testada em horário de baixo movimento antes de valer para todos.
  • Plano de rollback definido caso a migração cause instabilidade.

Depois de definida a estratégia de escalonamento, vale revisar também a camada de rede que entrega essa capacidade extra aos jogadores — leia o tutorial sobre como escolher datacenter para baixa latência para garantir que o investimento em infraestrutura realmente chegue como uma experiência melhor ao jogador final.

Perguntas frequentes

Qual escalar primeiro: vertical ou horizontal?

Quase sempre vertical primeiro. É mais simples, mais barato no início e resolve a maioria dos gargalos de um servidor de MU pequeno a médio (poucas centenas de jogadores simultâneos). Migre para horizontal apenas quando o vertical atingir o teto de custo-benefício ou limite físico de hardware.

MU Online suporta múltiplos GameServers para o mesmo mundo?

A maioria dos emuladores modernos suporta múltiplos GameServers conectados ao mesmo ConnectServer e banco de dados, dividindo jogadores entre eles (às vezes por sub-servidor/canal). Isso é a base do escalonamento horizontal, mas exige atenção a sincronização de dados e latência entre serviços.

Escalar horizontalmente é mais caro que vertical?

No curto prazo, geralmente sim — múltiplas máquinas custam mais que uma única máquina maior. No longo prazo, para uma base grande de jogadores, horizontal costuma ser mais barato e mais resiliente, pois evita pagar por hardware de topo de linha com preço desproporcional ao ganho.

O que acontece se eu escalar errado (horizontal cedo demais)?

Você paga o custo de complexidade (sincronização entre servidores, balanceamento de carga, mais pontos de falha) sem o benefício, porque o problema real ainda era otimização de query ou de configuração, não falta de capacidade bruta. Diagnostique o gargalo antes de escolher a direção.

Como sei que atingi o teto do escalonamento vertical?

Quando dobrar CPU/RAM da máquina não reduz mais a latência ou os travamentos, e o gargalo passa a ser rede, I/O de disco compartilhado ou concorrência de banco de dados que uma única máquina não resolve — é o sinal de migrar para horizontal.

RO
Fundador e editor-chefe

Rodrigo mantém o ViciadosMU desde os primórdios do portal. Especialista em criação e administração de servidores de MU Online, história do jogo e a evolução das seasons — escreveu boa parte do acervo antes de 2024.

Continue lendo

Artigos relacionados