Como solucionar um erro HTTP 500 ou 503 do Amazon S3?

6 minuto de leitura
0

Quando faço uma solicitação ao Amazon Simple Storage Service (Amazon S3), o Amazon S3 retorna um erro de status 5xx.

Breve descrição

O Amazon S3 retorna um erro de status 5xx semelhante aos seguintes exemplos:

  • “AmazonS3Exception: Erro interno (Serviço: Amazon S3; Código de status: 500; Código de erro: 500 Erro interno; ID da solicitação: A4DBBEXAMPLE2C4D)”
  • “AmazonS3Exception: Diminuir velocidade (Serviço: Amazon S3; Código de status: 503; Código de erro: 503 Diminuir velocidade; ID da solicitação: A4DBBEXAMPLE2C4D)”

O código de erro 500 Erro interno indica que o Amazon S3 não pode lidar com a solicitação no momento. O código de erro 503 Diminuir velocidade normalmente indica que o número de solicitações para seu bucket do S3 é alto. Por exemplo, você pode enviar 3.500 solicitações PUT/COPY/POST/DELETE ou 5.500 solicitações GET/HEAD por segundo por prefixo particionado do Amazon S3. No entanto, o Amazon S3 poderá retornar uma resposta 503 Diminuir velocidade se suas solicitações excederem a quantidade de largura de banda que está disponível para cópia entre regiões.

Para resolver ou evitar erros de status 5xx, realize as tarefas a seguir:

  • Para a aplicação que faz as solicitações, use um mecanismo de nova tentativa.
  • Configure a aplicação para aumentar gradualmente as taxas de solicitação.
  • Distribua objetos em vários prefixos.
  • Monitore o número de respostas de erro 5xx.

Observação: quando um prefixo é criado, o Amazon S3 não atribui automaticamente recursos adicionais para a taxa de solicitação suportada. O Amazon S3 é escalado com base nos padrões de solicitação. À medida que a taxa de solicitação aumenta, o Amazon S3 otimiza dinamicamente para a nova taxa de solicitação.

Resolução

Usar um mecanismo de nova tentativa

Devido à distribuída natural do Amazon S3, você pode repetir as solicitações que retornam erros 500 ou 503. É uma prática recomendada criar uma lógica de nova tentativa em aplicações que fazem solicitações ao Amazon S3.

Todos os SDKs da AWS têm um mecanismo de nova tentativa integrado com um algoritmo que usa recuo exponencial. Esse algoritmo implementa tempos de espera cada vez maiores entre novas tentativas para respostas de erro consecutivas. Muitos dos algoritmos de recuo exponencial usa tremulação (atraso aleatório) para evitar colisões sucessivas. Para obter mais informações, consulte Comportamento de repetição.

Observação: o Amazon S3 suporta taxas de solicitação de até 3.500 solicitações de PUT por segundo por prefixo particionado do Amazon S3. Em alguns cenários, solicitações Put simultâneas rápidas para a mesma chave podem resultar em uma resposta 503. É uma prática recomendada tentar novamente as solicitações que falharam nesses casos.

Configurar a aplicação para aumentar gradualmente as taxas de solicitação

Se você faz solicitações com uma alta taxa de solicitação próxima ao limite da taxa, então o Amazon S3 pode retornar erros 503 Diminuir velocidade. Se houver um aumento repentino na taxa de solicitação de objetos em um prefixo, então você recebe erros 503 Diminuir velocidade. Configure sua aplicação para manter a taxa de solicitações e implemente uma nova tentativa com recuo exponencial. Isso permite que o Amazon S3 monitore os padrões de solicitação e escale o back-end para lidar com a taxa de solicitação.

Configure sua aplicação para começar com uma taxa de solicitação mais baixa (transações por segundo) para evitar o erro 503 Diminuir velocidade. Em seguida, aumente exponencialmente a taxa de solicitações da aplicação. O Amazon S3 escala automaticamente para lidar com uma taxa de solicitação mais alta.

Distribuir objetos em vários prefixos

As taxas de solicitação se aplicam por prefixo em um bucket do Amazon S3. Para configurar seu bucket para lidar com taxas gerais de solicitações mais altas e evitar erros 503 Diminuir velocidade, distribua objetos em vários prefixos. Por exemplo, se você usar um bucket do Amazon S3 para armazenar imagens e vídeos, então distribua os arquivos em dois prefixos:

  • mybucket/images
  • mybucket/videos

Se a taxa de solicitação nos prefixos aumenta gradualmente, o Amazon S3 aumentará a escala verticalmente para lidar com as solicitações de cada um dos dois prefixos de forma separada. O Amazon S3 pode ser escalado para lidar com 3.500 solicitações PUT/POST/DELETE ou 5.500 solicitações GET por segundo por prefixo particionado do Amazon S3. Como resultado, a taxa geral de solicitações processada pelo bucket dobra.

Monitorar o número de respostas de erro de status 5xx

Para monitorar o número de respostas de erro de status 5xx que você recebe, use uma destas opções:

Razões adicionais para erros 5xx

Ao usar o nível de restauração acelerada para recuperar objetos arquivados, você pode receber um erro semelhante aos seguintes exemplos:

  • “GlacierExpeditedRetrievalNotAvailable”
  • “As recuperações rápidas do Glacier não estão disponíveis no momento, tente novamente mais tarde”

Esses erros ocorrem se não houver capacidade suficiente para processar a Solicitação expressa. Durante um período de alta demanda sustentada, o Amazon S3 pode negar solicitações de recuperação rápida e retornar um erro 503. Use unidades de capacidade provisionada (PCUs) para garantir que a capacidade de recuperação para recuperações expressas esteja disponível sob demanda. Cada unidade permite que pelo menos três recuperações expressas sejam realizadas a cada 5 minutos. Cada unidade fornece até 150 megabytes por segundo (MBps) de taxa de transferência de recuperação. Você também pode usar as opções de recuperação “Padrão” ou “Em massa”.

Você pode realizar novamente, embora a nova tentativa não garanta o sucesso. Exceto em casos de demanda extrema, as recuperações expressas são possíveis sem a capacidade provisionada. Devido à constante mudança e à alta demanda por disponibilidade de recuperação rápida a partir de capacidade não provisionada, o AWS Support não fornece um SLA garantido.

Se você continuar recebendo uma alta quantidade de taxas de erro de status 5xx, entre em contato com o AWS Support. Inclua múltiplos pares de ID de solicitação do Amazon S3 para as solicitações que falham com um código de erro de status 5xx.

Informações relacionadas

Resolução de problemas

Monitoramento de métricas com o Amazon CloudWatch

AWS OFICIAL
AWS OFICIALAtualizada há um ano