¿Cómo puedo solucionar un error HTTP 500 o 503 de Amazon S3?
Cuando hago una solicitud a Amazon Simple Storage Service (Amazon S3), Amazon S3 devuelve un error de estado 5xx.
Breve descripción
Amazon S3 devuelve un error de estado 5xx similar al de los siguientes ejemplos:
- «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)»
El código de error 500 Internal Error indica que Amazon S3 no puede gestionar la solicitud en ese momento. El código de error 503 Slow Down suele indicar que el número de solicitudes al bucket de S3 es alto. Por ejemplo, puede enviar 3500 solicitudes PUT/COPY/POST/DELETE o 5500 solicitudes GET/HEAD por segundo por prefijo particionado de Amazon S3. Sin embargo, Amazon S3 puede devolver una respuesta 503 Slow Down si sus solicitudes superan la cantidad de ancho de banda que hay disponible para la copia entre regiones.
Para resolver o evitar los errores de estado 5xx, completa hacer las siguientes tareas:
- Para la aplicación que realiza las solicitudes, utilice un mecanismo de reintento.
- Configure la aplicación para aumentar gradualmente las tasas de solicitudes.
- Distribuya los objetos entre varios prefijos.
- Supervise el número de respuestas de error 5xx.
Nota: Cuando se crea un prefijo, Amazon S3 no asigna automáticamente recursos adicionales para la tasa de solicitudes admitida. Amazon S3 escala en función de los patrones de solicitud. A medida que aumenta la tasa de solicitudes, Amazon S3 se optimiza dinámicamente para la nueva tasa de solicitudes.
Resolución
Usar un mecanismo de reintento
Debido a la naturaleza distribuida de Amazon S3, puede volver a intentar las solicitudes que devuelven los errores 500 o 503. Se recomienda crear una lógica de reintento en las aplicaciones que realizan solicitudes a Amazon S3.
Todos los SDK de AWS tienen un mecanismo de reintento integrado con un algoritmo que utiliza un retroceso exponencial. Este algoritmo implementa tiempos de espera cada vez más prolongados entre reintentos para las respuestas de error consecutivas. Muchos de los algoritmos de retroceso exponencial utilizan la fluctuación (retraso aleatorio) para evitar colisiones sucesivas. Para obtener más información, consulte Reintentar comportamiento.
Nota: Amazon S3 admite tasas de solicitud de hasta 3500 solicitudes Put por segundo por cada prefijo de Amazon S3 particionado. En algunos casos, las solicitudes Put rápidas y simultáneas a la misma clave pueden generar una respuesta 503. En estos casos, se recomienda volver a intentar las solicitudes fallidas.
Configuración de la aplicación para aumentar las tasas de solicitudes de forma gradual
Si realiza solicitudes con una tasa de solicitudes alta cercana al límite de la tasa, Amazon S3 puede mostrar errores 503 Slow Down. Si se produce un aumento repentino en la tasa de solicitudes de objetos de un prefijo, entonces recibirá errores 503 de ralentización. Configure su aplicación para mantener la tasa de solicitudes e implemente un reintento con un retraso exponencial. Esta configuración le da tiempo a Amazon S3 para monitorear los patrones de solicitudes y desescalar horizontalmente el backend para gestionar la tasa de solicitudes.
Para evitar el error 503 Slow Down, configure la aplicación para que comience con una tasa de solicitudes (transacciones por segundo) más baja. A continuación, aumente exponencialmente la tasa de solicitudes de la aplicación. Amazon S3 escala automáticamente para gestionar una tasa de solicitudes más alta.
Distribución de los objetos entre varios prefijos
Las tasas de solicitud se aplican por prefijo en un bucket de Amazon S3. Para configurar su bucket de manera que gestione tasas generales de solicitudes más altas y evitar los errores 503 Slow Down, distribuya los objetos entre varios prefijos. Por ejemplo, si usa un bucket de Amazon S3 para almacenar imágenes y vídeos, distribuya los archivos en dos prefijos:
- mybucket/images
- mybucket/videos
Si la tasa de solicitudes de los prefijos aumenta gradualmente, Amazon S3 se escala para gestionar las solicitudes de cada uno de los dos prefijos por separado. Amazon S3 se escala verticalmente para tramitar 3500 solicitudes PUT/POST/DELETE o 5500 solicitudes GET por segundo por prefijo particionado de Amazon S3. Como resultado, la tasa general de solicitudes gestionada por el bucket se duplica.
Supervisión del número de respuestas de error de estado 5xx
Para controlar el número de respuestas de error de estado 5xx que recibe, use una de estas opciones:
- Active las métricas de Amazon CloudWatch. Las métricas de solicitud de Amazon S3 en CloudWatch incluyen una métrica para las respuestas de estado 5xx.
- Active los registros de acceso al servidor de Amazon S3. Como el registro de acceso al servidor captura todas las solicitudes, filtre y revise todas las solicitudes que recibieron una respuesta 500/503 Error. Utilice Amazon Athena para analizar los registros.
Motivos adicionales de los errores 5xx
Cuando utiliza el Nivel de restauración acelerada para recuperar objetos archivados, puede recibir un error similar al de los siguientes ejemplos:
- «GlacierExpeditedRetrievalNotAvailable»
- «Glacier expedited retrievals are currently not available, please try again later»
Estos errores se producen si no hay suficiente capacidad para procesar la solicitud urgente. Durante un período de alta demanda sostenida, Amazon S3 podría denegar las solicitudes de recuperación acelerada y arrojar un error 503. Use unidades de capacidad aprovisionada (PCU) para asegurarse de que la capacidad de recuperación para las recuperaciones urgentes esté disponible bajo demanda. Cada unidad permite realizar al menos tres recuperaciones aceleradas cada 5 minutos. Cada unidad proporciona hasta 150 megabytes por segundo (MBps) de rendimiento de recuperación. También puedes usar las opciones de recuperación «Estándar» o «Masivo».
Puede volver a intentar la recuperación, aunque el reintento no garantiza el éxito. Excepto en casos de demanda extrema, las recuperaciones aceleradas son posibles sin capacidad aprovisionada. Debido a los cambios constantes y a la gran demanda de disponibilidad de recuperación acelerada a partir de capacidad no aprovisionada, AWS Support no ofrece un SLA garantizado.
Si sigue recibiendo un porcentaje elevado de errores de estado del 5xx, póngase en contacto con AWS Support. Incluya varios pares de identificadores de solicitud de Amazon S3 para las solicitudes que fallaron con un código de error de estado 5xx.
Información relacionada
Contenido relevante
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 3 años