Erro 522 da Cloudflare: tempo de conexão esgotado - causas e correções
O erro 522 da Cloudflare significa que a Cloudflare tentou abrir uma conexão TCP com o seu servidor de origem e não recebeu resposta dentro do tempo limite, cerca de 15 segundos. Diferente de uma conexão recusada, nada disse não; a origem simplesmente nunca respondeu a tempo.
O que significa o erro 522
Toda requisição feita pelo proxy começa com a Cloudflare abrindo uma conexão TCP com a sua origem, antes mesmo de enviar a requisição HTTP em si. O erro 522 acontece quando esse handshake, o SYN TCP e o SYN-ACK esperado de volta, não se completa dentro da janela de tempo limite da Cloudflare. A origem pode estar sobrecarregada demais para aceitar novas conexões, um firewall pode estar descartando os pacotes silenciosamente em vez de rejeitá-los, ou o caminho de rede entre a Cloudflare e a origem pode estar congestionado.
Isso é diferente do erro 521, em que a origem recusa a conexão de forma ativa, e do erro 524, em que a conexão TCP é bem-sucedida, mas a resposta HTTP em si nunca chega a tempo. O erro 522 é especificamente uma falha na etapa de handshake, antes de qualquer requisição HTTP ser sequer enviada.
Como o erro 522 aparece
Os visitantes veem a página da Cloudflare, "Error 522: connection timed out", com um Ray ID. Uma requisição curl contra o domínio mostra o mesmo status depois de aproximadamente a janela de tempo limite da Cloudflare:
curl -I https://example.com
HTTP/2 522
Como o handshake TCP nunca terminou, nenhuma requisição chegou até a sua aplicação, então os logs da aplicação costumam estar vazios durante o período de falha. Olhe em vez disso para métricas no nível de conexão: carga e CPU do servidor no momento dos erros, o número de conexões estabelecidas e em espera (ss -s ou netstat -an | grep SYN_RECV), e os logs do firewall ou balanceador de carga em busca de pacotes descartados ou filtrados na porta em questão.
O que causa o erro 522
- O servidor de origem está sobrecarregado e não consegue aceitar novas conexões rápido o suficiente. CPU alta, uma fila de conexões pendentes cheia, ou um pool de workers esgotado, todos produzem esse efeito.
- Um firewall ou grupo de segurança está descartando silenciosamente os pacotes SYN da Cloudflare em vez de enviar um reset TCP. Um descarte parece idêntico a um servidor lento ou fora do ar do ponto de vista da Cloudflare, enquanto um reset produziria o erro 521 em vez disso.
- O TCP keepalive está desativado na origem, o que aumenta a rotatividade de conexões e a chance de um novo handshake chegar em um momento em que o servidor está ocupado demais para aceitá-lo.
- O endereço IP da origem não está corretamente liberado em redes que exigem uma lista de permissões explícita em vez de uma regra de firewall simples, então as requisições da Cloudflare são filtradas antes de chegar ao socket que está escutando.
- Congestionamento de rede ou perda de pacotes entre a Cloudflare e a origem, mais comum em origens hospedadas em infraestrutura de nível consumidor ou com muita sobrecontratação.
522 vs 524
Os dois códigos são tempos esgotados, mas acontecem em pontos diferentes da requisição. O erro 522 acontece antes de qualquer requisição HTTP ser enviada: o próprio handshake TCP nunca se completa. O erro 524 acontece depois: a conexão TCP é bem-sucedida e a Cloudflare envia a requisição HTTP, mas a origem não devolve uma resposta completa dentro de 100 segundos. Um 524 geralmente aponta para uma aplicação lenta, por exemplo um endpoint de geração de relatório, uma consulta de banco de dados demorada, ou uma requisição disparada por cron que legitimamente leva minutos. A correção para um 524 é quase sempre acelerar o endpoint ou tirar o processamento lento do ciclo de requisição-resposta, movendo-o para um job em segundo plano que o cliente consulta depois para obter o resultado; planos Cloudflare Enterprise também podem aumentar o limite de 100 segundos para rotas específicas, mas isso trata o sintoma, não o endpoint lento em si.
Como saber de quem é a culpa
Um 522 quase sempre tem origem no próprio servidor ou perto dele, já que a rede da Cloudflare tem alta disponibilidade e raramente é a fonte de um tempo esgotado no handshake. A pergunta útil é se a origem está totalmente fora do ar ou apenas sofrendo sob carga vinda de certas regiões. A forma mais rápida de verificar é rodar uma verificação HTTP a partir de vários locais ao mesmo tempo: a verificação HTTP da HostTracker consulta o domínio a partir de pontos de verificação em vários países e reporta cada um separadamente, então um padrão em que algumas localidades estouram o tempo e outras têm sucesso aponta para um servidor sobrecarregado que atende algumas requisições, mas não todas, enquanto um tempo esgotado uniforme em todo lugar aponta para a origem totalmente fora do ar ou um firewall descartando toda conexão.
Como corrigir o erro 522
Se você é um visitante
- Recarregue depois de uma pequena espera. Um pico momentâneo de carga ou uma falha breve de rede costuma se resolver sozinho.
- Verifique a página de status do site, se ele tiver uma, em busca de um incidente conhecido.
- Não há nada para corrigir do seu lado. O tempo esgotado acontece entre a Cloudflare e o próprio servidor do site, não no seu navegador nem na sua conexão com a Cloudflare.
Se você administra o site
- Verifique a carga do servidor e a capacidade de conexões disponível no momento das falhas: CPU, memória, e os limites de conexão ou workers configurados no servidor web (por exemplo, o
worker_connectionsdo nginx). - Confirme se o seu firewall ou grupo de segurança permite as faixas de IP publicadas pela Cloudflare na porta em questão, e se ele rejeita com um reset em vez de descartar pacotes silenciosamente, o que ao menos transforma um 522 em um 521 mais fácil de diagnosticar.
- Ative o TCP keepalive no servidor web da origem e em qualquer balanceador de carga na frente dele, e verifique se as configurações de keepalive no nível do sistema operacional não estão nos padrões, que costumam ser bem mais longos do que a conexão realmente precisa.
- Se a sua hospedagem ou rede na nuvem exigir uma lista de permissões de IP separada do firewall, confirme que o IP da origem está nela.
- Meça o tempo do handshake bruto diretamente contra a origem, contornando a Cloudflare, para ver se o atraso está em chegar até o seu servidor:
Uma conexão que trava aqui confirma que a própria origem é lenta para aceitar conexões, e não algo específico da Cloudflare.curl -v -H "Host: example.com" --connect-timeout 5 https://ORIGIN_IP/ - Para endpoints individuais lentos, em vez de um servidor geralmente sobrecarregado, tire o processamento demorado (relatórios, exportações, jobs em lote) do caminho da requisição e mova para um job em segundo plano que o cliente consulta ou é notificado sobre, e considere um aumento de tempo limite do Cloudflare Enterprise só como solução paliativa para rotas que você não consegue acelerar rapidamente.
Como prevenir
Um servidor que só falha no handshake sob pico de carga vai passar em qualquer verificação manual que você fizer, já que dificilmente você vai testá-lo exatamente no momento em que ele está com dificuldade. Uma verificação HTTP que roda em um cronograma, de fora da sua rede, detecta essa janela de falha mesmo quando ninguém está observando, e rodá-la a partir de vários países mostra se a lentidão é de capacidade global ou de um caminho de rede regional.
Erros relacionados
- Erro 520 da Cloudflare: erro desconhecido - a origem respondeu, mas a resposta era inutilizável.
- Erro 521 da Cloudflare: servidor web fora do ar - a origem recusou a conexão em vez de não responder.
- Erros de servidor 5xx - a família geral de códigos de status.
- 502 Bad Gateway - a versão não específica da Cloudflare para uma falha de upstream.
Perguntas frequentes
Quanto tempo a Cloudflare espera antes de mostrar o erro 522?
Cerca de 15 segundos para o handshake TCP. Se a origem não tiver aceitado a conexão até lá, a Cloudflare desiste e devolve 522 ao visitante.
O 522 é o mesmo que o meu servidor estar fora do ar?
Nem sempre. Também pode significar que o servidor está de pé, mas ocupado demais para aceitar uma nova conexão a tempo, ou que um firewall está descartando a tentativa de conexão sem enviar um reset.
Por que um firewall descarta em vez de rejeitar uma conexão?
Algumas configurações padrão de firewall ou grupo de segurança descartam silenciosamente pacotes que não correspondem a nenhuma regra de permissão, em vez de enviar um reset TCP. Esse descarte silencioso é o que transforma o que poderia ser um 521 rápido e claro em um 522 mais lento e ambíguo.
O erro 522 significa que preciso fazer upgrade do meu servidor?
Não necessariamente. Antes de escalar a infraestrutura, verifique se o keepalive está desativado, se o firewall descarta silenciosamente as faixas da Cloudflare, e se os limites de conexão na configuração do servidor web estão definidos abaixo do que o tráfego realmente exige.
Qual a diferença entre 522 e 524?
O 522 é uma falha em sequer completar o handshake TCP. O 524 é uma conexão concluída em que a resposta HTTP em si demora demais, geralmente por causa de lógica de aplicação lenta, e não de um problema de rede ou capacidade.
Uma consulta de banco de dados lenta pode causar um 522?
Não diretamente, já que o 522 acontece antes de qualquer requisição ser enviada. Uma consulta lenta é mais provável de gerar um 524, em que a conexão foi bem-sucedida, mas a resposta demorou demais para chegar.