Salta al contenuto

Come posso risolvere i problemi di prestazioni delle mie applicazioni ospitate su Amazon ECS?

4 minuti di lettura
0

Le mie applicazioni ospitate su Amazon Elastic Container Service (Amazon ECS) hanno tempi di risposta lenti.

Risoluzione

Identifica i motivi della lentezza dei tempi di risposta

Esamina gli eventi del servizio Amazon ECS per determinare i motivi delle attività interrotte.

Vincoli di risorse

Nei log potrebbe essere presente uno dei seguenti messaggi di errore:

  • Problemi di CPU: Thread starvation, clock leap o timeout di esecuzione
  • Problemi di memoria: OutOfMemoryError o GC overhead limit exceeded

Quando l'applicazione ha un problema con le risorse, il container potrebbe interrompersi. Le operazioni in corso vengono annullate prima del completamento. I dati vengono persi e le risposte alle richieste non vanno a buon fine.

Per risolvere i problemi relativi ai vincoli di risorse, completare i seguenti passaggi:

  1. Apri la console Amazon ECS.
  2. Nel pannello di navigazione, seleziona Definizioni di attività.
  3. Scegli Crea nuova definizione di attività.
  4. Nella sezione Dettagli container, definisci le risorse per il tuo carico di lavoro.
    Nota: per ulteriori informazioni, consulta Cosa occorre sapere sull'allocazione della CPU in Amazon ECS?
  5. Scegli i tipi di istanze di container Amazon Elastic Compute Cloud (Amazon EC2) per allocare le risorse.
  6. Ottimizza i tempi di avvio delle attività.

Per ulteriori informazioni sull'utilizzo della CPU e della memoria, consulta Utilizzo della CPU e della memoria a livello di servizio.

Problemi di I/O e di rete

A causa di errori di connessione o di timeout, potrebbe comparire uno dei seguenti messaggi di errore:

  • Timeout e tentativi di connessione: SocketTimeoutException: connect timed out
  • Errori di risoluzione DNS: Could not resolve host: api.example.com
  • Errori di rete irraggiungibile: Network is unreachable (Host : 'database.example.com'. Port: 5432)
  • Errori di connessione rifiutata: java.net.ConnectException: Connection refused (Connection refused)
  • Errori SSL/TLS: SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

Per risolvere i problemi di I/O e di rete, intraprendi le seguenti azioni:

Errori del database

Per problemi relativi al database, nei log dell'applicazione potrebbe essere presente uno dei seguenti messaggi di errore:

  • Connection pool exhaustion: java.sql.SQLException: Too many connections
  • Timeout della query: ERROR: canceling statement due to statement timeout
  • Deadlock: Deadlock found when trying to get lock; try restarting transaction
  • Problemi di connessione: Cannot connect to MySQL server on '*' (111)

Per risolvere i problemi del database, ottimizza le query del database e ricostruisci l'indice.

Monitora le metriche e i controlli dell'integrità del bilanciatore del carico

Utilizza Amazon CloudWatch per monitorare le metriche dei bilanciatori del carico e dei target.

Esamina le risposte dell'applicazione

Potresti ricevere uno dei seguenti codici di stato 5xx:

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

Per risolvere questi problemi, consulta Errori comuni.

Esamina i log dell'applicazione per verificare la presenza di messaggi di errore

Utilizza CloudWatch per esaminare i log di Amazon ECS e individuare eventuali errori quali timeout della connessione, superamento del limite temporale per la query del database o superamento del limite di memoria. Per individuare gli errori e analizzare i colli di bottiglia e i tempi di risposta, utilizza i dati di tracciamento delle applicazioni.

Ottimizza le prestazioni

Utilizza i seguenti metodi per migliorare le prestazioni delle applicazioni ospitate su Amazon ECS.

Memorizza i dati nella cache

Utilizza un sistema di caching per trasferire rapidamente i tuoi dati. Tra gli esempi di sistemi di caching che puoi utilizzare rientrano Redis, Memcached o Amazon CloudFront.

Se utilizzi il tipo di avvio EC2, configura ECS_IMAGE_PULL_BEHAVIOR: prefer-cached come comportamento di estrazione dell'agente container Amazon ECS. Per ulteriori informazioni, consulta Ottimizza il tempo di avvio delle attività di Amazon ECS.

Utilizza Application Auto Scaling

Utilizza Application Auto Scaling per modificare il conteggio delle attività in base alla domanda. Dopodiché configura le policy di dimensionamento.

Per ulteriori informazioni, consulta Cos'è Amazon EC2 Auto Scaling?

Ottimizza le immagini del container

Utilizza build a più fasi per ridurre la dimensione delle immagini e memorizza nella cache i livelli dell'immagine. Per ulteriori informazioni, consulta Linux containers on Fargate container image pull behavior for Amazon ECS (Comportamento di estrazione delle immagini dei container Linux su Fargate per Amazon ECS).

Implementa log e monitoraggi efficienti

Utilizza l'API LogConfiguration per impostare i livelli di log, quindi utilizza AWS X-Ray per implementare il tracciamento distribuito.

Informazioni correlate

Messaggi sugli eventi del servizio Amazon ECS

Metriche CloudWatch per il tuo Application Load Balancer

Centralized container logs with Amazon ECS and Amazon CloudWatch Logs (Log di container centralizzati con Amazon ECS e Amazon CloudWatch Logs)

Come posso configurare il dimensionamento automatico del servizio Amazon ECS su Fargate?

AWS UFFICIALEAggiornata un anno fa