Saltar al contenido

¿Cómo puedo solucionar los problemas de rendimiento en mis aplicaciones alojadas en Amazon ECS?

5 minutos de lectura
0

Mis aplicaciones alojadas en Amazon Elastic Container Service (Amazon ECS) tienen tiempos de respuesta lentos.

Resolución

Identificación de los motivos de los tiempos de respuesta lentos

Revisa los eventos del servicio Amazon ECS para determinar los motivos por los que se detuvieron las tareas.

Restricciones de recursos

Es posible que recibas uno de los siguientes mensajes de error en los registros de la aplicación:

  • Problemas con la CPU: Thread starvation, clock leap o execution timeouts
  • Problemas de memoria: OutOfMemoryError o GC overhead limit exceeded

Cuando la aplicación tiene un problema con los recursos, es posible que el contenedor se detenga. Las operaciones en curso se descartan antes de que finalicen. Los datos se pierden y las respuestas a las solicitudes fallan.

Para resolver problemas relacionados con las restricciones de recursos, sigue estos pasos:

  1. Abre la consola de Amazon ECS.
  2. En el panel de navegación, selecciona Definiciones de tareas.
  3. Elige Crear una nueva definición de tarea.
  4. En la sección Detalles del contenedor, define los recursos para tu carga de trabajo.
    Nota: Para obtener más información, consulta ¿Qué debo saber sobre la asignación de CPU en Amazon ECS?
  5. Elige los tipos de instancias de contenedor de Amazon Elastic Compute Cloud (Amazon EC2) para asignar los recursos.
  6. Optimiza los tiempos de inicio de tus tareas.

Para obtener más información sobre el uso de la CPU y la memoria, consulta Uso de CPU y memoria por servicio.

Problemas de E/S y redes

Es posible que recibas uno de los siguientes mensajes de error debido a errores de conexión o tiempos de espera:

  • Tiempos de espera y reintentos de conexión: SocketTimeoutException: connect timed out
  • Fallos de resolución de DNS: Could not resolve host: api.example.com
  • Errores de red inaccesible: Network is unreachable (Host : 'database.example.com'. Port: 5432)
  • Errores de conexión rechazada: java.net.ConnectException: Connection refused (Connection refused)
  • Errores de SSL/TLS: SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

Para solucionar los problemas de E/S y redes, haz lo siguiente:

Errores de base de datos

En caso de problemas con la base de datos, es posible que recibas uno de los siguientes mensajes de error en los registros de la aplicación:

  • Agotamiento del grupo de conexiones: java.sql.SQLException: Too many connections
  • Tiempos de espera de consulta: ERROR: canceling statement due to statement timeout
  • Interbloqueos: Deadlock found when trying to get lock; try restarting transaction
  • Problemas de conexión: Cannot connect to MySQL server on '*' (111)

Para resolver los problemas de las bases de datos, optimiza las consultas a las bases de datos y, a continuación, reconstruye el índice.

Supervisión de las métricas y comprobaciones de estado del equilibrador de carga

Utiliza Amazon CloudWatch para supervisar las métricas sobre los equilibradores de carga y los destinos.

Revisión de las respuestas de la aplicación

Es posible que recibas uno de los siguientes códigos de estado 5xx:

  • HTTP 500 Internal Server Error
  • HTTP 502 Bad Gateway
  • HTTP 504 Gateway Timeout

Para resolver estos problemas, consulta Errores comunes.

Revisión de los registros de la aplicación para ver si hay mensajes de error

Utiliza CloudWatch para revisar los registros de Amazon ECS en busca de errores como Connection timeout, Database query exceeded time limit o Memory limit exceeded. Para identificar errores y analizar los cuellos de botella y los tiempos de respuesta, utiliza los datos de seguimiento de las aplicaciones.

Optimización del rendimiento

Utiliza los siguientes métodos para mejorar el rendimiento de las aplicaciones alojadas en Amazon ECS.

Almacenamiento en caché de los datos

Usa un sistema de almacenamiento en caché para transferir los datos rápidamente. Algunos ejemplos de sistemas de almacenamiento en caché que puedes usar son Redis, Memcached o Amazon CloudFront.

Si usas el tipo de inicio de EC2, configura ECS_IMAGE_PULL_BEHAVIOR: prefer-cached como comportamiento de extracción del agente de contenedor de Amazon ECS. Para obtener más información, consulta Optimización del tiempo de inicio de las tareas de Amazon ECS.

Uso de Application Auto Scaling

Utiliza Application Auto Scaling para modificar el recuento de tareas en función de la demanda. A continuación, configura las políticas de escalamiento.

Para obtener más información, consulta ¿Qué es Amazon EC2 Auto Scaling?

Optimización de las imágenes de los contenedores

Utiliza compilaciones de varias etapas para reducir el tamaño de la imagen y almacenar en caché las capas de imágenes. Para obtener más información, consulta Comportamiento de extracción de imágenes de contenedores de Linux en Fargate para Amazon ECS.

Implementación de registros y monitores eficientes

Utiliza la API LogConfiguration para establecer los niveles de registro y, a continuación, utiliza AWS X-Ray para implementar el seguimiento distribuido.

Información relacionada

Mensajes de eventos del servicio Amazon ECS

Métricas de CloudWatch para el equilibrador de carga de aplicación

Registros de contenedores centralizados con Amazon ECS y Registros de Amazon CloudWatch

¿Cómo puedo configurar el escalamiento automático de servicios de Amazon ECS en Fargate?

OFICIAL DE AWSActualizada hace 2 años