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

Como corrigir o erro 'Address already in use' (porta em uso) no servidor de MU Online

Aprenda a identificar qual processo está ocupando a porta do ConnectServer ou GameServer, encerrar esse processo com segurança e evitar que o erro 'Address already in use' volte a travar a inicialização do seu servidor de MU Online.

GA Gabriel · Atualizado em 23 fev 2026 · ⏱ 13 min de leitura
Resposta rápida

O erro "Address already in use" (ou, em algumas builds, "bind failed", "porta já está em uso") aparece quando o ConnectServer, JoinServer ou GameServer tenta abrir (bind) uma porta TCP que já está sendo ocupada por outro processo — seja uma instância anterior do próprio emulador que não fechou direi

O erro "Address already in use" (ou, em algumas builds, "bind failed", "porta já está em uso") aparece quando o ConnectServer, JoinServer ou GameServer tenta abrir (bind) uma porta TCP que já está sendo ocupada por outro processo — seja uma instância anterior do próprio emulador que não fechou direito, seja outro programa qualquer usando a mesma porta por coincidência. Diferente de um erro de configuração, esse é um erro de estado do sistema operacional, e a solução envolve identificar e liberar o processo que está segurando a porta antes de tentar subir o servidor novamente. Este tutorial mostra como diagnosticar, encerrar o processo com segurança e prevenir a recorrência.

Por que esse erro acontece

Todo processo que abre uma porta de rede (bind) reserva aquela porta exclusivamente para si enquanto estiver rodando. Se o GameServer.exe de uma sessão anterior travou, foi fechado à força pelo Gerenciador de Tarefas, ou o computador reiniciou sem um encerramento limpo, é possível que o processo antigo continue "vivo" em segundo plano (ou que o sistema operacional ainda não tenha liberado totalmente a porta, no estado TCP TIME_WAIT), impedindo a nova instância de usar a mesma porta.

Sintomas e onde aparecem

Onde aparece o erroMensagem típicaProcesso afetado
Console do GameServer ao iniciar"bind failed" / "Address already in use"GameServer.exe
Console do ConnectServer ao iniciar"Could not bind socket on port 44405"ConnectServer.exe
Log de erro do MySQL"Port 3306 already in use"mysqld.exe
Erro genérico do Windows"Only one usage of each socket address is normally permitted"Qualquer serviço TCP

Passo 1 — Identificar qual processo está usando a porta

No Windows, use netstat combinado com findstr para localizar o PID (identificador do processo) que ocupa a porta em questão:

netstat -ano | findstr :44405
netstat -ano | findstr :55901

A última coluna do resultado é o PID. Anote-o para o próximo passo.

Passo 2 — Descobrir o nome do processo pelo PID

Com o PID em mãos, identifique a qual programa ele pertence antes de encerrar qualquer coisa às cegas:

Get-Process -Id <PID>

Isso evita o erro clássico de encerrar um processo do sistema ou de outro programa que, por coincidência, esteja usando aquela porta.

Passo 3 — Encerrar o processo antigo com segurança

Se o processo identificado for de fato uma instância antiga do próprio emulador (ex.: GameServer.exe travado), encerre-o:

Stop-Process -Id <PID> -Force

Prefira sempre confirmar o nome do processo (Passo 2) antes de usar -Force, especialmente em servidores compartilhados com outros serviços.

Passo 4 — Aguardar o TIME_WAIT do TCP, se aplicável

Se netstat mostrar a porta em estado TIME_WAIT (e não LISTENING) e nenhum processo aparecer associado a ela, o sistema operacional ainda está no período de espera padrão do protocolo TCP após o fechamento da conexão anterior (geralmente entre 30 segundos e 4 minutos, dependendo da configuração do Windows). Nesse caso, não há processo para matar — basta aguardar, ou reiniciar o serviço de rede.

netstat -ano | findstr TIME_WAIT

Passo 5 — Configurar reuso de socket no emulador (SO_REUSEADDR)

Emuladores mais recentes (algumas builds de IGCN e MuEMU) permitem habilitar reuso imediato de endereço/porta na configuração do servidor, evitando o problema de TIME_WAIT em reinicializações frequentes durante desenvolvimento e testes:

[Network]
ReuseAddress = 1

Nem todo emulador expõe essa opção — verifique a documentação da build específica que você usa.

Passo 6 — Separar portas de ambiente de teste e produção

Um erro comum em equipes com mais de um administrador é rodar uma segunda instância do emulador (ambiente de teste/homologação) usando exatamente as mesmas portas do ambiente de produção na mesma máquina. Configure um conjunto de portas dedicado para testes:

AmbienteConnectServerGameServer
Produção4440555901
Teste/Homologação4441555911

Passo 7 — Adotar um encerramento limpo do servidor

Sempre que for parar o servidor para manutenção, use o comando de shutdown do próprio emulador (muitos têm um comando de console como shutdown ou /quit) em vez de fechar a janela do console no X ou matar o processo pelo Gerenciador de Tarefas. Um encerramento limpo fecha os sockets corretamente e libera a porta de forma imediata, evitando o problema na próxima inicialização.

Passo 8 — Rodar como serviço do Windows para maior estabilidade

Para servidores de produção, considere rodar o ConnectServer e o GameServer como serviços do Windows (usando uma ferramenta como NSSM — Non-Sucking Service Manager) em vez de executáveis abertos manualmente em janelas de console. Serviços têm ciclo de vida mais previsível e reduzem a chance de processos "fantasma" ficarem presos após quedas de energia ou reinicializações inesperadas.

Erros comuns e soluções

SintomaCausa provávelSolução
"Address already in use" ao iniciar o GameServerInstância anterior ainda rodandoIdentifique o PID com netstat e encerre o processo
Porta aparece em TIME_WAIT sem processo associadoEspera padrão do protocolo TCPAguarde o tempo padrão ou habilite reuso de socket
Erro volta toda vez que o servidor reiniciaEncerramento sempre feito de forma forçadaUse o comando de shutdown limpo do emulador
Dois ambientes (teste e produção) conflitamMesma porta usada nas duas instânciasSepare as portas por ambiente
MySQL não sobe com erro de portaOutro serviço MySQL já rodando na 3306Pare o serviço duplicado ou mude a porta de um deles
Erro só depois de queda de energiaProcessos não finalizados corretamenteMigre para rodar como serviço do Windows (NSSM)

Checklist de resolução

  • PID ocupando a porta identificado via netstat.
  • Nome do processo confirmado antes de encerrar.
  • Processo antigo encerrado ou TIME_WAIT aguardado.
  • Reuso de socket habilitado na configuração, se disponível.
  • Portas de teste e produção separadas.
  • Encerramento do servidor sempre feito pelo comando de shutdown limpo.
  • Serviços críticos (GameServer/ConnectServer) migrados para rodar como serviço do Windows, se em produção.

Depois de eliminar os conflitos de porta, revise também as regras de firewall associadas a cada porta liberada, já que os dois problemas costumam aparecer juntos em migrações de servidor — veja o tutorial de criação de servidor de MU Online para uma visão completa da infraestrutura recomendada.

Perguntas frequentes

Por que esse erro aparece do nada, se ontem o servidor subiu normalmente?

Geralmente porque uma instância anterior do GameServer ou ConnectServer não foi encerrada corretamente (crash, queda de energia, fechamento forçado da janela) e ficou um processo 'fantasma' ainda segurando a porta em memória, mesmo sem estar respondendo a nada.

Posso simplesmente mudar a porta do servidor em vez de encerrar o processo antigo?

Pode, e às vezes é a solução mais rápida em produção, mas isso só contorna o sintoma. Se o processo fantasma continuar rodando, ele vai consumir memória e pode causar comportamento inconsistente no banco de dados (conexões duplicadas). O ideal é sempre identificar e encerrar o processo, não só trocar de porta.

O TIME_WAIT do TCP pode causar esse erro mesmo sem processo nenhum rodando?

Sim. Depois que uma conexão TCP é fechada, o sistema operacional mantém a porta em estado TIME_WAIT por um tempo (geralmente 30 a 240 segundos) antes de liberá-la totalmente. Se você tentar religar o servidor imediatamente após um encerramento, pode ver esse erro até sem nenhum processo ativo — a solução é aguardar ou configurar reuso de socket (SO_REUSEADDR) no emulador.

Como evito que isso aconteça toda vez que eu reinicio o servidor?

Use sempre um encerramento limpo do serviço (comando de shutdown do próprio emulador ou parar o serviço do Windows, se estiver rodando como serviço) em vez de fechar a janela do console ou matar o processo via Gerenciador de Tarefas com força. Um shutdown limpo libera a porta imediatamente.

Esse erro pode ser causado por dois servidores diferentes tentando usar a mesma porta?

Sim, é comum quando o administrador roda testes em uma segunda instância do emulador (ambiente de teste) usando a mesma configuração de porta do ambiente de produção. Sempre use portas diferentes para instâncias de teste e produção.

GA
Editor de guias e builds

Gabriel cobre gameplay, builds de classes, PvP e progressão. Testa cada estratégia em servidor antes de publicar.

Continue lendo

Artigos relacionados