Para recursos semelhantes aos do Amazon Timestream para, considere o Amazon Timestream LiveAnalytics para InfluxDB. Ele oferece ingestão de dados simplificada e tempos de resposta de consulta de um dígito em milissegundos para análises em tempo real. Saiba mais aqui.
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á.
Monitoramento e otimização de configuração para Timestream para InfluxDB 2
Visão geral do
O monitoramento eficaz e a otimização da configuração são essenciais para manter o desempenho, a confiabilidade e a economia ideais em sua implantação do Timestream for InfluxDB. Este guia fornece orientação abrangente sobre CloudWatch métricas, limites de desempenho e estratégias de ajuste de configuração para ajudá-lo a gerenciar proativamente suas instâncias do InfluxDB.
CloudWatch Referência de métricas
CloudWatch A Amazon fornece métricas detalhadas para monitorar seu Timestream para instâncias do InfluxDB. Compreender essas métricas e seus limites é essencial para manter a integridade e o desempenho do sistema.
Métricas de utilização de recursos
| CloudWatch Nome da métrica | Dimensões | Description | Unidade | Limites recomendados |
|---|---|---|---|---|
| CPUUtilization | DbInstanceName | Porcentagem de CPU sendo usada | Percentual |
|
| MemoryUtilization | DbInstanceName | Porcentagem de memória sendo usada | Percentual |
|
| HeapMemoryUsage | DbInstanceName | Quantidade de memória de pilha em uso | Bytes |
|
| ActiveMemoryAllocation | DbInstanceName | Alocação atual de memória ativa | Bytes |
|
| DiskUtilization | DbInstanceName | Porcentagem de espaço em disco sendo usado | Percentual |
|
Métricas de operações de E/S
| CloudWatch Nome da métrica | Dimensões | Description | Unidade | Limites recomendados |
|---|---|---|---|---|
| ReadOpsPerSec | DbInstanceName | Número de operações de leitura por segundo | Contagem/segundo | Mantenha ≥ 30% de espaço livre abaixo do IOPS provisionado Exemplo: 12K IOPS → mantenha < 8.400 IOPS no total |
| WriteOpsPerSec | DbInstanceName | Número de operações de gravação por segundo | Contagem/segundo | Mantenha ≥ 30% de espaço livre abaixo do IOPS provisionado Exemplo: 12K IOPS → mantenha < 8.400 IOPS no total |
| Total IOps PerSec | DbInstanceName | Total de I/O operações por segundo (leitura+gravação) | Contagem/segundo | Mantenha ≥ 30% de espaço livre abaixo do IOPS provisionado Monitore os recursos da classe de instância |
Métricas de produtividade
| CloudWatch Nome da métrica | Dimensões | Description | Unidade | Limites recomendados |
|---|---|---|---|---|
| ReadThroughput | DbInstanceName | Taxa de transferência de leitura de dados | Bytes/segundo | Monitore os limites de taxa de transferência de armazenamento |
| WriteThroughput | DbInstanceName | Taxa de transferência de gravação de dados | Bytes/segundo | Monitore os limites de taxa de transferência de armazenamento |
Métricas de desempenho da API
| CloudWatch Nome da métrica | Dimensões | Description | Unidade | Limites recomendados |
|---|---|---|---|---|
| APIRequestTarifa | DbInstanceName, Endpoint, Status | Taxa de solicitações de API para endpoints específicos com códigos de status (2xx, 4xx, 5xx) | Contagem/segundo |
Taxas de erro:
|
| QueryResponseVolume | DbInstanceName, Endpoint, Status | Volume de respostas de consulta por endpoint e código de status | Bytes |
|
Métricas de execução de consultas
| CloudWatch Nome da métrica | Dimensões | Description | Unidade | Limites recomendados |
|---|---|---|---|---|
| QueryRequestsTotal | DbInstanceName, Resultado | Contagem total de solicitações de consulta por tipo de resultado (sucesso, runtime_error, compile_error, queue_error) | Contagem |
Taxa de sucesso: > 99% Taxas de erro:
|
Métricas de organização de dados
| CloudWatch Nome da métrica | Dimensões | Description | Unidade | Limites críticos |
|---|---|---|---|---|
| SeriesCardinality | DbInstanceName, Balde | Número de séries temporais exclusivas em um bucket | Contagem |
|
| TotalBuckets | DbInstanceName | Número total de buckets na instância | Contagem |
|
Métricas de saúde do sistema
| CloudWatch Nome da métrica | Dimensões | Description | Unidade | Limites recomendados |
|---|---|---|---|---|
| EngineUptime | DbInstanceName | Hora em que o mecanismo InfluxDB está funcionando | Segundos | Monitore reinicializações inesperadas Alerta: o tempo de atividade é reiniciado inesperadamente |
| WriteTimeouts | DbInstanceName | Número de operações de gravação que atingiram o tempo limite | Contagem | Alerta: > 0,1% das operações de gravação Crítico: tendência crescente |
Métricas de gerenciamento de tarefas
| CloudWatch Nome da métrica | Dimensões | Description | Unidade | Limites recomendados |
|---|---|---|---|---|
| ActiveTaskWorkers | DbInstanceName | Número de trabalhadores ativos | Contagem | Monitore em relação ao limite configurado de trabalhadores de tarefas Alerta: Consistentemente no máximo |
| TaskExecutionFailures | DbInstanceName | Número de execuções de tarefas com falha | Contagem | Alerta: > 1% das execuções de tarefas Crítico: aumento da taxa de falhas |
Entendendo os principais relacionamentos métricos
Relação entre IOPS e taxa de transferência
A regra de 30% de espaço livre: sempre mantenha pelo menos 30% de espaço livre entre suas operações sustentadas por segundo e seu IOPS provisionado. Isso fornece um buffer para:
Operações de compactação (podem aumentar significativamente o IOPS)
Qualquer reinicialização do banco de dados para funcionar sem problemas
Intermitências de consultas durante o pico de uso
Grave picos decorrentes da ingestão em lote
Operações de manutenção de índices
Exemplo de cálculo:
IOPS provisionado: 12.000
Meta máxima de IOPS sustentada (total IOpsPerSec): 8.400 (70% de utilização)
Espaço livre reservado: 3.600 IOPS (30%)
Se o total exceder IOps PerSec consistentemente 8.400: → Atualize o nível de armazenamento ou otimize a carga de trabalho
Fórmula de monitoramento:
% de utilização de IOPS = (ReadOpsPerSec + WriteOpsPerSec) /IOPS provisionado × 100
Meta: manter a utilização de IOPS < 70%
Aviso: Utilização de IOPS > 70%
Crítico: utilização de IOPS > 90%
Compreendendo o impacto no desempenho da cardinalidade da série
A cardinalidade da série tem um efeito multiplicativo nos recursos do sistema:
| Contagem de séries | Impacto na memória | Impacto no desempenho da consulta | Impacto do tamanho do índice | Recomendação |
|---|---|---|---|---|
| < 100K | Mínimo | Insignificante | Small | Configuração padrão |
| 100K - 1M | Moderada | 10-20% mais lento | Médio | Ajuste as configurações de cache |
| 1M - 5M | Significativo | 30-50% mais lento | Grande | É necessária uma otimização agressiva |
| 5M - 10M | Alto | 50-70% mais lento | Muito grande | Ajuste máximo, considere o redesenho |
| > 10M | Grave | 70% + mais lento | Excesso | Migre para o InfluxDB 3.0 |
Por que 10 milhões é o limite crítico:
A arquitetura InfluxDB 2.x usa indexação na memória
Além da série 10M, as operações de indexação se tornam proibitivamente caras
Os requisitos de memória crescem de forma não linear
A sobrecarga de planejamento de consultas aumenta drasticamente
O InfluxDB 3.0 usa um mecanismo de armazenamento colunar projetado para alta cardinalidade
Diretrizes de dimensionamento e desempenho de instâncias
A tabela a seguir fornece orientação sobre o dimensionamento adequado da instância com base na cardinalidade da série e nas características da carga de trabalho:
| Contagem máxima de séries | Escreve (linhas/seg) | Leituras (consultas/seg) | Instância recomendada | Tipo de armazenamento | Caso de uso |
|---|---|---|---|---|---|
| < 100K | ~50.000 | < 10 | db.influx.large | Influx IO incluído 3K | Pequenas implantações, desenvolvimento e testes |
| < 1 M | ~150.000 | < 25 | db.influx.2xlarge | Influx IO incluído 3K | Cargas de trabalho de produção de pequeno a médio porte |
| ~ 1 M | ~200.000 | ~25 | db.influx.4xlarge | Influx IO incluído 3K | Cargas de trabalho de produção médias |
| < 5 M | ~250.000 | ~35 | db.influx.4xlarge | Influx IO incluído 12K | Grandes cargas de trabalho de produção |
| < 10 M | ~500.000 | ~50 | db.influx.8xlarge | Influx IO incluído 12K | Cargas de trabalho de produção muito grandes |
| ~ 10 M | < 750.000 | < 100 | db.influx.12xlarge | Influx IO incluído 12K | Capacidade máxima do InfluxDB 2.x |
| > 10 M | N/D | N/D | Migre para o InfluxDB 3.0 | N/D | Além do alcance ideal do InfluxDB 2.x |
Otimização de configuração por métrica
Alta utilização da CPU (CPUUtilization > 70%)
Sintomas:
CPUUtilization> 70% sustentado
QueryRequestsTotal(consultas de alto volume ou lentas)
ActiveTaskWorkers(alta carga de tarefas)
Ajustes de configuração:
Prioridade 1: Controlar a simultaneidade de consultas
simultaneidade de consultas: definida como 50-75% da contagem de vCPUs
Exemplo: 8 instâncias de vCPU → simultaneidade de consultas = 4-6
Prioridade 2: limitar a complexidade da consulta
influxql-max-select-series: 10000 (evite consultas ilimitadas)
influxql-max-select-point: 100000000
query-queue-size: 2048 (evitar o acúmulo de filas)
Prioridade 3: Ativar análise de consultas
flux-log-enabled: TRUE (temporariamente para depuração)
nível de registro: informações (ou depuração para análise detalhada)
Considerações importantes:
A redução query-concurrency limitará o número de consultas que podem ser executadas simultaneamente, o que pode aumentar as consultas em fila e levar a uma maior latência durante os períodos de pico. Os usuários podem experimentar cargas de painel ou tempos limite de relatórios mais lentos se a demanda de consultas exceder o limite reduzido de simultaneidade.
Definir limites de proteção (influxql-max-select-series,influxql-max-select-point) fará com que as consultas que excedam esses limites falhem com compile_error ou runtime_error em. QueryRequestsTotal Embora isso proteja o sistema da exaustão de recursos, pode interromper as consultas existentes que funcionavam anteriormente.
Prática recomendada: antes de aplicar essas alterações, analise seus padrões de consulta usando QueryResponseVolumeQueryRequestsTotalmétricas. Identifique e otimize primeiro as consultas mais caras — procure consultas sem filtros de intervalo de tempo, consultas que abranjam séries de alta cardinalidade ou consultas que solicitem pontos de dados excessivos. É sempre preferível otimizar as consultas no nível do aplicativo do que impor limites rígidos que podem prejudicar a funcionalidade.
Ações de hardware:
Escale para a próxima classe de instância com mais v CPUs
Analise os padrões de consulta para oportunidades de otimização
Alta utilização de memória (MemoryUtilization > 70%)
Sintomas:
MemoryUtilization> 70% sustentado
HeapMemoryUsagetendendo para cima
ActiveMemoryAllocationmostrando picos
SeriesCardinality(a alta cardinalidade aumenta o uso da memória)
Ajustes de configuração:
Prioridade 1: Reduzir a memória cache
storage-cache-max-memory-tamanho: definido para 10-15% da RAM total
Exemplo: 32 GB de RAM → 3.355.443.200 a 5.033.164.800 bytes
storage-cache-snapshot-memory-tamanho: 26.214.400 (25 MB)
Prioridade 2: Limitar a memória de consulta
query-memory-bytes: Definido para 60-70% da RAM total
query-max-memory-bytes: O mesmo que query-memory-bytes
query-initial-memory-bytes: 10% de query-memory-bytes
Prioridade 3: otimizar o cache da série
storage-series-id-set-cache-size: Reduz se houver alta cardinalidade
Memória alta: 100-200
Normal: 500-1000
Considerações importantes:
Embora essas mudanças reduzam a pressão da memória, elas terão um impacto negativo direto no desempenho do aplicativo. Reduzir storage-cache-max-memory-size significa que menos dados são armazenados em cache na memória, forçando mais leituras de disco e aumentando a latência da consulta. Você provavelmente verá um ReadOpsPerSecaumento e os tempos de QueryResponseVolumeresposta diminuirão.
A limitação query-memory-bytes fará com que consultas com uso intensivo de memória falhem com runtime_error in QueryRequestsTotal, especialmente consultas que agregam grandes conjuntos de dados ou retornam conjuntos de resultados substanciais. Os usuários podem encontrar erros de “falta de memória” em consultas que foram bem-sucedidas anteriormente.
A redução reduz storage-series-id-set-cache-size o desempenho das consultas em dados de alta cardinalidade, pois o sistema precisa recalcular os resultados da série com mais frequência em vez de recuperá-los do cache. Isso afeta particularmente os painéis que consultam repetidamente as mesmas combinações de séries.
Prática recomendada: antes de aplicar essas alterações restritivas, analise seus padrões de consulta e otimize-os primeiro:
QueryResponseVolumeRevise para identificar consultas que retornam dados excessivos
Use QueryRequestsTotalpara encontrar consultas executadas com frequência que poderiam se beneficiar da otimização
Adicione filtros de intervalo de tempo para reduzir a digitalização de dados ao que é necessário para sua carga de trabalho
Implemente o armazenamento em cache dos resultados da consulta no nível do aplicativo
Considere a pré-agregação de dados usando tarefas de redução da resolução
Revise SeriesCardinalitye otimize seu modelo de dados para reduzir tags desnecessárias
A otimização de consultas deve sempre ser sua primeira abordagem. As restrições de configuração devem ser o último recurso quando a otimização não é suficiente.
Ações de hardware:
Aumente o tamanho da instância para obter mais RAM
Alta utilização do armazenamento (DiskUtilization > 70%)
CloudWatch Métricas a serem monitoradas:
DiskUtilization> 70%
WriteThroughputpadrões
TotalBuckets(muitos baldes aumentam a sobrecarga)
Ajustes de configuração:
Prioridade 1: Verificar a configuração do registro
nível de registro: certifique-se de definir como “informações” (não “depurar”)
flux-log-enabled: Defina como FALSE, a menos que esteja depurando ativamente
Prioridade 2: Retenção agressiva
storage-retention-check-interval: 15m0s (limpeza mais frequente)
Prioridade 3: otimizar a compactação
storage-compact-full-write-duração do frio: 20h0m0s (mais frequente)
storage-cache-snapshot-write-duração do frio: 50m0s
Prioridade 4: Reduzir o tamanho do índice
storage-max-index-log-tamanho do arquivo: 524.288 (512 KB para compactação mais rápida)
Considerações importantes:
Primeira etapa crítica - Verifique sua configuração de registro: antes de fazer qualquer outra alteração, verifique suas configurações de registro. O registro de depuração e os registros de consulta do Flux podem consumir tanto ou mais espaço em disco do que os dados reais da série temporal, e essa é uma das causas mais comuns de esgotamento inesperado do armazenamento.
Impacto do registro:
log-level: debuggera registros extremamente detalhados, potencialmente centenas de MB por horaflux-log-enabled: TRUEregistra cada execução de consulta do Flux com detalhes completos, criando arquivos de log enormesEsses registros se acumulam rapidamente e geralmente são ignorados durante o planejamento da capacidade.
Os arquivos de log podem preencher o espaço em disco mais rapidamente do que a ingestão de dados, especialmente em instâncias menores
Ao contrário dos dados de séries temporais, os registros são mantidos no armazenamento local por 24 horas antes da exclusão
Ações imediatas se os registros forem grandes:
Definir
log-level: info(a partir da depuração)Definir
flux-log-enabled: FALSEMonitore DiskUtilizationpara melhoria imediata
Compensações da configuração de compactação:
Essas alterações de configuração foram projetadas especificamente para cargas de trabalho com alta taxa de transferência de ingestão e janelas curtas de retenção, nas quais o uso do disco flutua substancialmente. Eles forçam o motor de compactação a trabalhar de forma mais agressiva, o que só é benéfico em cenários específicos.
Compensações críticas: o aumento da frequência de compactação aumentará significativamente o consumo de recursos:
CPUUtilizationaumentarão à medida que as operações de compactação consomem ciclos de CPU
MemoryUtilizationaumentará durante a compactação à medida que os dados forem carregados e processados
WriteOpsPerSece WriteThroughputaumentará durante as janelas de compactação, potencialmente excedendo seu espaço livre de 30% de IOPS
WriteTimeoutspode aumentar se a I/O compactação competir com as gravações do aplicativo
Essas mudanças podem criar um problema de desempenho em cascata em que a compactação agressiva consome os recursos necessários para operações de consulta e gravação, degradando o desempenho geral do sistema e, ao mesmo tempo, reduzindo o uso do disco.
Prática recomendada: antes de ajustar as configurações de compactação, concentre-se no gerenciamento de dados e registros:
Verifique primeiro o registro (problema mais comum): verifique se o nível do registro é “informação” e flux-log-enabled é FALSO
Revise seu modelo de dados: você está escrevendo dados dos quais realmente não precisa? Você pode reduzir a granularidade da medição ou do campo?
Otimize as políticas de retenção: verifique TotalBucketse revise as configurações de retenção para cada bucket
Monitore o impacto da compactação: defina suas CPUUtilizationalterações MemoryUtilization, e WriteOpsPerSecantes
Abordagens alternativas:
Aumentar a capacidade de armazenamento (geralmente mais simples e econômica)
Implemente estratégias de redução da resolução ou agregação de dados
Consolide os buckets (reduza TotalBuckets) para diminuir a sobrecarga
Revise e aplique as políticas de retenção com mais rigor
Aplique configurações agressivas de compactação somente se você tiver otimizado o gerenciamento de dados e confirmado que sua instância tem CPU, memória e espaço livre de IOPS suficientes para lidar com o aumento da carga.
Ações de hardware:
Aumentar a capacidade de armazenamento
Alta utilização de IOPS (ReadIOPS/WriteIOPS/TotalOperationsPerSecond> 70% do provisionado)
CloudWatch Métricas a serem monitoradas:
ReadOpsPerSec+ WriteOpsPerSec= Total IOps PerSec
ReadThroughput e WriteThroughput
Compare com IOPS provisionadas (3K, 12K ou 16K)
Ajustes de configuração:
Prioridade 1: Controle de E/S de compactação
storage-max-concurrent-compactions: 2-3 (limite de compactações simultâneas)
storage-compact-throughput-burst: ajuste com base na capacidade do disco
3K IOPS: 25.165.824 (24 MB/s)
IOPS de 12 K: 50.331.648 (48 MB/s)
Prioridade 2: otimizar as operações de gravação
storage-wal-max-concurrent-escreve: 8-12
storage-wal-max-write-atraso: 50m0s
Prioridade 3: ajustar o tempo de captura
storage-cache-snapshot-write-duração do frio: 15m0s (menos frequente)
storage-compact-full-write-duração do frio: 60h00ms (menos frequente)
Considerações importantes:
Essas mudanças criam compensações significativas entre a I/O utilização e o desempenho do sistema:
Limitando a E/S de compactação:
A redução
storage-max-concurrent-compactionsdiminuirá a velocidade das operações de compactação, fazendo com que os arquivos TSM se acumulem e aumentem DiskUtilizationmais rapidamenteLower
storage-compact-throughput-burstestende a duração da compactação, mantendo o compactador ativo por mais tempo e potencialmente bloqueando outras operaçõesA compactação mais lenta significa que o desempenho das consultas diminui com o tempo, pois o mecanismo de armazenamento precisa ler mais arquivos TSM menores em vez de arquivos consolidados
Você pode ver as taxas de QueryRequestsTotalruntime_error aumentarem à medida que as consultas atingem o tempo limite enquanto aguarda a E/S
Reduzindo a frequência de capturas instantâneas:
Aumento
storage-cache-snapshot-write-cold-durationestorage-compact-full-write-cold-durationsignifica que os dados permanecem no registro de gravação antecipada (WAL) por mais tempoIsso aumenta MemoryUtilizationà medida que mais dados são mantidos no cache antes de serem transferidos para o disco.
O risco de perda de dados aumenta ligeiramente se a instância falhar antes da persistência dos dados em cache
O tempo de recuperação após uma reinicialização aumenta à medida que mais dados do WAL devem ser reproduzidos
Ajuste da operação de gravação:
A redução
storage-wal-max-concurrent-writesserializará mais as operações de gravação, aumentando potencialmente WriteTimeoutsdurante períodos de alta taxa de transferênciaAumentar
storage-wal-max-write-delaysignifica que as gravações podem esperar mais tempo antes de serem rejeitadas, o que pode mascarar problemas de capacidade, mas frustrar os usuários com respostas lentas
Prática recomendada: a alta utilização de IOPS geralmente indica que você superou seu nível de armazenamento e não um problema de configuração. Antes de restringir I/O, analyze I/O os padrões e otimizar antes de restringir.
Ações de hardware:
Atualize para um nível de armazenamento IOPS mais alto (3K → 12K)
Garanta que 30% do espaço livre de IOPS seja mantido
Cardinalidade de alta série (SeriesCardinality > 1M)
CloudWatch Métricas a serem monitoradas:
SeriesCardinalitypor balde e total
MemoryUtilization(aumenta com a cardinalidade)
CPUUtilization(despesas gerais de planejamento de consultas)
QueryRequestsTotal(a taxa de runtime_error pode aumentar)
Ajustes de configuração:
Prioridade 1: otimizar o manuseio em série
storage-series-id-set-tamanho do cache: 1000-2000 (aumentar o cache)
storage-series-file-max-concurrent-snapshot-compactions: 4-8
Prioridade 2: definir limites de proteção
influxql-max-select-series: 10000 (evite consultas descontroladas)
influxql-max-select-buckets: 1000
Prioridade 3: otimizar as operações de indexação
storage-max-index-log-tamanho do arquivo: 2.097.152 (2 MB)
Considerações importantes:
A alta cardinalidade de séries é fundamentalmente um problema de modelagem de dados, não um problema de configuração. As alterações na configuração só podem atenuar os sintomas — elas não podem resolver o problema subjacente.
Compensações de configuração:
storage-series-id-set-cache-sizeO aumento melhorará o desempenho das consultas armazenando em cache as pesquisas em série, mas à custa de um aumento. MemoryUtilization Cada entrada de cache consome memória e, com milhões de séries, isso pode ser substancial. Monitore HeapMemoryUsagee ActiveMemoryAllocationdepois de fazer essa alteração.
Definir limites de proteção (influxql-max-select-series,influxql-max-select-buckets) fará com que consultas legítimas falhem com compile_error in QueryRequestsTotalse excederem esses limites. Os painéis que funcionavam anteriormente podem falhar e os usuários precisarão modificar suas consultas. Isso é particularmente problemático para:
Painéis de monitoramento que se agregam em vários hosts/serviços
Consultas de análise que precisam comparar várias entidades
Consultas de alerta que avaliam as condições de toda a frota
O ajuste storage-max-index-log-file-size para valores menores aumenta a frequência de compactação do índice, que aumenta CPUUtilizatione à WriteOpsPerSecmedida que o sistema realiza uma manutenção mais frequente do índice.
Compreensão crítica:
Quando SeriesCardinalityexcede 5M, você está se aproximando dos limites arquitetônicos do InfluxDB 2.x. Na série 10M+, o desempenho diminui exponencialmente, independentemente da configuração:
O planejamento de consultas se torna proibitivamente caro (alto) CPUUtilization
Os requisitos de memória crescem de forma não linear (altos) MemoryUtilization
As operações de índice dominam I/O (ReadOpsPerSec, WriteOpsPerSec)
QueryRequestsTotalas taxas de runtime_error aumentam à medida que as consultas atingem o tempo limite ou esgotam a memória
Prática recomendada: as alterações na configuração são curativos temporários. Você deve abordar a causa raiz:
Analise seu modelo de dados:
Análise SeriesCardinalitypor compartimento para identificar áreas problemáticas
Identifique quais tags têm altas contagens de valores exclusivos
Procure valores de tag ilimitados (UUIDs, carimbos de data/hora, usuário, sessão) IDs IDs
Encontre tags que deveriam ser campos em vez disso
Ações do modelo de dados:
Revise o design da tag para reduzir a cardinalidade desnecessária
Considere a consolidação de séries similares
Série If > 10M: Planeje a migração para o InfluxDB 3.0
Problemas de desempenho de consultas
CloudWatch Métricas a serem monitoradas:
QueryRequestsTotalpor tipo de resultado (sucesso, runtime_error, compile_error, queue_error)
APIRequestTarifa com status = 500 ou status = 499
QueryResponseVolume(respostas grandes indicam consultas caras)
Ajustes de configuração:
Prioridade 1: aumentar os recursos de consulta
simultaneidade de consultas: aumente para 75% de v CPUs
query-memory-bytes: Aloque 70% do total de RAM
query-queue-size: 4096
Prioridade 2: otimizar a execução da consulta
storage-series-id-set-cache-size: 1000 (aumento para melhor armazenamento em cache)
http-read-timeout: 60s (evite tempos limite prematuros)
Prioridade 3: Estabeleça limites razoáveis
influxql-max-select-point: 100000000
influxql-max-select-series: 10000
influxql-max-select-buckets: 1000
Considerações importantes:
O aumento dos recursos de consulta cria competição de recursos e potencial instabilidade do sistema:
Compensações de alocação de recursos:
query-concurrencyO aumento permite que mais consultas sejam executadas simultaneamente, mas cada consulta compete por CPU e memória:
CPUUtilizationaumentará, potencialmente atingindo a saturação durante os períodos de pico de consulta
MemoryUtilizationaumentará à medida que mais consultas alocarem memória simultaneamente
Se você aumentar a simultaneidade sem recursos adequados, todas as consultas ficam mais lentas em vez de apenas algumas filas
Risco de falha em cascata se consultas simultâneas esgotarem os recursos disponíveis
Alocar mais query-memory-bytes significa menos memória disponível para armazenamento em cache e outras operações:
HeapMemoryUsagevai aumentar
storage-cache-max-memory-sizepode precisar ser reduzido para compensarMenos acessos ao cache significam um desempenho de consulta maior ReadOpsPerSece mais lento
O sistema se torna mais vulnerável à exaustão de memória se as consultas usarem sua alocação total
Aumentar query-queue-size apenas atrasa o problema — não resolve problemas de capacidade:
As consultas esperam mais tempo na fila, aumentando a latência end-to-end
Os usuários percebem o sistema como mais lento, mesmo que a taxa de transferência possa permanecer inalterada
Filas grandes podem mascarar problemas de capacidade subjacentes
QueryRequestsTotalA taxa de queue_error diminui, mas a experiência do usuário pode não melhorar
O aumento http-read-timeout evita o cancelamento prematuro da consulta, mas:
Consultas de longa duração consomem recursos por mais tempo, reduzindo a capacidade de outras consultas
Os usuários esperam mais tempo antes de receber erros de tempo limite
Pode ocultar consultas ineficientes que devem ser otimizadas
Pode levar à exaustão de recursos se muitas consultas lentas se acumularem
Prática recomendada: os problemas de desempenho das consultas geralmente são causados por consultas ineficientes, não por recursos insuficientes. Antes de aumentar a alocação de recursos:
Analise os padrões de consulta:
Análise QueryResponseVolumepara identificar consultas que retornam dados excessivos (> 1 MB)
Verifique os padrões de QueryRequestsTotalruntime_error - o que está causando falhas?
Procure APIRequestTaxa com Status=499 (tempos limite do cliente) - as consultas são muito lentas
Identifique consultas caras executadas com frequência
Otimize as consultas primeiro:
Antipadrões de consulta comuns:
Filtros de intervalo de tempo ausentes → Adicionar limites de tempo explícitos
Consultando todas as séries → Adicionar filtros de tag específicos
Janelas de agregação excessiva → Use intervalos apropriados
Campos desnecessários em SELECT → Solicitar somente os dados necessários
Sem cláusulas LIMIT → Adicione limites razoáveis
Soluções em nível de aplicativo:
Implemente o armazenamento em cache dos resultados da consulta (Redis, Memcached)
Use tarefas para pré-agregar padrões comuns
Adicione paginação para grandes conjuntos de resultados
Implemente a limitação da taxa de consulta por usuário/painel
Use dados com resolução reduzida para consultas históricas
Verifique a disponibilidade dos recursos:
Verifique CPUUtilization: se já for > 70%, aumentar a simultaneidade piorará as coisas
Verifique MemoryUtilization- se já for > 70%, alocar mais memória de consulta causará OOM
Verifique se o Total IOps PerSec tem 30% de espaço livre antes de aumentar a carga de consultas
Abordagem recomendada:
Comece otimizando as 10 consultas mais caras (por) QueryResponseVolume
Implemente o armazenamento em cache dos resultados da consulta no nível do aplicativo
Aumente a alocação de recursos somente se as consultas forem otimizadas e as métricas mostrarem espaço livre
Escale para uma classe de instância maior se a carga de trabalho ultrapassar a capacidade atual
Ações de hardware:
Dimensione sua capacidade de computação, as consultas se beneficiam de maior poder de processamento (v) CPUs
RegEx Armadilhas de desempenho em consultas de fluxo
Ao filtrar dados no Flux, evite usar expressões regulares para correspondências exatas ou correspondência simples de padrões, pois isso acarreta penalidades significativas de desempenho. RegEx as operações no Flux são de um único encadeamento e ignoram totalmente o índice TSM subjacente. Em vez de aproveitar os índices de tags otimizados do InfluxDB para pesquisas rápidas, os RegEx filtros forçam o mecanismo de consulta a recuperar todas as séries correspondentes do armazenamento e realizar comparações de texto sequencialmente em relação a cada valor. Isso se torna particularmente problemático quando:
Filtragem com base nos valores exatos da tag - Use o operador de igualdade (
==) ou acontains()função em vez de RegEx padrões como/^exact_value$/Combinando vários valores específicos - Use o
inoperador com uma matriz de valores em vez de padrões de alternância, como/(value1|value2|value3)/Correspondência simples de prefixo ou sufixo - Considere o uso
strings.hasPrefix()de nossasstrings.hasSuffix()funções, que são mais eficientes do que âncoras RegEx
Para cenários que exigem várias correspondências de padrões, reestruture sua consulta para usar vários predicados de filtro combinados com operadores lógicos ou pré-filtre usando igualdade de tag antes de aplicar operações de string mais complexas. Reserve RegEx exclusivamente para casos que exigem uma correspondência verdadeira de padrões que não podem ser expressos por meio de operadores de comparação mais simples.
Problemas de desempenho de gravação
CloudWatch Métricas a serem monitoradas:
WriteTimeouts(contagem crescente)
WriteOpsPerSec e WriteThroughput
APIRequestClassifique com Status=500 para endpoints de gravação
QueryRequestsTotalcom result=runtime_error durante as gravações
Ajustes de configuração:
Prioridade 1: otimizar gravações WAL
storage-wal-max-concurrent-escreve: 12-16
storage-wal-max-write-atraso: 10m0s
http-write-timeout: Anos 60
Prioridade 2: otimizar instantâneos de cache
storage-cache-snapshot-memory-tamanho: 52.428.800 (50 MB)
storage-cache-snapshot-write-duração do frio: 100m
Prioridade 3: Validação do campo de controle
storage-no-validate-field-size: VERDADEIRO (se a fonte de dados for confiável)
Considerações importantes:
O ajuste do desempenho de gravação envolve compensações cuidadosas entre taxa de transferência, confiabilidade e consumo de recursos:
Compensações de configuração do WAL:
storage-wal-max-concurrent-writesO aumento permite mais operações de gravação paralelas, mas:
CPUUtilizationaumenta à medida que mais threads de gravação competem pela CPU
MemoryUtilizationaumenta à medida que mais dados são armazenados em buffer na memória antes da descarga do WAL
WriteOpsPerSecaumentará, potencialmente excedendo seu espaço livre de 30% de IOPS
O aumento da contenção por disco I/O pode, na verdade, diminuir a velocidade de gravações individuais
Se você exceder a I/O capacidade do disco, WriteTimeoutspode aumentar em vez de diminuir
Aumentar storage-wal-max-write-delay significa que as gravações esperam mais tempo antes de expirar:
Mascara problemas de capacidade fazendo com que as gravações esperem em vez de falharem rapidamente
Os usuários experimentam tempos de resposta de gravação mais lentos, mesmo quando as gravações acabam sendo bem-sucedidas
Pode levar ao acúmulo de filas de gravação e à pressão da memória
Na verdade, não aumenta a capacidade - apenas atrasa o tempo limite
Aumentar de http-write-timeout forma semelhante atrasa os erros de tempo limite:
Permite que gravações em lotes maiores sejam concluídas
Mas também permite que gravações lentas consumam recursos por mais tempo
Pode ocultar problemas de desempenho subjacentes
Pode levar à exaustão de recursos se muitas gravações lentas se acumularem
Compensações do Cache Snapshot:
Aumentar storage-cache-snapshot-memory-size significa que mais dados se acumulam na memória antes da descarga:
MemoryUtilizationaumenta significativamente
O risco de perda de dados aumenta se a instância falhar antes do snapshot
Instantâneos maiores demoram mais para serem gravados, criando picos maiores WriteOpsPerSec
Pode melhorar a taxa de transferência de gravação agrupando mais dados em lotes, mas com custo de memória e confiabilidade
Aumento dos storage-cache-snapshot-write-cold-duration atrasos nas capturas instantâneas:
Aumenta ainda mais MemoryUtilizationà medida que os dados permanecem no cache por mais tempo
Aumenta a janela de risco de perda de dados
Reduz a WriteOpsPerSecfrequência, mas cria picos maiores quando ocorrem instantâneos
O tempo de recuperação após a reinicialização aumenta à medida que mais WAL deve ser repetido
Compensação da validação de campo:
A configuração storage-no-validate-field-size: TRUE desativa a validação do tamanho do campo:
Melhora a produtividade de gravação ignorando as verificações de validação
Risco crítico: permite que dados malformados ou maliciosos sejam gravados
Pode levar à corrupção de dados se as gravações contiverem tamanhos de campo inválidos
Torna muito mais difícil a depuração de problemas de dados
Use somente se você tiver total controle e confiança em sua fonte de dados
Prática recomendada: problemas de desempenho de gravação geralmente indicam limites de capacidade ou padrões de gravação ineficientes. Antes de ajustar a configuração:
Analise os padrões de gravação:
Análise WriteThroughpute WriteOpsPerSectendências
Verifique a WriteTimeoutscorrelação com a carga de gravação
APIRequestTaxa de monitoramento para terminais de gravação por código de status
Identifique os tamanhos e a frequência dos lotes de gravação
Otimize primeiro as operações de gravação:
Antipadrões comuns de gravação:
Escrevendo pontos individuais → Gravações em lote (5.000 a 10.000 pontos)
Gravações muito frequentes → Buffer e lote
Gravações síncronas → Implementar filas de gravação assíncronas
Explosões de gravação ilimitadas → Implementar limitação de taxa
Escrevendo com precisão desnecessária → Arredonde os carimbos de data e hora de forma adequada
Verifique a I/O capacidade:
Verifique o total IOps PerSec - se já for > 70%, aumentar a simultaneidade do WAL piorará as coisas
Revise WriteOpsPerSecdurante os períodos de pico
Garanta que exista 30% de espaço livre de IOPS antes de ajustar as configurações de gravação
Considere se 3K IOPS são suficientes ou se é necessário um nível de IOPS de 12K
Melhorias no nível do aplicativo:
Implemente o buffer de gravação com tamanhos de lote configuráveis
Adicione lógica de repetição de gravação com recuo exponencial
Use operações de gravação assíncrona
Implemente a limitação da taxa de gravação durante os períodos de pico
Monitore a profundidade da fila de gravação e aplique contrapressão
Abordagem recomendada:
Comece otimizando os tamanhos dos lotes de gravação no nível do aplicativo (almeje 5.000 a 10.000 pontos por lote)
Implemente buffer de gravação e operações assíncronas
Verifique se o Total IOps PerSec tem espaço livre adequado
Atualize para o próximo nível de armazenamento (3K IOPS → 12K IOPS → 16K IOPS) se estiver consistentemente acima de 70% de utilização
Ajuste as configurações de WAL somente se as gravações forem otimizadas e a I/O capacidade for adequada
Nunca desative a validação de campo, a menos que você tenha controle total das fontes de dados
Ações de hardware:
Atualize para um armazenamento de IOPS mais alto (3K → 12K → 16K)
Garanta que I/O o espaço livre seja adequado
Dimensione para uma classe de instância maior se houver restrição de CPU ou memória
Práticas recomendadas de monitoramento
CloudWatch Configuração de alarmes
Alarmes críticos (ação imediata necessária):
CPUUtilization:
Limite: > 90% por 5 minutos
Ação: implementar medidas de remediação de tráfego ou escalabilidade computacional
MemoryUtilization:
Limite: > 90% por 5 minutos
Ação: implementar medidas de remediação de tráfego ou escalabilidade computacional
DiskUtilization:
Limite: > 85%
Ação: tente liberar espaço excluindo buckets antigos, atualizando as configurações de retenção ou o escalonamento de armazenamento
Total IOpsPerSec:
Limite: > 90% do provisionamento por 10 minutos
Ação: implementar medidas de remediação de tráfego ou aumentar o IOPS
SeriesCardinality:
Limite: > 10.000.000
Ação: revise seu modelo de dados, se nenhuma alteração for possível, explore a migração para o InfluxDB 3 ou fragmente seus dados
EngineUptime:
Limite: reinicialização inesperada (< 300 segundos)
Ação: Verifique se coincide com uma janela de manutenção; caso contrário, crie um ticket para o suporte do Timestream.
Alarmes de aviso (investigação necessária):
CPUUtilization:
Limite: > 70% por 15 minutos
Ação: analisar as mudanças na carga de trabalho ou no tráfego
MemoryUtilization:
Limite: > 70% por 15 minutos
Ação: analisar as mudanças na carga de trabalho ou no tráfego
DiskUtilization:
Limite: > 70%
Ação: revisar as políticas de retenção
Total IOpsPerSec:
Limite: > 70% do provisionamento por 15 minutos
Ação: analisar as mudanças na carga de trabalho ou no tráfego
QueryRequestsTotal (erro_tempo de execução):
Limite: > 1% do total de consultas
Ação: analisar as mudanças na carga de trabalho ou no tráfego
WriteTimeouts:
Limite: > 1% das operações de gravação
Ação: analisar as mudanças na carga de trabalho ou no tráfego
SeriesCardinality:
Limite: > 5.000.000
Ação: revisar a otimização do modelo de dados
Lista de verificação de monitoramento proativo
Diariamente:
APIRequestTaxa de revisão de picos de erro (400, 404, 499, 500)
Verifique as taxas QueryRequestsTotal de runtime_error e queue_error
Verifique se a WriteTimeouts contagem é mínima
Verifique se há algum alarme crítico
Verifique EngineUptime (sem reinicializações inesperadas)
Semanalmente:
Análise CPUUtilization MemoryUtilization e DiskUtilization tendências
Analise QueryRequestsTotal padrões por tipo de resultado
Verifique a taxa de SeriesCardinality crescimento por balde
Analise as tendências IOps PerSec de utilização total
Verifique se os parâmetros de configuração são ideais
Revise TaskExecutionFailures os padrões
Mensalmente:
Revisão do planejamento de capacidade (projeto com 3 a 6 meses de antecedência)
Compare as métricas atuais com a tabela de tamanhos
Revise e otimize as políticas de retenção
Analise os padrões de consulta de APIRequest Rate e QueryResponseVolume
Revisão SeriesCardinality e eficiência do modelo de dados
Avalie a necessidade de mudanças de escalabilidade ou configuração da instância
Oportunidades TotalBuckets de análise e consolidação
Guia de solução de problemas
Cenário: degradação repentina do desempenho
Etapas da investigação:
Confira as mudanças recentes:
Modificações dos parâmetros de configuração no AWS Management Console
Alterações na implantação de aplicativos
Alterações no padrão de consulta
Modificações do modelo de dados
Mudanças na infraestrutura (tipo de instância, armazenamento)
CloudWatch Métricas de revisão:
Pico de CPU? → Verifique CPUUtilization, QueryRequestsTotal
Pressão de memória? → Verifique MemoryUtilization HeapMemoryUsage, ActiveMemoryAllocation
Saturação de IOPS? → Verifique o total IOpsPerSec, ReadOpsPerSec, WriteOpsPerSec
Salto de cardinalidade da série? → Verifique o SeriesCardinality crescimento
Aumento da taxa de erro? → Verificar QueryRequestsTotal (runtime_error), APIRequest Taxa (Status=500)
Reinício inesperado? → Verificar EngineUptime
Ativar registro detalhado:
Alterações na configuração:
nível de registro: depuração
flux-log-enabled: VERDADEIRO
Monitore por 1 a 2 horas e, em seguida, revise os registros
Retornar ao nível do registro: informações após a investigação
Etapas de resolução:
Aplique as alterações de configuração apropriadas com base nas descobertas
Dimensione os recursos se os limites forem atingidos
Otimize consultas ou modelo de dados, se necessário
Implemente a limitação de taxa se a carga aumentar repentinamente
Cenário: Exaustão de memória
Sintomas:
MemoryUtilization > 90%
HeapMemoryUsage aproximando-se do máximo
QueryRequestsTotal mostrando runtime_error (sem memória)
APIRequestTaxa mostrando o status = 500
Etapas de resolução:
Ações imediatas (se críticas):
Reinicie a instância para limpar a memória (se for seguro fazer isso)
Reduza temporariamente a simultaneidade de consultas
Elimine consultas de longa duração, se possível
Alterações na configuração:
Prioridade 1: Reduzir a memória cache
storage-cache-max-memory-tamanho: reduza para 10% da RAM
Exemplo: 32GB → 3.355.443.200 bytes
storage-cache-snapshot-memory-tamanho: 26.214.400 (25 MB)
Prioridade 2: Limitar a memória de consulta
query-memory-bytes: Definido para 60% da RAM total
query-max-memory-bytes: Partida query-memory-bytes
query-initial-memory-bytes: 10% de query-memory-bytes
Prioridade 3: definir limites de proteção
influxql-max-select-series: 10000
influxql-max-select-point: 100000000
simultaneidade de consultas: reduza para 50% de v CPUs
Soluções de longo prazo:
Otimize o modelo de dados para reduzir SeriesCardinality
Implemente limites de tamanho dos resultados da consulta no nível do aplicativo
Adicionar imposição de tempo limite de consulta
Analise as consultas mais comuns para garantir que elas estejam seguindo as melhores práticas mencionadas na seção Problemas de desempenho de consultas
Cenário: Impacto de cardinalidade de alta série
CloudWatch Métricas de análise:
SeriesCardinality> 5 M
MemoryUtilizationalto
QueryRequestsTotalmostrando um aumento no runtime_error
CPUUtilizationelevado devido à sobrecarga de planejamento de consultas
Etapas da investigação:
Analise o crescimento da cardinalidade:
SeriesCardinality taxa de crescimento (diária/semanal)
Projeção até o limite de 10M
Identifique fontes de alta cardinalidade
Revise o design e o uso da tag
Avalie o impacto no desempenho:
Compare QueryRequestsTotalo aumento da before/after cardinalidade da taxa de sucesso
Revise a MemoryUtilizationcorrelação
Verifique CPUUtilizationos padrões
Analise QueryResponseVolumetendências
Identifique as fontes de cardinalidade:
Revise o modelo de dados:
Quais baldes são os mais altos SeriesCardinality?
Quais tags têm altas contagens de valores exclusivos?
Existem etiquetas desnecessárias?
Os valores das tags são ilimitados (UUIDs, carimbos de data/hora etc.)?
Revise a configuração atual:
Verifique os parâmetros de otimização:
storage-series-id-set-cache-size: valor atual?
influxql-max-select-series: Isso está limitando as consultas descontroladas?
storage-max-index-log-file-size: apropriado para cardinalidade?
Etapas de resolução:
Alterações imediatas na configuração:
Prioridade 1: otimizar o manuseio em série
storage-series-id-set-tamanho do cache: 1500-2000
storage-series-file-max-concurrent-snapshot-compactions: 6-8
storage-max-index-log-tamanho do arquivo: 2.097.152 (2 MB)
Prioridade 2: definir limites de proteção
influxql-max-select-series: 10000
influxql-max-select-buckets: 1000
simultaneidade de consultas: reduza se houver restrição de memória
Prioridade 3: aumentar os recursos
Escale para o próximo nível de instância
Aumente a alocação de memória
Considere o nível de armazenamento de IOPS de 12K
Planejamento de migração (se > série 10M):
O InfluxDB 3.0 oferece desempenho superior de alta cardinalidade
Cronograma de migração do plano (2 a 3 meses)
Teste primeiro com um subconjunto de dados
Preparar o aplicativo para migração
O InfluxDB 3.0 usa armazenamento colunar otimizado para bilhões de séries
Cenário: acúmulo de filas de consultas
CloudWatch Métricas de análise:
QueryRequestsTotalcom result=queue_error aumentando (consultas sendo rejeitadas)
APIRequestTarifa com Status=429 ou Status=503 (atende a muitas solicitações) unavailable/too
CPUUtilizationpode estar elevado (> 70%) indicando saturação de recursos
MemoryUtilizationpode ser alto (> 70%), limitando a capacidade de consulta
QueryResponseVolumemostrando grandes tamanhos de resposta (consultas que consomem recursos excessivos)
Etapas da investigação:
Analise as métricas de fila e simultaneidade:
Análise QueryRequestsTotaldetalhada por tipo de resultado:
A alta contagem de queue_error indica que as consultas estão sendo rejeitadas
Compare a taxa de sucesso com a linha de base - ela está caindo?
Verifique se há aumentos de runtime_error (as consultas falham após o início)
Monitore os padrões de APIRequesttaxa:
Procure Status=429 (muitas solicitações) ou Status=503 (serviço indisponível)
Identifique quais endpoints estão sofrendo rejeições
Verifique as tendências das taxas de solicitação ao longo do tempo
Revise a utilização de recursos:
CPUUtilizationdurante períodos de alta fila:
Se > 70%, as consultas estão vinculadas à CPU e não podem ser executadas mais rapidamente
Se < 50%, os limites da fila podem ser muito restritivos
MemoryUtilizationcorrelação:
Memória alta pode estar limitando a simultaneidade de consultas
Verifique HeapMemoryUsagee verifique ActiveMemoryAllocationa pressão da memória
IOpsPerSecPadrões totais:
Alto I/O pode estar retardando a execução da consulta
Verifique se as consultas estão vinculadas I/O
Identifique padrões de consulta:
Resenha QueryResponseVolume:
As consultas estão retornando dados excessivos (> 1 MB)?
Identifique endpoints com maiores volumes de resposta
Procure padrões em consultas caras
Analise QueryRequestsTotala taxa:
Qual é a taxa de consultas por segundo?
Há padrões de ruptura ou alta carga sustentada?
Compare com a capacidade da instância na tabela de tamanhos
Verifique a APIRequesttaxa por endpoint:
Quais endpoints de consulta têm maior tráfego?
Há consultas duplicadas ou redundantes?
Verifique a disponibilidade do recurso:
Compare as métricas atuais com as recomendações da tabela de tamanhos:
SeriesCardinalityversus capacidade da classe de instância
Taxa de consulta versus consultas recomendadas por segundo
CPUUtilizatione altura MemoryUtilizationlivre
Verifique a capacidade de IOPS:
O total IOps PerSec deve ter 30% de altura livre
Verifique se as consultas estão aguardando a E/S do disco
Etapas de resolução:
Alterações na configuração:
Prioridade 1: aumentar a capacidade da fila
query-queue-size: 4096 (do padrão 1024)
Prioridade 2: Aumentar a simultaneidade (se os recursos permitirem)
simultaneidade de consultas: aumente para 75% de v CPUs
Exemplo: 16 vCPU → simultaneidade de consultas = 12
Verifique se CPUUtilization permanece < 80% após a alteração
Verifique se MemoryUtilization permanece < 80% após a alteração
Prioridade 3: otimizar a execução da consulta
query-memory-bytes: Garantir uma alocação adequada
storage-series-id-set-tamanho do cache: 1000-1500
http-read-timeout: 120s (evite tempos limite prematuros)
Prioridade 4: definir limites de proteção
influxql-max-select-series: 10000
influxql-max-select-point: 100000000
Soluções em nível de aplicativo:
Implemente o armazenamento em cache dos resultados da consulta (Redis, Memcached)
Resultados de cache para consultas executadas com frequência
Defina de forma adequada TTLs com base nos requisitos de atualização de dados
Monitorar taxas de acerto do cache
Use consultas contínuas para pré-agregar padrões comuns
Pré-calcule agregações comuns
Consulte dados pré-agregados em vez de dados brutos
Adicione paginação para grandes conjuntos de resultados
Limitar o tamanho inicial da consulta
Carregue dados adicionais sob demanda
Implemente a limitação da taxa de consulta por usuário/painel
Evite que usuários individuais sobrecarreguem o sistema
Defina cotas de uso justo
Use dados com resolução reduzida para consultas históricas
Consulte dados de baixa resolução para intervalos de tempo mais antigos
Reserve consultas de resolução total para dados recentes
Decisão de escalonamento:
Se CPUUtilization > 70% for sustentado: escale para uma instância maior
Se MemoryUtilization > 70% for sustentado: escale para uma instância otimizada para memória
Se a taxa de consulta exceder a capacidade da instância: escale para o próximo nível por tabela de dimensionamento