Perché il parametro di latenza massima di Amazon DynamoDB è elevato quando la latenza media è normale?

3 minuti di lettura
0

Quando rivedo i parametri di Amazon CloudWatch per i miei carichi di lavoro Amazon DynamoDB, il parametro di latenza massima è elevato. Tuttavia, la latenza media è normale.

Risoluzione

Quando si analizza il parametro di CloudWatch SuccessfulRequestLatency, è consigliabile verificare la latenza media. La latenza massima non fornisce un'immagine della latenza complessiva sulla tabella DynamoDB. Al contrario, mostra il tempo massimo impiegato da una singola richiesta in quel periodo. Ad esempio, se hai 100 richieste su una tabella DynamoDB contemporaneamente, anche se 99 richieste richiedono 10 ms e una singola richiesta richiede 100 ms, il parametro di latenza massima è 100 ms.

DynamoDB è un sistema di distribuzione su larga scala, con migliaia di nodi nel parco istanze di backend. Pertanto, una tabella DynamoDB potrebbe avere più partizioni nella tablespace e ciascuna partizione ha molteplici copie nel parco istanze di backend. Quando si effettua una chiamata API a DynamoDB, l'endpoint del servizio DynamoDB riceve la chiamata e quindi la indirizza a uno dei nodi back-end per l'elaborazione. Quando la chiamata viene elaborata correttamente, DyanamoDB indirizza i risultati al tuo client.

Nella maggior parte dei casi, la chiamata API viene elaborata correttamente in un singolo tentativo e si osserva una piccola latenza sul lato client. Tuttavia, a volte il primo tentativo fallisce se il nodo back-end sta riscontrando:

  • Un periodo impegnato
  • Failover
  • Divisione della partizione
  • Problemi di connettività

In casi come questi, il primo tentativo fallisce entro un timeout sul lato server (5000 ms). Quindi, il server riprova automaticamente la chiamata API su un altro nodo, spesso più volte. Il server restituisce il risultato al client quando la chiamata API viene elaborata correttamente. Quando ciò accade, si osserva una latenza elevata per quella particolare richiesta. Pertanto, un parametro di latenza massima elevato non è generalmente motivo di preoccupazione. Se il servizio DynamoDB rileva una latenza costantemente elevata da un nodo, il servizio rimuove automaticamente quel componente dal parco istanze di back-end. È possibile osservare un livello elevato di latenza per una determinata percentuale di chiamate API quando si verifica l'errore localizzato precedentemente menzionato sul lato del servizio. Ciò si riflette in un livello elevato del parametro SuccessfulRequestLatency massimo nei parametri di CloudWatch per le tabelle DynamoDB correlate. Per questo motivo, gli errori localizzati possono aumentare la latenza massima, ma non è necessario intraprendere alcuna azione per controllare questo errore.

Tuttavia, è possibile configurare l'applicazione in modo che reagisca rapidamente anticipando l’errore (fail fast) con un nuovo tentativo di backoff esponenziale. Ciò significa che la nuova richiesta raggiunge il nuovo nodo, ottenendo così risultati più rapidi. Per ulteriori informazioni, consulta Ottimizzazione delle impostazioni delle richieste HTTP dell’SDK Java AWS per le applicazioni Amazon DynamoDB che riconoscono la latenza.


Informazioni correlate

Come posso risolvere i problemi di latenza elevata in una tabella Amazon DynamoDB?

Registrazione dei parametri di latenza

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa