Come posso capire se nel mio volume Amazon EBS sono in corso eventi di micro-bursting e quindi evitare che questi accadano?

6 minuti di lettura
0

Dispongo di un volume Amazon Elastic Block Store (Amazon EBS) che non supera il suo limite IOPS o di velocità di trasmissione effettiva in Amazon CloudWatch. Tuttavia, il volume appare limitato e presenta una latenza e una lunghezza della coda elevate.

Breve descrizione

CloudWatch monitora gli IOPS (op/s) e la velocità di trasmissione effettiva (byte/s) per tutti i tipi di volume Amazon EBS, raccogliendo campioni ogni minuto.

Il micro-bursting si verifica quando un volume EBS raggiunge livelli elevati di IOPS o velocità di trasmissione effettiva per periodi significativamente più brevi rispetto al periodo di raccolta. Poiché il volume raggiunge livelli elevati di IOPS o velocità di trasmissione effettiva per un periodo di tempo inferiore rispetto al periodo di raccolta, CloudWatch non riflette questo aumento.

Esempio: un volume IO1 (periodo di raccolta di un minuto) con capacità di IOPS allocata di 950 dispone di un'applicazione che invia 1.000 IOPS per cinque secondi. Amazon EBS limita l'applicazione quando raggiunge il limite di IOPS del volume. A questo punto, il volume non è in grado di gestire il carico di lavoro, causando una maggiore lunghezza della coda e una maggiore latenza.

CloudWatch non mostra il superamento del limite di IOPS da parte del volume, perché il periodo di raccolta è di 60 secondi. 1.000 IOPS sono stati prodotti per soli 5 secondi. Per i restanti 55 secondi del periodo di raccolta di un minuto il volume rimane inattivo. Ciò significa che il numero di VolumeReadOps+VolumeWriteOps nell'intero minuto è di 5.000 operazioni (1.000*5 secondi). Ciò equivale a una media di 83,33 IOPS in un minuto (5.000/60 secondi). Questa media di solito non rappresenta un problema.
In questo caso, il VolumeIdleTime allo stesso tempo di campionamento è pari a 55 secondi, perché il volume è inattivo per il resto del periodo di raccolta. Ciò significa che le 5.000 operazioni (VolumeReadOps+VolumeWriteOps) in quel periodo di campionamento avvengono in soli cinque secondi. Dividendo 5.000 per 5 per calcolare la media degli IOPS, si otterrà il risultato di 1.000 IOPS. 1.000 IOPS è il limite del volume.

Per determinare se si sta verificando un evento di micro-bursting sul volume, procedi come segue:

  1. Utilizza i parametri di CloudWatch per identificare possibili eventi di micro-bursting.
  2. Utilizza CloudWatch per ottenere l'evento di micro-bursting.
  3. Verifica l'evento di micro-bursting utilizzando uno strumento a livello di sistema operativo.
  4. Previeni l'evento di micro-bursting modificando la dimensione o il tipo di volume per adattarlo alle tue applicazioni.

Soluzione

Utilizza i parametri di CloudWatch per identificare possibili eventi di micro-bursting

  1. Controlla il parametro VolumeIdleTime. Questo parametro indica il numero totale di secondi in un determinato periodo di tempo in cui non viene inviata nessuna operazione di lettura o scrittura. Se il valore VolumeIdleTime è elevato significa che il volume è rimasto inattivo per la maggior parte del periodo di raccolta. Un livello di IOPS o una velocità di trasmissione effettiva sufficientemente elevati nello stesso tempo di campionamento indicano che è possibile che si sia verificato un evento di micro-bursting.
    Insieme al parametro VolumeIdleTime per la velocità di trasmissione effettiva sono disponibili i parametri VolumeReadBytes e VolumeWriteBytes.
  2. Utilizza la formula seguente per calcolare il valore medio della velocità di trasmissione effettiva raggiunta quando il volume è attivo:
    velocità di trasmissione media stimata in byte = (Sum(VolumeReadBytes) + Sum(VolumeWriteBytes) ) / (Period - Sum(VolumeIdleTime) )
    Insieme al parametro VolumeIdleTime per IOPS sono disponibili i parametri VolumeReadOps e VolumeWriteOps.
  3. Utilizza la formula seguente per calcolare il valore medio di IOPS raggiunto quando il volume è attivo:
    IOPS medi stimati in Ops/s = (Sum(VolumeReadOps) + Sum(VolumeWriteOps) ) / ( Period - Sum(VolumeIdleTime) )

Utilizza CloudWatch per ottenere l'evento di micro-bursting

  1. Apri la console CloudWatch.
  2. Scegli Tutti i parametri.
  3. Usa l'ID volume per cercare il volume interessato.
  4. Per visualizzare i parametri della velocità di trasmissione effettiva, scegli Sfoglia, quindi aggiungi VolumeReadBytes, VolumeWriteBytes e VolumeIdleTime.
  5. Scegli Parametri definiti.
  6. In Statistiche scegli Somma e in Periodo scegli 1 minuto.
  7. In Aggiungi formula scegli Inizia con un'espressione vuota.
  8. In Dettagli dell'Espressione inserisci gli ID grafico per la formula della Velocità di trasmissione effettiva media stimata in byte. Ad esempio, (m1+m2)/(60-m3).

Se la formula calcola un valore superiore alla velocità di trasmissione effettiva massima del volume, significa che si è verificato un evento di micro-bursting. Per verificare i parametri IOPS, segui i passaggi precedenti e aggiungi VolumeReadOps, VolumeWriteOps e VolumeIdleTime al passaggio 4.

Verificare l'evento di micro-bursting utilizzando uno strumento a livello di sistema operativo

Le formule precedenti non individuano sempre l'evento di micro-bursting in tempo reale. Ciò è dovuto al fatto che il volume potrebbe causare un evento di micro-bursting anche se il valore VolumeIdleTime è ridotto.

Esempio: il volume sale a un livello tale da superare i limiti del volume. Il volume passa quindi a un livello di attività molto basso senza rimanere completamente inattivo per il resto del periodo di raccolta. Il parametro VolumeIdleTime non riflette l'attività ridotta, anche se si è verificato un evento di micro-bursting.

Per verificare l'evento di micro-bursting, usa uno strumento a livello di sistema operativo con una granularità più fine rispetto a CloudWatch.

Linux

Usa il comando iostat. Per ulteriori informazioni, consulta la pagina iostat(1) sul sito web di Linux man pages.

1.    Per generare un report delle statistiche I/O per tutti i volumi montati con una granularità di un secondo, esegui il comando seguente:

iostat -xdmzt 1

Nota: lo strumento iostat fa parte del pacchetto sysstat. Se non è possibile trovare il comando iostat, esegui il comando seguente per installare sysstat sulle AMI Linux di Amazon:

$ sudo yum install sysstat -y

2.    Per determinare se stai raggiungendo il limite di velocità di trasmissione effettiva, controlla i valori rMB/s e wMB/s nell'output. Se la somma dei valori rMB/s + wMB/s è superiore alla velocità massima di trasmissione effettiva del volume, significa che è in corso un evento di micro-bursting.

Per determinare se stai raggiungendo il limite di IOPS, esamina i valori r/s e w/s nell'output. Se la somma dei valori r/s + w/s è superiore all'IOPS massimo del volume, significa che è in corso un evento di micro-bursting.

Windows

Esegui il comando perfmon in Windows Performance Monitor. Per ulteriori informazioni, consulta la sezione Determinate i requisiti IOPS e di throughput.

Previeni gli eventi di micro-bursting modificando la dimensione o il tipo di volume per adattarlo alle tue applicazioni

Modifica il volume impostando un tipo e una dimensione che soddisfino gli IOPS e la velocità di trasmissione effettiva richiesti. Per ulteriori informazioni sui tipi di volume e sui rispettivi limiti di IOPS e della velocità di trasmissione effettiva, consulta la sezione Tipi di volume Amazon EBS. Esistono limiti su IOPS/velocità di trasmissione effettiva verso cui l'istanza può spingere tutti i volumi EBS collegati.

È consigliabile effettuare il benchmarking dei volumi confrontandoli con il carico di lavoro per verificare quali tipi di volume sono in grado di gestire in sicurezza il carico di lavoro in un ambiente di test. Per ulteriori informazioni, consulta la sezione Benchmark dei volumi EBS.

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa