O Mastodon retorna um erro 503 Service Unavailable quando você tenta criar uma nova conta e o servidor não consegue processar a solicitação de registro. Esse erro significa que o servidor web da instância está ativo, mas não consegue concluir o fluxo de cadastro devido a um problema no backend. As causas mais comuns incluem um pool de conexões do banco de dados cheio, uma fila de jobs em segundo plano travada e um mecanismo de limitação de taxa que bloqueia novos registros temporariamente. Este artigo explica as causas técnicas por trás do erro 503 durante o cadastro e fornece as etapas para diagnosticar e resolver cada cenário.
Principais Conclusões: Erro 503 no Mastodon ao se Cadastrar
- Inspeção da fila do Sidekiq: Uma fila de jobs do Sidekiq travada impede o envio de e-mails de confirmação e gera uma resposta 503.
- Esgotamento do pool de conexões do banco de dados: Quando todas as conexões PostgreSQL estão em uso, novas solicitações de registro falham com erro 503.
- Limitação de taxa pelo Rack::Attack: Uma limitação de taxa agressiva pode bloquear tentativas repetidas de cadastro e retornar 503 em vez do código 429.
Por que o Mastodon Retorna um Erro 503 ao Tentar se Registrar
O Mastodon usa uma arquitetura multiprocesso que combina um servidor web como Puma, um processador de jobs em segundo plano chamado Sidekiq e um banco de dados PostgreSQL. Quando você envia um formulário de registro, o servidor web recebe a solicitação, valida os dados e enfileira um job em segundo plano para enviar um e-mail de confirmação. O servidor web retorna imediatamente uma resposta ao navegador enquanto o Sidekiq processa o job de e-mail de forma assíncrona. Se algum componente dessa cadeia estiver sobrecarregado ou mal configurado, o servidor web não consegue concluir a solicitação e responde com um status 503 Service Unavailable.
O erro 503 indica especificamente que o servidor está temporariamente incapaz de lidar com a solicitação. Diferente de um erro 500 Internal Server Error, que sugere um bug no código, o 503 geralmente aponta para esgotamento de recursos ou um limite de configuração. Os três gatilhos mais frequentes durante o cadastro são uma fila do Sidekiq travada, um pool de conexões do banco de dados cheio e regras de limitação de taxa que bloqueiam o endpoint de registro.
Fila do Sidekiq Travada
O Sidekiq processa jobs de uma fila baseada em Redis. Se o processo do Sidekiq parou, travou ou está com pouca memória, o job de e-mail de confirmação permanece na fila indefinidamente. O servidor web pode atingir o tempo limite aguardando uma confirmação do job e retornar 503. Esse cenário é comum em instâncias menores onde os administradores executam o Sidekiq com memória limitada ou sem um supervisor de processo como systemd.
Esgotamento do Pool de Conexões do Banco de Dados
O servidor web Puma do Mastodon mantém um pool de conexões com o banco de dados. O tamanho padrão do pool é de 5 conexões por worker do Puma. Se muitos usuários acessarem a instância simultaneamente, o pool pode se esgotar. Quando uma solicitação de registro chega, o servidor web não consegue adquirir uma conexão com o banco para inserir o novo registro de usuário e responde com um erro 503.
Limitação de Taxa pelo Rack::Attack
O Mastodon inclui o middleware Rack::Attack para limitar tráfego abusivo. Por padrão, ele limita tentativas de cadastro a 5 solicitações por minuto por endereço IP. Quando você excede esse limite, o Rack::Attack retorna um erro 503 em vez do status padrão 429 Too Many Requests. Esse comportamento é intencional para evitar que bots de registro automatizados sobrecarreguem a instância.
Como Diagnosticar e Corrigir o Erro 503 Durante o Cadastro
As etapas a seguir pressupõem que você tenha acesso administrativo à instância do Mastodon. Se você é um usuário comum tentando se cadastrar, entre em contato com o administrador da instância e compartilhe as etapas abaixo para que ele execute os comandos de diagnóstico.
- Verifique se o Sidekiq está em execução
Acesse o servidor via SSH e executesystemctl status mastodon-sidekiq. Se o processo estiver inativo ou falhou, inicie-o comsystemctl start mastodon-sidekiq. Ative-o para iniciar na inicialização comsystemctl enable mastodon-sidekiq. - Inspecione a fila do Sidekiq em busca de jobs travados
Executecd /home/mastodon/live && RAILS_ENV=production bin/tootctl sidekiq stats. Observe os contadores “processed” e “failed”. Se o tamanho da fila estiver crescendo ou os jobs não estiverem sendo processados, reinicie o Sidekiq comsystemctl restart mastodon-sidekiq. - Monitore o uso de conexões do banco de dados
Executesudo -u mastodon psql -d mastodon_production -c "SELECT count(*) FROM pg_stat_activity WHERE state = 'active';". Se a contagem estiver próxima ao tamanho do pool definido emconfig/database.yml, aumente o valor do pool. Por exemplo, alterepool: 5parapool: 10e reinicie o Puma comsystemctl restart mastodon-web. - Revise os logs do Rack::Attack
Verifique o arquivo de log do Mastodon em/home/mastodon/live/log/production.logem busca de linhas contendo “Rack::Attack”. Se você encontrar entradas como “Rack::Attack: throttled POST /auth” para seu endereço IP, o limitador de taxa está bloqueando seu registro. Aguarde um minuto e tente novamente, ou peça ao administrador para aumentar o limite emconfig/initializers/rack_attack.rb. - Verifique a conectividade com o Redis
Executeredis-cli ping. Se a resposta não for “PONG”, reinicie o Redis comsystemctl restart redis-server. O Sidekiq não funciona sem uma conexão Redis ativa.
Se o Mastodon Ainda Mostrar o Erro 503 Após a Correção Principal
Registro Desativado na Instância
O administrador da instância pode ter desativado o registro de novos usuários no painel de administração. Navegue até Preferências > Administração > Configurações do Servidor > Registros e certifique-se de que “Registro aberto” esteja marcado. Se estiver desmarcado, o servidor retornará um erro 503 para todas as tentativas de cadastro.
Tempo Limite do Worker do Puma
Se o tempo limite do worker do Puma for muito baixo, uma solicitação de registro que acione uma consulta lenta ao banco de dados pode ser encerrada antes de ser concluída. Verifique o arquivo config/puma.rb para a configuração worker_timeout. O padrão é 60 segundos. Aumente para 120 segundos se você observar timeouts frequentes durante horários de pico.
Espaço em Disco do Sistema de Arquivos Cheio
O Mastodon grava arquivos de log e arquivos temporários no disco. Se o disco estiver cheio, o servidor web não consegue gravar no log e retorna 503. Execute df -h para verificar o uso do disco. Se alguma partição estiver acima de 90% de uso, libere espaço rotacionando logs com logrotate -f /etc/logrotate.d/mastodon ou excluindo arquivos de mídia antigos com bin/tootctl media remove.
Erro 503 no Mastodon vs Outros Códigos de Status HTTP Durante o Cadastro
| Item | 503 Service Unavailable | 429 Too Many Requests | 500 Internal Server Error |
|---|---|---|---|
| Descrição | Servidor temporariamente não consegue lidar com a solicitação devido a sobrecarga ou manutenção | Cliente enviou muitas solicitações em um determinado período | Servidor encontrou uma condição inesperada que impediu o atendimento da solicitação |
| Causa típica | Fila do Sidekiq travada, pool do banco cheio, limitação de taxa | Limite de throttling do Rack::Attack excedido | Bug no código da aplicação, gems faltando ou configuração corrompida |
| Aparece durante o cadastro | Sim | Sim, mas o Mastodon pode retornar 503 em vez de 429 | Raramente durante o cadastro, mais comum em outros endpoints |
| Resolução | Reiniciar o Sidekiq, aumentar o pool do banco, aguardar reset do limite de taxa | Aguardar um minuto e tentar novamente, ou aumentar o limite de throttling | Verificar logs da aplicação e corrigir o erro subjacente de código ou configuração |
Depois de resolver o erro 503, você pode concluir com sucesso o processo de registro no Mastodon. Comece reiniciando o serviço Sidekiq, pois uma fila de jobs travada é a causa mais frequente. Se o erro persistir, aumente o tamanho do pool de conexões PostgreSQL em config/database.yml e verifique se o espaço em disco não está esgotado. Para administradores que desejam prevenir futuros erros 503, configure monitoramento com uma ferramenta como Prometheus para alertar sobre a profundidade da fila do Sidekiq e o uso de conexões do banco antes que atinjam níveis críticos.