Valutare la capacità fornita per un provisioning di dimensioni adeguate - Amazon Keyspaces (per Apache Cassandra)

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Valutare la capacità fornita per un provisioning di dimensioni adeguate

Questa sezione fornisce una panoramica su come valutare se il provisioning è della giusta dimensione sulle tabelle Amazon Keyspaces. Man mano che il carico di lavoro si evolve, è necessario modificare le procedure operative in modo appropriato, in particolare quando la tabella Amazon Keyspaces è configurata in modalità provisioning e si corre il rischio di un provisioning eccessivo o insufficiente delle tabelle.

Le procedure descritte in questa sezione richiedono informazioni statistiche che devono essere acquisite dalle tabelle Amazon Keyspaces che supportano l'applicazione di produzione. Per comprendere il comportamento dell'applicazione, è necessario definire un periodo di tempo sufficientemente significativo da acquisire la stagionalità dei dati dell'applicazione. Ad esempio, se l'applicazione mostra pattern settimanali, l'utilizzo di un periodo di tre settimane dovrebbe fornire spazio sufficiente per analizzare le esigenze di velocità di trasmissione effettiva dell'applicazione.

Se non sai da dove iniziare, utilizza almeno un mese di utilizzo dei dati per i calcoli seguenti.

Durante la valutazione della capacità, per le tabelle Amazon Keyspaces puoi configurare le unità di capacità di lettura RCUs () e le unità di capacità di scrittura (WCU) in modo indipendente.

Come recuperare i parametri di consumo dalle tabelle Amazon Keyspaces

Per valutare la capacità della tabella, monitora le seguenti CloudWatch metriche e seleziona la dimensione appropriata per recuperare le informazioni della tabella:

unità di capacità in lettura Unità di capacità in scrittura

ConsumedReadCapacityUnits

ConsumedWriteCapacityUnits

ProvisionedReadCapacityUnits

ProvisionedWriteCapacityUnits

ReadThrottleEvents

WriteThrottleEvents

È possibile eseguire questa operazione tramite AWS CLI o il. AWS Management Console

AWS CLI

Prima di recuperare le metriche di consumo della tabella, devi iniziare acquisendo alcuni punti dati storici utilizzando l'API. CloudWatch

Inizia creando due file: write-calc.json e read-calc.json. Questi file rappresentano i calcoli per la tabella. È necessario aggiornare alcuni campi, come indicato nella tabella seguente, in modo che corrispondano all'ambiente in uso.

Nota

Se il nome della tabella non è univoco all'interno del tuo account, devi specificare anche il nome del keyspace.

Nome campo Definizione Esempio
<table-name> Il nome della tabella che stai analizzando SampleTable
<period> Il periodo di tempo utilizzato per valutare l'obiettivo di utilizzo, in secondi Per un periodo di 1 ora è necessario specificare: 3600
<start-time> L'inizio dell'intervallo di valutazione, specificato nel formato 01 ISO86 2022-02-21T23:00:00
<end-time> La fine dell'intervallo di valutazione, specificata nel formato 01 ISO86 2022-02-22T06:00:00

Il file di calcolo di scrittura recupera il numero di WCU fornite e consumate nel periodo di tempo per l'intervallo di date specificato. Genera inoltre una percentuale di utilizzo che può essere utilizzata per l'analisi. Il contenuto completo del write-calc.json file dovrebbe essere simile a quello illustrato nell'esempio seguente.

{ "MetricDataQueries": [ { "Id": "provisionedWCU", "MetricStat": { "Metric": { "Namespace": "AWS/Cassandra", "MetricName": "ProvisionedWriteCapacityUnits", "Dimensions": [ { "Name": "TableName", "Value": "<table-name>" } ] }, "Period": <period>, "Stat": "Average" }, "Label": "Provisioned", "ReturnData": false }, { "Id": "consumedWCU", "MetricStat": { "Metric": { "Namespace": "AWS/Cassandra", "MetricName": "ConsumedWriteCapacityUnits", "Dimensions": [ { "Name": "TableName", "Value": "<table-name>"" } ] }, "Period": <period>, "Stat": "Sum" }, "Label": "", "ReturnData": false }, { "Id": "m1", "Expression": "consumedWCU/PERIOD(consumedWCU)", "Label": "Consumed WCUs", "ReturnData": false }, { "Id": "utilizationPercentage", "Expression": "100*(m1/provisionedWCU)", "Label": "Utilization Percentage", "ReturnData": true } ], "StartTime": "<start-time>", "EndTime": "<end-time>", "ScanBy": "TimestampDescending", "MaxDatapoints": 24 }

Il file di calcolo di lettura utilizza metriche simili. Questo file recupera quanti ne RCUs sono stati forniti e consumati durante il periodo di tempo per l'intervallo di date specificato. Il contenuto del read-calc.json file dovrebbe apparire come in questo esempio.

{ "MetricDataQueries": [ { "Id": "provisionedRCU", "MetricStat": { "Metric": { "Namespace": "AWS/Cassandra", "MetricName": "ProvisionedReadCapacityUnits", "Dimensions": [ { "Name": "TableName", "Value": "<table-name>" } ] }, "Period": <period>, "Stat": "Average" }, "Label": "Provisioned", "ReturnData": false }, { "Id": "consumedRCU", "MetricStat": { "Metric": { "Namespace": "AWS/Cassandra", "MetricName": "ConsumedReadCapacityUnits", "Dimensions": [ { "Name": "TableName", "Value": "<table-name>" } ] }, "Period": <period>, "Stat": "Sum" }, "Label": "", "ReturnData": false }, { "Id": "m1", "Expression": "consumedRCU/PERIOD(consumedRCU)", "Label": "Consumed RCUs", "ReturnData": false }, { "Id": "utilizationPercentage", "Expression": "100*(m1/provisionedRCU)", "Label": "Utilization Percentage", "ReturnData": true } ], "StartTime": "<start-time>", "EndTime": "<end-time>", "ScanBy": "TimestampDescending", "MaxDatapoints": 24 }

Dopo aver creato i file, puoi iniziare a recuperare i dati di utilizzo.

  1. Per recuperare i dati di utilizzo della scrittura, emettete il seguente comando:

    aws cloudwatch get-metric-data --cli-input-json file://write-calc.json
  2. Per recuperare i dati di utilizzo in lettura, emettete il seguente comando:

    aws cloudwatch get-metric-data --cli-input-json file://read-calc.json

Il risultato per entrambe le query è una serie di punti dati in formato JSON che possono essere utilizzati per l'analisi. I risultati dipendono dal numero di punti dati specificati, dal periodo e dai dati specifici del carico di lavoro. Potrebbe essere come nell'esempio seguente.

{ "MetricDataResults": [ { "Id": "utilizationPercentage", "Label": "Utilization Percentage", "Timestamps": [ "2022-02-22T05:00:00+00:00", "2022-02-22T04:00:00+00:00", "2022-02-22T03:00:00+00:00", "2022-02-22T02:00:00+00:00", "2022-02-22T01:00:00+00:00", "2022-02-22T00:00:00+00:00", "2022-02-21T23:00:00+00:00" ], "Values": [ 91.55364583333333, 55.066631944444445, 2.6114930555555556, 24.9496875, 40.94725694444445, 25.61819444444444, 0.0 ], "StatusCode": "Complete" } ], "Messages": [] }
Nota

Se si specifica un periodo breve e un intervallo di tempo lungo, potrebbe essere necessario modificare il MaxDatapoints valore, che per impostazione predefinita è impostato su 24 nello script. Ciò rappresenta un punto dati per ora e 24 al giorno.

AWS Management Console
  1. Accedi a AWS Management Console e vai alla pagina del CloudWatch servizio in Getting Started with the AWS Management Console. Seleziona quello appropriato, Regione AWS se necessario.

  2. Individua la sezione Metriche nella barra di navigazione a sinistra e scegli Tutte le metriche.

  3. Si apre una dashboard con due pannelli. Il pannello superiore mostra l'immagine e il pannello inferiore contiene le metriche che desideri rappresentare graficamente. Scegli il pannello Amazon Keyspaces.

  4. Scegli la categoria Table Metrics dai pannelli secondari. Questo ti mostra le tabelle nella tua cartella corrente. Regione AWS

  5. Identificare il nome della tabella scorrendo il menu verso il basso e selezionare le metriche dell'operazione di scrittura: ConsumedWriteCapacityUnits e ProvisionedWriteCapacityUnits

    Nota

    Questo esempio illustra le metriche delle operazioni di scrittura, ma puoi anche utilizzare questi passaggi per visualizzare graficamente le metriche delle operazioni di lettura.

  6. Seleziona la scheda Graphed metrics (2) (Metriche nel grafico) per modificare le formule. Per impostazione predefinita, CloudWatch sceglie la funzione statistica Average per i grafici.

  7. Dopo aver selezionato entrambe le metriche nel grafico (la casella di controllo a sinistra), selezionare il menu Add math (Aggiungi matematica), seguito da Common (Comune), quindi selezionare la funzione Percentage (Percentuale). Ripetere la procedura due volte.

    È la prima volta che si seleziona la funzione Percentuale.

    Seconda volta che si seleziona la funzione Percentuale.

  8. A questo punto dovresti avere quattro metriche nel menu in basso. Lavoriamo sul calcolo ConsumedWriteCapacityUnits. Per essere coerenti, devi abbinare i nomi a quelli che hai usato nella AWS CLI sezione. Fare clic su m1 ID e modificare questo valore in consumedWCU.

  9. Modifica della statistica da Average (Media) a Sum (Somma). Questa azione crea automaticamente un'altra metrica chiamata ANOMALY_DETECTION_BAND. Nell'ambito di questa procedura, puoi ignorarla rimuovendo la casella di controllo sulla metrica ad1 appena generata.

  10. Ripetere il passaggio 8 per rinominare m2 ID in provisionedWCU. Lasciare la statistica impostata su Average (Media).

  11. Scegli l'etichetta Expression1 e aggiorna il valore su m1 e l'etichetta su Consumed. WCUs

    Nota

    Assicurati di aver selezionato solo m1 (casella di controllo a sinistra) e provisionedWCU per visualizzare correttamente i dati. Aggiorna la formula facendo clic su Details (Dettagli) e modificando la formula in consumedWCU/PERIOD(consumedWCU). Questo passaggio potrebbe anche generare un'altra metrica ANOMALY_DETECTION_BAND, ma nell'ambito di questa procedura puoi ignorarla.

  12. Ora dovreste avere due grafici: uno che indichi il vostro approvvigionamento sulla tabella e l'altro che indichi il consumo. WCUs WCUs

  13. Aggiornare la formula percentuale selezionando il grafico Expression2 (e2). Rinominate le etichette e impostatele su IDs UtilizationPercentage. Rinominare la formula in modo che corrisponda a 100*(m1/provisionedWCU).

  14. Rimuovi la casella di controllo da tutte le metriche tranne utilizationPercentage per visualizzare i tuoi modelli di utilizzo. L'intervallo predefinito è impostato su 1 minuto, ma sentitevi liberi di modificarlo se necessario.

I risultati ottenuti dipendono dai dati effettivi del carico di lavoro. Gli intervalli con un utilizzo superiore al 100% sono soggetti a eventi di errore relativi alla bassa capacità di throughput. Amazon Keyspaces offre una capacità di burst, ma non appena la capacità di burst viene esaurita, qualsiasi elemento superiore al 100% presenta eventi di errore di bassa capacità di throughput.

Come identificare tabelle Amazon Keyspaces il cui provisioning è insufficiente

Per la maggior parte dei carichi di lavoro, una tabella viene considerata sottodimensionata quando consuma costantemente più dell'80% della capacità assegnata.

La capacità burst è una funzionalità di Amazon Keyspaces che consente ai clienti di consumare temporaneamente RCUs/WCUs più di quanto originariamente fornito (più del throughput al secondo assegnato definito per la tabella). La capacità di espansione è stata creata per assorbire improvvisi aumenti di traffico dovuti a eventi speciali o picchi di utilizzo. Questa capacità di burst è limitata, per ulteriori informazioni, consulta. Usa la capacità burst in modo efficace in Amazon Keyspaces Non appena la capacità inutilizzata RCUs è esaurita, si possono verificare degli errori di throughput a bassa capacità se si tenta di consumare più capacità di quella fornita. WCUs Quando il traffico delle applicazioni si avvicina al tasso di utilizzo dell'80%, il rischio che si verifichino eventi di errore di throughput a bassa capacità è notevolmente maggiore.

La regola del tasso di utilizzo dell'80% varia in base alla stagionalità dei dati e alla crescita del traffico. Considerare i seguenti scenari:

  • Se il traffico è rimasto stabile a un tasso di utilizzo di circa il 90% negli ultimi 12 mesi, la tabella ha la capacità corretta

  • Se il traffico delle applicazioni aumenta a un tasso dell'8% mensile in meno di 3 mesi, si arriverà al 100%

  • Se il traffico delle applicazioni aumenta a un tasso dell'5% mensile in meno di 4 mesi, si arriverà al 100%

I risultati delle query precedenti forniscono un'immagine del tasso di utilizzo. Utilizzali come guida per valutare ulteriormente altre metriche che possono aiutarti a scegliere di aumentare la capacità della tabella in base alle esigenze (ad esempio: un tasso di crescita mensile o settimanale). Collabora con il tuo team operativo per definire qual è una buona percentuale per il carico di lavoro e le tabelle.

Esistono scenari speciali in cui i dati sono distorti quando vengono analizzati su base giornaliera o settimanale. Ad esempio, con le applicazioni stagionali che presentano picchi di utilizzo durante l'orario di lavoro (ma che poi scendono quasi a zero al di fuori dell'orario di lavoro), è possibile trarre vantaggio dalla pianificazione dell'auto-scaling delle applicazioni, in cui si specificano le ore del giorno (e i giorni della settimana) per aumentare la capacità fornita, nonché quando ridurla. Invece di puntare a una maggiore capacità per coprire le ore di punta, puoi anche trarre vantaggio dalle configurazioni di auto-scaling delle tabelle di Amazon Keyspaces se la stagionalità è meno pronunciata.

Come identificare tabelle Amazon Keyspaces sovrafornite

I risultati delle query ottenuti dagli script precedenti forniscono i dati necessari per eseguire alcune analisi iniziali. Se il set di dati presenta valori di utilizzo inferiori al 20% per diversi intervalli, è possibile che la tabella presenti un provisioning eccessivo. Per definire ulteriormente se è necessario ridurre il numero di WCUs RCUS, è necessario rivedere le altre letture negli intervalli.

Quando la tabella contiene diversi intervalli di utilizzo ridotti, è possibile trarre vantaggio dall'utilizzo delle politiche di Application Auto Scaling, pianificando Application Auto Scaling o semplicemente configurando le politiche di Application Auto Scaling predefinite per la tabella basate sull'utilizzo.

Se hai un carico di lavoro con un basso utilizzo rispetto a un elevato rapporto di accelerazione (Max (ThrottleEvents) /Min (ThrottleEvents) nell'intervallo), ciò potrebbe accadere quando hai un carico di lavoro molto intenso in cui il traffico aumenta in modo significativo in giorni (o ore del giorno) specifici, ma per il resto è costantemente basso. In questi scenari, potrebbe essere utile utilizzare l'Application Auto Scaling pianificato.