As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Escalabilidade da capacidade em um cluster de banco de dados do Neptune Serverless
A configuração de um cluster de banco de dados do Neptune Serverless é semelhante à configuração de um cluster provisionado normal, com configuração adicional de unidades mínimas e máximas de escalabilidade e com o tipo de instância definido como db.serverless
. A configuração de escalabilidade é definida em Neptune Capacity Units NCUs (), cada uma das quais consiste em 2 GiB (gibibyte) de memória () junto com a capacidade do processador virtual RAM (v) e a rede associadas. CPU É definido como parte de um ServerlessV2ScalingConfiguration
objeto, representado JSON assim:
"ServerlessV2ScalingConfiguration": { "MinCapacity":
(minimum NCUs, a floating-point number such as 1.0)
, "MaxCapacity":(maximum NCUs, a floating-point number such as 128.0)
}
A qualquer momento, cada instância do gravador ou leitor do Neptune tem uma capacidade medida por um número de ponto flutuante que representa o número NCUs atualmente usado por essa instância. Você pode usar a CloudWatch ServerlessDatabaseCapacitymétrica em um nível de instância para descobrir quantas NCUs uma determinada instância de banco de dados está usando atualmente e a NCUUtilizationmétrica para descobrir qual porcentagem de sua capacidade máxima a instância está usando. As duas métricas também estão disponíveis em um nível de cluster de banco de dados para mostrar a utilização média de recursos para o cluster de banco de dados como um todo.
Ao criar um cluster de banco de dados Neptune Serverless, você define o número mínimo e máximo de unidades de capacidade do Neptune () para todas as instâncias sem servidor. NCUs
O NCU valor mínimo que você especifica define o menor tamanho para o qual uma instância sem servidor em seu cluster de banco de dados pode ser reduzida e, da mesma forma, o NCU valor máximo estabelece o maior tamanho até o qual uma instância sem servidor pode crescer. O NCU valor máximo mais alto que você pode definir é 128,0 NCUs e o mínimo mais baixo é 1,0. NCUs
O Neptune rastreia continuamente a carga em cada instância do Neptune Serverless monitorando a utilização de recursos como memória e rede. CPU A carga é gerada pelas operações do banco de dados da aplicação, pelo processamento em segundo plano do servidor e por outras tarefas administrativas.
Quando a carga em uma instância sem servidor atinge o limite da capacidade atual ou quando o Neptune detecta qualquer outro problema de desempenho, a escala da instância é aumentada verticalmente de modo automático. Quando a carga na instância diminui, a capacidade diminui para as unidades de capacidade mínima configuradas, com a CPU capacidade sendo liberada antes da memória. Essa arquitetura permite a liberação de recursos de forma controlada e reduz as flutuações de demanda com eficácia.
É possível escalar uma instância de leitor junto com a instância de escritor ou escalar de forma independente definindo o nível de promoção. As instâncias de leitor nos níveis de promoção 0 e 1 são escaladas ao mesmo tempo que o gravador, o que as mantém dimensionadas na capacidade certa para assumir a workload do gravador de forma rápida em caso de failover. Os leitores nos níveis de promoção de 2 a 15 são escalados independentemente da instância de gravador e uns dos outros.
Se você criou seu cluster de banco de dados Neptune como um cluster Multi-AZ para garantir alta disponibilidade, o Neptune Serverless aumenta e diminui as instâncias com a carga do banco de dados. AZs É possível definir o nível de promoção de uma instância de leitor em uma AZ secundária como 0 ou 1 para que a escala seja aumentada ou reduzida verticalmente junto com a capacidade da instância de gravador na AZ principal, para que ela esteja pronta para assumir a workload atual a qualquer momento.
nota
O armazenamento para um cluster de banco de dados Neptune consiste em seis cópias de todos os seus dados, distribuídas em AZs três, independentemente de você ter criado o cluster como um cluster Multi-AZ ou não. A replicação do armazenamento é tratada pelo subsistema de armazenamento e não é afetada pelo Neptune Serverless.
Selecionar um valor mínimo de capacidade para um cluster de banco de dados do Neptune Serverless
O menor valor que você pode definir para a capacidade mínima é 1.0
NCUs.
Não defina o valor mínimo abaixo do que a aplicação exige para funcionar com eficiência. Configurá-lo como um valor muito baixo pode gerar uma taxa maior de tempos limite em determinadas workloads que consomem muita memória.
Definir o valor mínimo o mais baixo possível pode gerar redução de custos, pois o cluster usará recursos mínimos quando a demanda for baixa. No entanto, se a workload tende a flutuar drasticamente, de muito baixa para muito alta, convém definir o mínimo como um valor mais alto, porque um mínimo mais alto permite que a escala das instâncias do Neptune Serverless seja aumentada verticalmente com maior rapidez.
O motivo disso é que o Neptune escolhe incrementos de escala com base na capacidade atual. Se a capacidade atual for baixa, o Neptune inicialmente aumentará a escala verticalmente de forma lenta. Se o mínimo for maior, o Neptune começará com um incremento de escala maior e, portanto, a escala poderá ser aumentada verticalmente com maior rapidez para atender a um grande aumento repentino na workload.
Selecionar um valor máximo de capacidade para um cluster de banco de dados do Neptune Serverless
O maior valor que você pode definir para a capacidade máxima é 128.0
NCUs, e o menor valor que você pode definir para a capacidade máxima é 2.5
NCUs. Qualquer valor máximo de capacidade definido deve ser pelo menos tão grande quanto o valor mínimo de capacidade definido.
Como regra, defina o valor máximo alto o suficiente para lidar com o pico de carga que a aplicação provavelmente encontrará. Configurá-lo como um valor muito baixo pode gerar uma taxa maior de tempos limite em determinadas workloads que consomem muita memória.
Definir o valor máximo o mais alto possível tem a vantagem de que a aplicação provavelmente poderá lidar até mesmo com as workloads mais inesperadas. A desvantagem é que você perde a capacidade de prever e controlar os custos dos recursos. Um aumento inesperado na demanda pode acabar custando muito mais do que o previsto pelo orçamento.
A vantagem de um valor máximo cuidadosamente definido é que ele permite atender aos picos de demanda e, ao mesmo tempo, limitar os custos de computação do Neptune.
nota
A alteração do intervalo de capacidade de um cluster de banco de dados do Neptune Serverless causa alterações nos valores padrão de alguns parâmetros de configuração. O Neptune pode aplicar alguns desses novos padrões imediatamente, mas algumas das alterações de parâmetros dinâmicos são aplicadas somente após a reinicialização. O status de pending-reboot
indica que é necessária uma reinicialização para aplicar algumas alterações de parâmetro.
Use a configuração existente para estimar os requisitos da tecnologia sem servidor
Se você normalmente modifica a classe das instâncias de banco de dados provisionadas para atender a uma workload excepcionalmente alta ou baixa, é possível usar essa experiência para realizar uma estimativa aproximada do intervalo de capacidade do Neptune equivalente.
Estimar a melhor configuração de capacidade mínima
É possível aplicar as informações sobre o cluster de banco de dados do Neptune existente para estimar a configuração de capacidade mínima sem servidor que funcionará melhor.
Por exemplo, se sua carga de trabalho provisionada tiver requisitos de memória muito altos para classes de instâncias de banco de dados pequenas, como T3
ouT4g
, escolha uma NCU configuração mínima que forneça memória comparável a uma classe de instância de banco de R6g
dados R5
ou.
Ou suponha que você use a classe de instância de banco de dados db.r6g.xlarge
quando o cluster tem uma workload baixa. Essa classe de instância de banco de dados tem 32 GiB de memória, então você pode especificar uma NCU configuração mínima de 16 para criar instâncias sem servidor que podem ser reduzidas para aproximadamente a mesma capacidade (cada uma NCU corresponde a cerca de 2 GiB de memória). Se a instância db.r6g.xlarge
às vezes for subutilizada, talvez seja possível especificar um valor menor.
Se seu aplicativo funciona com mais eficiência quando suas instâncias de banco de dados podem armazenar uma determinada quantidade de dados na memória ou no cache do buffer, considere especificar uma NCU configuração mínima grande o suficiente para fornecer memória suficiente para isso. Caso contrário, os dados poderão ser removidos do cache do buffer quando a escala das instâncias sem servidor for reduzida verticalmente e precisarão ser lidos novamente no cache do buffer ao longo do tempo, quando a escala das instâncias voltar a aumentar verticalmente. Se a quantidade de E/S para trazer os dados de volta ao cache do buffer for substancial, pode NCU valer a pena escolher um valor mínimo mais alto.
Se você descobrir que as instâncias sem servidor estão sendo executadas a maior parte do tempo em uma capacidade específica, é bom definir a capacidade mínima um pouco abaixo disso. O Neptune Serverless pode estimar com maior eficiência quanto e com que rapidez a escala será aumentada verticalmente quando a capacidade atual não for drasticamente menor do que a capacidade necessária.
Em uma configuração mista, com um gravador provisionado e leitores do Neptune Serverless, os leitores não poderão ser escalados junto com o gravador. Como eles são escalados de forma independente, definir uma capacidade mínima baixa para eles pode ocasionar atraso excessivo de replicação. Eles podem não ter capacidade suficiente para acompanhar as alterações que o gravador estiver fazendo quando houver uma workload com uso altamente intenso de gravação. Nessa situação, defina uma capacidade mínima que seja comparável à capacidade do gravador. Especificamente, se você observar atraso da réplica nos leitores que estão nos níveis de promoção 2 a 15, aumente a configuração de capacidade mínima do cluster.
Estimar a melhor configuração de capacidade máxima
Também é possível aplicar as informações sobre o cluster de banco de dados do Neptune existente para estimar a configuração de capacidade máxima sem servidor que funcionará melhor.
Por exemplo, suponha que você use a classe de instância de banco de dados db.r6g.4xlarge
quando o cluster tem uma workload alta. Essa classe de instância de banco de dados tem 128 GiB de memória, então você pode especificar uma NCU configuração máxima de 64 para configurar instâncias equivalentes do Neptune Serverless (cada uma corresponde NCU a cerca de 2 GiB de memória). É possível especificar um valor maior para permitir que a escala da instância de banco de dados seja aumentada verticalmente ainda mais no caso de a instância db.r6g.4xlarge
nem sempre conseguir lidar com a workload.
Se picos inesperados na workload forem raros, pode fazer sentido definir a capacidade máxima alta o suficiente para manter o desempenho da aplicação mesmo durante esses picos. Por outro lado, convém definir uma capacidade máxima mais baixa que possa reduzir o throughput durante picos incomuns, mas que permita ao Neptune lidar com as workloads esperadas sem problemas, além de limitar os custos.