Dimensionamento della capacità in un cluster database Neptune Serverless - Amazon Neptune

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à.

Dimensionamento della capacità in un cluster database Neptune Serverless

La configurazione di un cluster database Neptune Serverless è simile alla configurazione di un normale cluster con provisioning, con una configurazione aggiuntiva per le unità minime e massime per il dimensionamento, e con il tipo di istanza impostato su db.serverless. La configurazione del dimensionamento è definita in unità di capacità Neptune (NCU, Neptune Capacity Unit), ognuna delle quali include 2 GiB (gibibyte) di memoria (RAM) insieme alle reti e alla capacità del processore virtuale (vCPU) associate. L'impostazione avviene come parte di un oggetto ServerlessV2ScalingConfiguration, rappresentato in JSON in questo modo:

"ServerlessV2ScalingConfiguration": { "MinCapacity": (minimum NCUs, a floating-point number such as 1.0), "MaxCapacity": (maximum NCUs, a floating-point number such as 128.0) }

In qualsiasi momento, ogni istanza di scrittura o lettura di Neptune ha una capacità misurata da un numero in virgola mobile che rappresenta il numero di NCU attualmente utilizzate dall'istanza in questione. Puoi utilizzare la metrica CloudWatch ServerlessDatabaseCapacity a livello di istanza per scoprire quante NCU sta attualmente utilizzando una determinata istanza DB e la metrica NCUUtilization per scoprire quale percentuale della sua capacità massima viene utilizzata dall'istanza. Entrambe le metriche sono disponibili anche a livello di cluster database per mostrare l'utilizzo medio delle risorse per il cluster database nel suo complesso.

Quando crei un cluster database Neptune Serverless, imposti il numero minimo e massimo di unità di capacità Neptune (NCU) per tutte le istanze serverless.

Il valore NCU minimo specificato determina le dimensioni minime fino alle quali può ridursi un'istanza serverless del cluster database e, allo stesso modo, il valore NCU massimo stabilisce le dimensioni massime fino alle quali può accrescersi un'istanza serverless. Il valore NCU massimo che è possibile impostare è 128,0 NCU e il valore minimo è 1,0 NCU.

Neptune tiene costantemente traccia del carico su ciascuna istanza Neptune Serverless monitorandone l'utilizzo di risorse come CPU, memoria e rete. Il carico viene generato dalle operazioni del database dell'applicazione, dall'elaborazione in background per il server e da altre attività amministrative.

Quando il carico su un'istanza serverless raggiunge il limite della capacità attuale oppure quando Neptune rileva altri problemi di prestazioni, l'istanza aumenta automaticamente le proprie dimensioni. Quando il carico sull'istanza diminuisce, la capacità si riduce fino al valore NCU minimo configurato, con la capacità della CPU che viene rilasciata prima della memoria. Questa architettura consente il rilascio controllato e graduale delle risorse, oltre a gestire in modo efficace le fluttuazioni della domanda.

È possibile dimensionare un'istanza di lettura insieme all'istanza di scrittura oppure eseguire il dimensionamento separatamente impostando il livello di promozione per le istanze. Le istanze di lettura con livello di promozione 0 e 1 vengono dimensionate congiuntamente a quella di scrittura; in questo modo, la capacità delle istanze rimane delle dimensioni corrette per assumere rapidamente il controllo del carico di lavoro dall'istanza di scrittura in caso di failover. Le istanze di lettura con livello di promozione da 2 a 15 vengono dimensionate separatamente l'una dall'altra e anche dall'istanza di scrittura.

Se hai creato un cluster database Neptune come cluster Multi-AZ per garantire un'elevata disponibilità, Neptune Serverless aumenta e riduce le dimensioni delle istanze in tutte le zone di disponibilità (AZ) in base al carico del database. Puoi impostare il livello di promozione di un'istanza di lettura in una zona di disponibilità secondaria su 0 o 1 affinché le dimensioni dell'istanza aumentino o diminuiscano in base alla capacità dell'istanza di scrittura nella zona di disponibilità principale, così che l'istanza di lettura sia pronta ad assumere il controllo del carico di lavoro attuale in qualsiasi momento.

Nota

L'archiviazione per un cluster database Neptune prevede sei copie di tutti i dati, distribuite su tre zone di disponibilità, indipendentemente dal fatto che il cluster sia stato creato o meno come cluster Multi-AZ. La replica dell'archiviazione è gestita dal sottosistema di archiviazione e non è influenzata da Neptune Serverless.

Scelta di un valore della capacità minima per un cluster database Neptune Serverless

Il valore minimo che puoi impostare per la capacità minima è 1.0 NCU.

Assicurati di non impostare un valore minimo inferiore a quello richiesto dall'applicazione per funzionare in modo efficiente. Impostare un valore troppo basso può comportare una maggiore frequenza di timeout in determinati carichi di lavoro ad alto consumo di memoria.

Impostare il valore minimo più basso possibile può far risparmiare denaro, poiché in tal modo il cluster usa la quantità minima di risorse quando la domanda è bassa. Tuttavia, se il carico di lavoro tende a fluttuare drasticamente (da molto basso a molto alto), potresti voler impostare un valore minimo più alto, poiché così facendo le dimensioni delle istanze Neptune Serverless aumenterebbero più velocemente.

Il motivo è che Neptune sceglie gli incrementi di dimensionamento in base alla capacità attuale. Se la capacità attuale è bassa, all'inizio Neptune aumenta le dimensioni lentamente. Con un valore minimo più alto, Neptune inizia con un incremento di dimensionamento maggiore e può quindi aumentare le dimensioni più velocemente per far fronte a un aumento notevole e improvviso del carico di lavoro.

Scelta di un valore della capacità massima per un cluster database Neptune Serverless

Il valore massimo che puoi impostare per la capacità massima è 128.0 NCU, mentre il valore minimo che puoi impostare per la capacità massima è 2.5 NCU. Il valore della capacità massima (qualsiasi esso sia) deve essere pari almeno al valore impostato per la capacità minima.

Come regola generale, imposta un valore della capacità massima abbastanza alto da poter gestire il carico di picco che l'applicazione potrebbe riscontrare. Impostare un valore troppo basso può comportare una maggiore frequenza di timeout in determinati carichi di lavoro ad alto consumo di memoria.

Il vantaggio di impostare il valore più alto possibile per la capacità massima è che l'applicazione sarà probabilmente in grado di gestire anche i carichi di lavoro più imprevisti. Lo svantaggio invece consiste nel fatto che si perde in una certa misura la capacità di prevedere e controllare i costi delle risorse. Un picco imprevisto nella domanda può determinare costi nettamente superiori a quelli previsti dal budget.

Il vantaggio di un valore della capacità massima attentamente mirato è che consente di soddisfare i picchi di domanda, ponendo al contempo un limite ai costi di calcolo di Neptune.

Nota

La modifica dell'intervallo di capacità di un cluster database Neptune Serverless comporta modifiche ai valori predefiniti di alcuni parametri di configurazione. Neptune può applicare immediatamente alcune di queste nuove impostazioni predefinite, ma alcune modifiche ai parametri dinamici diventano effettive solo dopo un riavvio. Lo stato pending-reboot indica che è necessario un riavvio per applicare le modifiche ad alcuni parametri.

Uso della configurazione esistente per stimare i requisiti serverless

Se in genere modifichi la classe delle istanze di database con provisioning per soddisfare carichi di lavoro eccezionalmente elevati o ridotti, puoi utilizzare tale esperienza per calcolare una stima approssimativa dell'equivalente intervallo di capacità per Neptune Serverless.

Calcolo di una stima per l'impostazione della capacità minima più appropriata

Puoi applicare le tue conoscenze relative al cluster database Neptune esistente per stimare l'impostazione della capacità minima serverless che funzionerà meglio.

Ad esempio, se un carico di lavoro con provisioning ha requisiti di memoria troppo elevati per classi di istanze database di piccole dimensioni come T3 o T4g, scegli un'impostazione NCU minima che fornisca memoria paragonabile a una classe di istanza database R5 o R6g.

Altrimenti, supponiamo di utilizzare la classe di istanza database db.r6g.xlarge quando un cluster ha un carico di lavoro ridotto. Questa classe di istanza database ha 32 GiB di memoria, quindi è possibile specificare un'impostazione NCU minima pari a 16 per creare istanze serverless che possono ridurre le proprie dimensioni approssimativamente fino alla stessa capacità (ogni NCU corrisponde a circa 2 GiB di memoria). Se talvolta l'istanza db.r6g.xlarge è sottoutilizzata, potresti essere in grado di specificare un valore inferiore.

Se l'applicazione funziona nel modo più efficiente quando le istanze di database possono contenere una determinata quantità di dati nella memoria o nella cache del buffer, valuta la possibilità di specificare un'impostazione NCU minima sufficientemente alta da garantire memoria sufficiente. In caso contrario, i dati potrebbero essere espulsi dalla cache del buffer quando le istanze serverless riducono le proprie dimensioni e devono essere riletti nella cache del buffer nel corso del tempo quando le istanze tornano ad aumentare le proprie dimensioni. Se la quantità di I/O per riportare i dati nella cache del buffer è rilevante, potrebbe essere più efficace scegliere un valore NCU minimo più alto.

Se ritieni che le istanze serverless funzionino per la maggior parte del tempo a una determinata capacità, è consigliabile impostare la capacità minima su un valore leggermente inferiore a quello. Neptune Serverless può calcolare in modo più efficace una stima della quantità e della velocità dell'aumento di dimensioni quando la capacità attuale non è sensibilmente inferiore alla capacità richiesta.

In una configurazione mista, con un'istanza di scrittura con provisioning e più istanze di lettura Neptune Serverless, queste ultime non vengono dimensionate congiuntamente all'istanza di scrittura. Poiché le istanze si dimensionano in modo indipendente, l'impostazione di una capacità minima ridotta può comportare un eccessivo ritardo di replica. La capacità potrebbe non essere sufficiente per tenere il passo con le modifiche apportate dall'istanza di scrittura quando il carico di lavoro è ad alta intensità di scrittura. In questa situazione, imposta una capacità minima paragonabile a quella dell'istanza di scrittura. In particolare, se osservi un ritardo di replica nelle istanze di lettura che si trovano nei livelli di promozione da 2 a 15, è opportuno che tu aumenti l'impostazione della capacità minima per il cluster.

Calcolo di una stima per l'impostazione della capacità massima più appropriata

Puoi anche applicare le tue conoscenze relative al cluster database Neptune esistente per stimare l'impostazione della capacità massima serverless che funzionerà meglio.

Ad esempio, supponiamo di utilizzare la classe di istanza database db.r6g.4xlarge quando un cluster ha un carico di lavoro elevato. Questa classe di istanza database ha 128 GiB di memoria, quindi è possibile specificare un'impostazione NCU massima pari a 64 per configurare istanze Neptune Serverless equivalenti (ogni NCU corrisponde a circa 2 GiB di memoria). Puoi specificare un valore più elevato per consentire all'istanza database di aumentare ulteriormente le proprie dimensioni nel caso in cui l'istanza db.r6g.4xlarge non riesca sempre a gestire il carico di lavoro.

Se i picchi imprevisti nel carico di lavoro sono rari, può essere opportuno impostare la capacità massima su un valore abbastanza elevato da mantenere invariate le prestazioni dell'applicazione anche durante tali picchi. D'altra parte, potresti voler impostare una capacità massima inferiore che consenta di ridurre la velocità di trasmissione effettiva durante i picchi insoliti, ma che al contempo permetta a Neptune di gestire i carichi di lavoro previsti senza problemi e con costi limitati.