Ir para o conteúdo

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

5 minuto de leitura
0

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

Breve descrição

Ao fazer uma solicitação ao Amazon S3, é possível receber uma mensagem de erro semelhante aos seguintes exemplos:

  • "AmazonS3Exception: Internal Error (Service: Amazon S3; Status Code: 500; Error Code: 500 Internal Error; Request ID: A4DBBEXAMPLE2C4D)"
  • "AmazonS3Exception: Slow Down (Service: Amazon S3; Status Code: 503; Error Code: 503 Slow Down; Request ID: A4DBBEXAMPLE2C4D)"

A mensagem de erro "500 Internal Error" ocorre quando o Amazon S3 não consegue gerenciar a solicitação naquele momento. A mensagem de erro "503 Slow Down" normalmente ocorre quando seu bucket do S3 recebe um grande número de solicitações. É possível enviar 3.500 solicitações PUT/COPY/POST/DELETE ou 5.500 solicitações GET/HEAD por segundo por cada prefixo particionado do Amazon S3. No entanto, o Amazon S3 pode enviar uma resposta "503 Slow Down" se suas solicitações excederem a largura de banda disponível para cópia nas regiões AWS.

Para solucionar ou evitar erros de status 5xx, execute as seguintes ações:

  • Para a aplicação que realiza 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 extras 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 à natureza distribuída do Amazon S3, é possível 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. Os SDKs da AWS têm um mecanismo de nova tentativa integrado.

Observação: em alguns cenários, solicitações 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.

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

Uma alta taxa de solicitação ou um aumento repentino na taxa de solicitação de um objeto pode resultar na mensagem de erro "503 Slow Down". Configure sua aplicação para manter a taxa de solicitações e implemente uma nova tentativa com recuo exponencial. O recuo exponencial implementa tempos de espera cada vez maiores entre novas tentativas para respostas de erro consecutivas. Essa configuração dá tempo para que o Amazon S3 monitore os padrões de solicitação e reduza a escala horizontalmente do backend para lidar com a taxa de solicitação.

Primeiro, configure sua aplicação para começar com uma taxa de solicitação de transações por segundo menor. 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.

Distribua objetos em vários prefixos

As taxas de solicitação se aplicam por cada prefixo em um bucket do Amazon S3. Para configurar seu bucket para gerenciar taxas de solicitação mais altas, distribua objetos em vários prefixos. Por exemplo, se você usar um bucket para armazenar imagens e vídeos, então distribua os arquivos nos dois prefixos seguintes:

  • mybucket/images
  • mybucket/videos

Se a taxa de solicitação nos prefixos aumentar gradualmente, o Amazon S3 aumenta a escala verticalmente para lidar com as solicitações de cada um dos dois prefixos de forma separada. Como resultado, o bucket pode gerenciar o dobro da taxa de solicitações.

Monitore 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:

Solucione outros problemas

Ao usar a opção Expresso para recuperar objetos arquivados, é possível receber uma das seguintes mensagens de erro:

  • "GlacierExpeditedRetrievalNotAvailable"
  • "Glacier expedited retrievals are currently not available, please try again later"

Esses problemas ocorrem se não houver capacidade suficiente para processar a solicitação RestoreObject Expressa. Durante um período de alta demanda sustentada, o Amazon S3 pode negar solicitações de recuperação Expressa e retornar uma mensagem de erro 503. Use unidades de capacidade provisionada para garantir que haja capacidade de recuperação Expressa disponível sob demanda. É possível realizar pelo menos três recuperações expressas a cada 5 minutos para cada unidade. Cada unidade fornece até 150 MBps de throughput de recuperação. Também é possível usar as opções de recuperação Padrão ou Em massa.

É possível tentar a recuperação novamente. No entanto, ainda pode encontrar problemas. 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 Expressa a partir de capacidade não provisionada, não há SLA de recuperação Expressa.

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

Usar o Storage Lens do S3 para melhorar a performance

Monitoramento de métricas com o Amazon CloudWatch

AWS OFICIALAtualizada há 6 meses