Descrição
Ao usar o Alibaba Cloud CDN para acelerar o acesso ao seu site, as requisições do cliente são enviadas primeiro para um ponto de presença (POP) de Nível 1, depois para um POP de Nível 2 e, finalmente, retornam ao servidor de origem. Problemas em qualquer etapa desse caminho de rede multinível podem causar falhas de acesso. Se o Alibaba Cloud CDN não conseguir buscar conteúdo no servidor de origem durante uma requisição de back-to-origin, erros 5xx podem ocorrer, como 502 Bad Gateway, 503 Service Temporarily Unavailable ou 504 Gateway Time-out.
Causas
Quando ocorre um erro 5xx em uma requisição atendida pelo Alibaba Cloud CDN, o campo X-Swift-Error no cabeçalho de resposta geralmente contém uma mensagem de erro específica, como forward retry timeout ou orig response 5xx error. Além disso, use curl ou as ferramentas de desenvolvedor do navegador (aba Network) para inspecionar a duração da requisição.
-
Se os erros 5xx ocorrerem em todas as requisições, a causa normalmente é uma configuração incorreta no Alibaba Cloud CDN ou um problema no servidor de origem. Os motivos mais comuns para falhas de back-to-origin incluem:
O servidor de origem está inacessível ou seu nome de domínio não pode ser resolvido.
O roteamento de back-to-origin via HTTPS está configurado no Alibaba Cloud CDN, mas o servidor de origem não suporta HTTPS.
O Server Name Indication (SNI) está ativado no servidor de origem, mas não no Alibaba Cloud CDN.
-
Se esse erro ocorrer ocasionalmente ou apenas em regiões específicas, provavelmente será causado pelas condições de rede no servidor de origem ou por outros fatores, tais como:
As políticas de segurança configuradas no servidor de origem bloqueiam endereços IP dos POPs.
A conexão de rede com o servidor de origem é instável, a rota de back-to-origin apresenta instabilidade ou a velocidade de resposta da interface dinâmica varia constantemente.
Soluções
O Alibaba Cloud CDN é uma rede global de POPs distribuídos mundialmente. Ele armazena em cache os recursos dos servidores de origem nos POPs para acelerar o acesso. Quando uma requisição acessa um recurso pela primeira vez ou tenta acessar um recurso expirado armazenado em cache nos POPs, ela é redirecionada ao servidor de origem. O tempo de resposta do servidor de origem e o tempo até o primeiro byte (TTFB) são cruciais para o processo de roteamento de back-to-origin. Se um erro 5xx for reportado no roteamento de back-to-origin, use os métodos a seguir para solucionar o problema:
Cenário 1: O servidor de origem é um host local ou uma instância ECS
Se o servidor de origem for um host local ou uma instância do Elastic Compute Service (ECS), execute as etapas a seguir:
Etapa 1: Obter cabeçalhos de resposta HTTP
Use curl ou Wget para obter os cabeçalhos de resposta HTTP. O exemplo a seguir demonstra como usar o comando curl para obter esses cabeçalhos.
Você também pode pressionar F12 para abrir a ferramenta de desenvolvedor do navegador e acessar a aba Network para localizar a URL que retornou o erro 5xx.
curl -vo [$File_Name] [$IP]
[$File_Name]: nome do arquivo criado no diretório atual. A saída do site que enviou a requisição fica registrada neste arquivo.
[$IP]: endereço IP do site que enviou a requisição.
Se o campo de resposta X-Swift-Error tiver o valor "orig response 5xx error" ou similar, significa que o roteamento de back-to-origin atingiu o tempo limite ou que o processamento da requisição no servidor de origem expirou.

Verifique os aspectos a seguir com base na resposta HTTP obtida.
Etapa 2: Testar e analisar o desempenho da rede com base nas regiões afetadas
Use o Networkbench ou o 17CE para verificar o desempenho da rede dos POPs. Adote diferentes métodos de solução de problemas dependendo das regiões onde o erro ocorre:
Região única: A causa do erro pode estar relacionada à conexão entre o POP e o servidor de origem. Execute testes de rede várias vezes para verificar se a conexão foi restabelecida. Caso esse erro cause impactos significativos, registre os cabeçalhos de resposta e entre em contato com o suporte técnico do Alibaba Cloud.
-
Várias regiões: Execute o comando abaixo para testar a qualidade das conexões entre o cliente e o servidor de origem, bem como entre o cliente e os POPs.
time telnet [$Test_IP] [$Test_Port] ping [$Test_IP]NotaO primeiro comando consulta o tempo consumido para executar o comando
telnet.O segundo comando testa a conectividade da rede.
[$Test_IP]: endereço IP. Pode ser o IP do servidor de origem ou o IP de um POP.
[$Test_Port]: número da porta. Pode ser a porta do servidor de origem ou a porta de um POP.
Etapa 3: Verificar a largura de banda e o QPS do nome de domínio
Siga as etapas abaixo para verificar a largura de banda e o QPS do nome de domínio.
Acesse o console do Alibaba Cloud CDN.
No painel de navegação à esquerda, escolha Content Delivery > Monitoring & Usage Analytics > Real-time Monitoring para visualizar a largura de banda de back-to-origin recente e o QPS. Um pico de largura de banda ou de QPS pode causar tempos limite de resposta no servidor de origem.
Em caso de pico na largura de banda de back-to-origin, verifique se novos recursos foram adicionados ao servidor de origem ou se regras de cache foram configuradas para recursos frequentemente acessados. Se o seu negócio envolver um grande volume de dados de jogos ou imagens, implante recursos no Alibaba Cloud CDN antecipadamente usando o recurso de prefetch. Isso evita gargalos de desempenho no servidor de origem causados por picos de largura de banda de back-to-origin. Configure também um longo tempo de vida (TTL) de cache para recursos acessados com frequência.
-
Verifique se existem regras de cache configuradas no Alibaba Cloud CDN e no servidor de origem. Se o cabeçalho de resposta no-cache estiver configurado no servidor de origem, ele terá precedência sobre a configuração de cache no Alibaba Cloud CDN. Caso nenhuma regra de cache esteja definida para o servidor de origem e os POPs do Alibaba Cloud CDN, o TTL padrão será de 10 a 3.600 segundos. Para mais informações, consulte Visão geral do cache
Se você for um novo usuário do Alibaba Cloud CDN ou não estiver familiarizado com o mecanismo de cache, configure um TTL máximo para diretórios e defina uma política separada para recursos que não exigem armazenamento em cache. Em seguida, especifique prioridades para controlar a correspondência. Para mais detalhes, veja Configurar expiração de cache do CDN.
Etapa 4: Verificar a conectividade e a resolução de nome de domínio do servidor de origem
Os POPs do Alibaba Cloud CDN estão na Internet. O servidor de origem deve estar conectado à Internet para que o roteamento de back-to-origin seja bem-sucedido. Se o endereço IP configurado para o servidor de origem não for acessível pela Internet, se a porta do servidor estiver inacessível ou se o nome de domínio não for resolvido, um erro 5XX será reportado.
-
Servidor de origem inacessível. Execute o comando ping para testar a conectividade do servidor de origem.
ping [$IP]Nota[$IP] é o endereço IP do servidor de origem.
-
Porta configurada no servidor de origem inacessível ou retorno direto de erro 5xx. Um teste de porta usando telnet retorna o erro
Connection timed out.-
Se a porta 80 estiver configurada no servidor de origem, execute o seguinte comando para testar o status da porta.
telnet [$IP] 80 Caso a porta 443 ou uma porta personalizada esteja configurada no servidor de origem, teste se a porta 443 ou a porta personalizada está acessível.
-
Obtenha as configurações de IP e porta do servidor de origem no console do Alibaba Cloud CDN e use o arquivo hosts local para mapear o IP ao servidor de origem. Realize testes na Camada 7 para verificar se o servidor de origem falha em responder ou retorna diretamente um erro 5xx. Alternativamente, execute
curlpara testar o status da porta no servidor de origem.-
Se a porta no servidor de origem for a 80, execute
curl -voa http://[$Domain] -x [$IP]:80.Nota[$Domain] é o nome de domínio acelerado.
Se a porta no servidor de origem for a 443, execute
curl -voa https://[$Domain] --resolve [$Domain]:443:[$IP].
-
-
Nome de domínio do servidor de origem configurado no Alibaba Cloud CDN, mas sem resolução de domínio definida. Nesse caso, o roteamento de back-to-origin falha. Use
pingounslookuppara testar se o nome de domínio do servidor de origem é resolvido normalmente. Por exemplo, se o ping para o domínio example.aliyundoc.com retornar o errounknown hostou se o comando nslookup retornarserver can't find example.aliyundoc.com: NXDOMAIN, o nome de domínio não está sendo resolvido. Para mais informações sobre como configurar a resolução de nomes de domínio, consulte Configurar um registro CNAME.
Etapa 5: Verificar as configurações de back-to-origin
Se o roteamento de back-to-origin via HTTPS estiver configurado no Alibaba Cloud CDN, mas o servidor de origem não suportar HTTPS, um erro 5xx será retornado. Use os métodos a seguir para solucionar o problema com base no seu cenário de negócios.
-
A porta 443 está configurada no servidor de origem, mas ele não suporta HTTPS. Se a porta definida para o servidor de origem na página de back-to-origin do console do Alibaba Cloud CDN for 443, o roteamento usará HTTPS nessa porta. A porta 443 deve estar aberta no servidor de origem, e este deve possuir um certificado HTTPS.
Quando o servidor de origem não suporta HTTPS, ele retorna um erro 5xx, indicando falha no roteamento de back-to-origin. Nessa situação, altere a porta de back-to-origin para a porta 80.
Caso seu negócio exija roteamento de back-to-origin pela porta 443, configure um certificado HTTPS para o servidor de origem.
O roteamento de back-to-origin está configurado para seguir o protocolo usado pelo cliente, mas o servidor de origem não suporta HTTPS. Se o roteamento estiver definido como HTTPS, o Alibaba Cloud CDN usará HTTPS. Se o protocolo estiver definido como Follow e o cliente solicitar recursos via HTTPS, o Alibaba Cloud CDN também usará HTTPS. Caso o servidor de origem não suporte HTTPS, ocorrerá uma falha de acesso. Desative o roteamento que segue o protocolo do cliente ou utilize HTTP como protocolo de back-to-origin.
-
Use o comando
curlpara testar a acessibilidade do servidor de origem.curl -voa https://[$Domain] --resolve [$Domain]:443:[$IP] Alternativamente, modifique o arquivo hosts local para mapeá-lo ao servidor de origem e use um navegador para iniciar requisições HTTPS, testando assim a acessibilidade. Se o erro
Your connection is not privatefor retornado, o acesso via HTTPS não é suportado pelo servidor de origem.
Cenário 2: Sua aplicação utiliza a combinação de Alibaba Cloud CDN e OSS
Se a sua aplicação combinar o Alibaba Cloud CDN com o Object Storage Service (OSS), siga as etapas abaixo para solucionar o erro:
-
Use a opção
--probe-itemda ferramenta ossutil para verificar se a largura de banda de saída excede 10 Gbit/s e se o QPS ultrapassa 10.000. Se esses limites forem excedidos, o limitador de tráfego do OSS será acionado, atrasando o processamento de requisições de back-to-origin acima dos limites. Para mais informações sobre limitação de tráfego, consulte Limites e métricas de desempenho.NotaPara mais detalhes sobre como usar a opção
--probe-itemno ossutil, veja Opções de visualização.Requisições de back-to-origin enviadas durante a limitação de tráfego do OSS não retornam erro de indisponibilidade; elas são processadas com atraso.
-
Verifique se o tráfego de saída no Alibaba Cloud CDN excede o limite de largura de banda do servidor de origem. Quando o servidor atinge a largura de banda máxima, ocorrem problemas nas camadas de rede e de aplicação.
NotaUse a ferramenta iperf para verificar o tráfego entre dois POPs.
Use a ferramenta Netstat para verificar o número de conexões de rede.
Verifique se o servidor de origem possui restrições de firewall. Especificamente, confirme se há limites de velocidade ou restrições de endereços IP para requisições de back-to-origin.
-
Caso as etapas anteriores não indiquem anomalias, examine os logs de erro da Web do servidor de origem em busca de mensagens de erro 5xx. Se não houver erros registrados nos arquivos de log na camada de aplicação, teste a conexão do servidor de origem com os POPs para identificar erros 5xx causados por oscilações de rede. Este processo de verificação depende da frequência real dos erros e do status do negócio.
NotaGeralmente, se o servidor de origem atinge facilmente a largura de banda máxima ou se ocorrem perdas de pacotes e latência regularmente, aumente o valor do parâmetro
send timeoutouread timeoutno arquivo nginx.conf.