Skip to content
Operações9 min de leitura

Loja virtual fora do ar: diagnóstico em 5 minutos

Quando a loja para de vender, cada minuto custa caro. Este guia te leva do "está fora do ar?" até a causa raiz em até 5 minutos, sem depender do suporte da hospedagem.

Racks de servidores em um data center iluminados em azul
Quando a loja cai, o instinto é culpar a hospedagem — mas só ~50% das vezes o problema está mesmo lá.Unsplash
O que você vai aprender
  • Como confirmar em 30 segundos se a loja está fora do ar pra todo mundo ou só pra você.
  • Tabela de diagnóstico por código HTTP (502, 503, 504, 500, NET::ERR_CERT_DATE_INVALID).
  • Roteiro por camadas (DNS → SSL → web server → banco → integrações) — resolve ~90% dos casos sem SSH.
  • Como rodar um pós-mortem útil em 15 minutos sem template formal.

Quando uma loja virtual para de vender, cada minuto custa caro. O custo médio de uma hora de downtime em e-commerce de médio porte fica entre R$ 5 mil e R$ 50 mil — só em vendas perdidas, sem contar tráfego pago jogado fora, churn e o impacto no ranking orgânico.[1]

98%
dos consumidores brasileiros abandonam o site se ele leva mais de 5s pra abrir
Akamai & Forrester, 2023
88%
não voltam a uma loja após uma experiência ruim de carregamento
Google / Deloitte, 2020
4.7%
de queda de conversão para cada segundo adicional no tempo de carregamento
Akamai Online Retail Performance Report
68%
das equipes técnicas descobrem incidentes pelo cliente reclamando, não pelo monitoramento
PagerDuty State of Digital Operations

O instinto na hora do aperto é ligar para o suporte da hospedagem e esperar. O problema: em metade dos casos, a hospedagem não é a culpada — e o suporte vai demorar 30 minutos só para confirmar isso.

Este guia é um roteiro objetivo para descobrir o que está quebrado em até 5 minutos, do seu computador, sem depender de ninguém. Funciona para qualquer loja — Magento 2, WooCommerce, Shopify, VTEX, Nuvemshop ou plataforma própria.

Passo 1 — Confirme que o problema não é só seu

Cinco em cada dez "incidentes" reportados pela equipe são, na verdade, problemas locais — não da loja.

Cache do navegador, DNS antigo do provedor de internet, VPN bloqueando, extensão quebrando o JavaScript. Antes de tocar em qualquer coisa do servidor, descarte essas possibilidades:

  • Abra a loja em uma aba anônima e em outro dispositivo (use a rede 4G/5G do celular, fora do Wi-Fi do escritório).
  • Use um verificador independente: verificador de site online faz a requisição a partir do nosso servidor — se ele diz que está no ar, o problema é seu; se também diz fora, o problema é da loja mesmo.

A regra de ouro do diagnóstico de incidente é: nunca confie em um único ponto de observação. Um ping vindo da mesma rede mente; três pings vindos de provedores diferentes não.

Mike Julian, em Practical Monitoring (O'Reilly, 2017)

Passo 2 — Identifique o tipo de erro

O código de status HTTP que aparece no browser (ou na resposta do verificador) já elimina metade das hipóteses. Os padrões mais comuns:

SintomaCausa provávelPrimeira ação
DNS não resolve / "servidor não encontrado"Domínio expirou ou DNS apontando erradoConsulte verificador de DNS e o painel do seu registrar
Conexão estabelece mas página em brancoJavaScript quebrado no front-endAbra o console do navegador (F12 → Console)
HTTP 500Erro interno do servidor (PHP, framework, banco)Ver logs da aplicação
HTTP 502 (Bad Gateway)Proxy/CDN não consegue falar com o backendVerifique se PHP-FPM/Node/Apache está rodando
HTTP 503 (Service Unavailable)Servidor sobrecarregado ou em manutençãoLogs de CPU/memória e workers ativos
HTTP 504 (Gateway Timeout)Backend demorou demais para responderBanco travado, integração lenta ou DDoS
NET::ERR_CERT_DATE_INVALIDSSL expirou ou foi mal configuradoRenovar/instalar certificado (Let's Encrypt, painel)
📌 Nota: a especificação da família 5xx está na RFC 9110, §15.6. Vale a leitura de ~10 minutos — entender a diferença entre 502 e 504 evita debugar o lado errado da pilha.[2]
Tela de smartphone exibindo notificação de alerta
Você precisa saber do problema antes do cliente — descobrir pelo SAC é descobrir tarde.Unsplash

Passo 3 — Camadas, da mais externa para a mais interna

Investigue em ordem de probabilidade, do "lado fora" para o "lado dentro". Resolve 90% dos casos sem ter que abrir SSH no servidor.

3.1 — DNS e domínio

  • Domínio expirou? Confira a data de validade no Registro.br ou no seu registrar.
  • O DNS aponta para o IP certo? Use o verificador de DNS e compare o A record com o IP do seu servidor.
  • Cloudflare/Akamai no meio? Veja se o "proxy laranja" está ativo e se a regra de cache está correta — uma page rule mal configurada pode entregar 522 para todo mundo.

3.2 — Certificado SSL

Certificado expirado quebra HTTPS de uma vez só — comum em quem usa Let's Encrypt sem renovação automática. O navegador exibe um aviso enorme, e nenhum cliente passa por ele. Diagnostique no inspetor de cabeçalhos HTTP.

⚠ Caso clássico: em 2018 o LinkedIn ficou ~1 hora fora porque o certificado *.linkedin.com expirou no domingo de madrugada. Empresa com 23 mil engenheiros, certificado expira igual ao seu. A diferença está em quem percebe primeiro — você ou o cliente.[3]

3.3 — Infraestrutura (web server / aplicação)

  • 502/504: 90% das vezes é PHP-FPM, Node ou Apache parado ou travado. Em Magento 2, verifique também se o Varnish está respondendo.
  • 500: erro de aplicação. Veja var/log/exception.log (Magento), wp-content/debug.log (WordPress/WooCommerce) ou o log do framework.
  • 503: servidor saturado. Cheque CPU e memória — pico de tráfego, job de cron pesado ou crawler de busca agressivo.

3.4 — Banco de dados

Banco lento é o gargalo mais comum em loja virtual de médio porte. O HTTP Archive (Web Almanac 2024) aponta que ~40% dos sites de e-commerce com TTFB acima de 1,5s têm o gargalo no banco, não na aplicação.[4] Se o backend está vivo mas as páginas dinâmicas (login, carrinho, checkout) não respondem, normalmente é MySQL/MariaDB sobrecarregado. Comandos úteis (precisa de SSH):

SHOW PROCESSLIST;        # queries em execução
SHOW STATUS LIKE 'Threads_connected';
SHOW STATUS LIKE 'Slow_queries';
SHOW ENGINE INNODB STATUS\G   # locks, deadlocks, transações pendentes

Em RDS/Amazon Aurora, olhe Performance Insights e CPU Utilization. Pico de "Threads connected" sem alta proporcional de tráfego = query travada segurando lock.

3.5 — Integrações externas

Se a loja abre mas o cliente não consegue concluir a compra, normalmente é integração externa em silêncio: gateway de pagamento, antifraude, transportadora, ERP, marketplace. Veja como detectar pedidos travados no Magento 2 — mesma lógica vale para WooCommerce e plataformas próprias.

Passo 4 — Pós-incidente: por que aconteceu?

Loja que cai e "volta sozinha" volta a cair. Sem entender a causa raiz, você está só rezando para o próximo pico não ser maior. O Google SRE Book chama isso de blameless postmortem — sem culpado, com foco em sistemas.[5]

A medida de uma boa equipe de operações não é não ter incidentes — é não ter o mesmo incidente duas vezes.— Site Reliability Engineering (Google, O'Reilly 2016)

O mínimo é responder, em até 24h:

  1. O que aconteceu? Sintoma, código de status, duração total, impacto em conversão.
  2. Por quê? Causa raiz, não causa imediata — "PHP-FPM caiu" é a causa imediata; "consumer do queue acumulou 50 mil mensagens" é a raiz.
  3. Como evitar? Alerta novo, limite ajustado, código corrigido, processo mudado.

Esse mini-post-mortem leva 15 minutos e evita o mesmo incidente em três meses. Não precisa de template formal — bastam três bullets num documento compartilhado.

Como evitar descobrir pelo cliente

Toda loja virtual deveria ter, no mínimo, monitoramento de uptime da home, do checkout e do certificado SSL. A regra é simples: você precisa saber do problema antes do cliente reclamar. Veja a lista mínima de 7 alertas que toda loja deveria ter.

Próximo passo prático: rode agora o verificador de site online na sua loja. Mesmo que ela esteja respondendo, vale conferir o tempo de resposta e o status — se passar de 3 segundos na home, vale uma investigação preventiva.

Referências

  1. ITIC (Information Technology Intelligence Consulting). Hourly Cost of Downtime Survey, 2024. itic-corp.com · Gartner. The Cost of Downtime.
  2. IETF. RFC 9110 — HTTP Semantics, Section 15.6 (Server Error 5xx). datatracker.ietf.org/doc/html/rfc9110
  3. LinkedIn down after engineers forget to renew SSL certificate. The Register, dezembro 2017.
  4. HTTP Archive. Web Almanac — E-commerce chapter, 2024. almanac.httparchive.org/en/2024/ecommerce
  5. Beyer, Jones, Petoff & Murphy (orgs.). Site Reliability Engineering: How Google Runs Production Systems. O'Reilly, 2016 — cap. 15 (Postmortem Culture).
  6. Akamai. The State of Online Retail Performance, 2017 e atualizações anuais. akamai.com

Perguntas frequentes

Meu site não abre só pra mim ou para todo mundo?
Use um verificador independente (de outro IP/rede) para confirmar. Se só você não acessa, normalmente é cache DNS, VPN ou conexão local. Se todo mundo está fora, o problema é na infraestrutura.
O que significa erro 502 / 503 / 504?
502 (Bad Gateway) é o servidor web intermediário não conseguindo falar com o backend. 503 (Service Unavailable) é serviço indisponível, geralmente por sobrecarga. 504 (Gateway Timeout) é o backend que demorou demais para responder.
Em quanto tempo um monitoramento detecta loja fora do ar?
Depende da frequência. Monitoramentos baseados em ping detectam em segundos mas dão muito falso positivo; monitoramentos com navegação real (Chromium) detectam em 1–4 minutos com altíssima precisão.
Se a loja voltou sozinha, ainda preciso investigar?
Sim. Loja que cai sozinha e volta sozinha quase sempre cai de novo — com pico de tráfego, integração travando ou job de cron consumindo recurso. Trate cada incidente, mesmo curto, como sintoma de um problema estrutural.

Monitore tudo isso automaticamente

A Especialista Loja Virtual roda navegação real no seu site a cada poucos minutos, alerta no Discord, Slack ou e-mail e mostra screenshot do incidente. Comece grátis.