Eventos de espera do Limitless Database
Os eventos de espera a seguir se aplicam ao Aurora PostgreSQL Limitless Database. Você pode monitorar esses eventos de espera para identificar gargalos no processamento do Aurora PostgreSQL Limitless Database.
Tópicos
Evento de espera AuroraLimitless:DistributedCommitPrepareThrottle
Evento de espera AuroraLimitless:PreparedTransactionResolution
Evento de espera AuroraLimitless:SendPreparedTransactionOutcome
Evento de espera AuroraLimitless:GatherDistributedDeadlockGraph
Evento de espera AuroraLimitless:DistributedDeadlockDetection
Evento de espera AuroraLimitless:DistributedTransactionMonitorGather
Evento de espera AuroraLimitlessActivity:AdminTaskSchedulerMain
Evento de espera AuroraLimitlessActivity:AdminTaskExecutorMain
Evento de espera AuroraLimitlessActivity:AdminTaskMonitorMain
Evento de espera AuroraLimitlessActivity:DatabaseCleanupMonitorMain
Evento de espera AuroraLimitlessActivity:TopologyCleanupMonitorMain
Evento de espera AuroraLimitlessActivity:ToplogyChangeMonitorMain
Evento de espera AuroraLimitlessActivity:DistributedTransactionMonitorMain
Evento de espera AuroraLimitlessActivity:GlobalVacuumMonitorMain
Evento de espera IO:TwophaseFilePoolWrite
Esperar por uma gravação de um arquivo de estado de duas fases dentro do grupo de arquivos de estado de duas fases. Este é um evento específico do Aurora.
Causas
Os processos que executam um comando PREPARED TRANSACTION
, incluindo participantes em uma transação distribuída do Limitless Database, devem persistir o estado da transação em um arquivo de duas fases. O Aurora usa um grupo de arquivos para melhorar o desempenho dessa operação.
Ação
Essa é uma operação de E/S de gravação síncrona e, portanto, uma alta latência nesse evento tem causas semelhantes a IO:XactSync
e pode ser investigada da mesma forma. Se estiver usando o Limitless Database, talvez seja necessário reduzir o número de transações distribuídas em execução.
Evento de espera IO:TwophaseFilePoolRead
Esperar pela leitura de um arquivo de estado de duas fases dentro do grupo de arquivos de estado de duas fases.
Causas
Os processos que executam um comando COMMIT PREPARED
em uma transação previamente preparada, incluindo participantes de uma transação distribuída do Limitless Database, talvez precisem ler o estado da transação anteriormente persistido em um arquivo de duas fases. O Aurora usa um grupo de arquivos para melhorar o desempenho dessa operação.
Ação
Esta é uma operação de E/S de leitura. Portanto, uma alta latência nesse evento tem causas semelhantes às de IO:DataFileRead
e pode ser investigada da mesma forma. Se estiver usando o Limitless Database, talvez seja necessário reduzir o número de transações distribuídas em execução.
Evento de espera AuroraLimitless
O processo está esperando o estabelecimento de uma conexão com outro nó no cluster.
Causas
As conexões são estabelecidas entre processos e nós remotos para executar consultas, transações distribuídas e realizar DDLs.
Ação
Reduza o número de conexões simultâneas ao cluster ou ajuste o uso de consultas entre fragmentos.
Evento de espera AuroraLimitless:AsyncConnect
Esse evento é semelhante a Connect
, mas representa um processo que espera o estabelecimento de conexões paralelas com um conjunto de nós.
Causas
O estabelecimento de conexão paralela é mais comumente feito ao executar instruções DDL.
Ação
Reduza o número de instruções DDL ou combine várias DDLs na mesma sessão para melhorar a reutilização da conexão.
Evento de espera AuroraLimitless:RemoteStatementSetup
O processo está esperando a configuração da execução da consulta remota, como abertura, fechamento do cursor ou criação de uma instrução preparada.
Causas
Esse evento de espera aumenta com o número de varreduras em tabelas fragmentadas em que a instrução não pôde ser otimizada para um único fragmento.
Ação
Otimize as consultas para reduzir o número de operações de varredura ou aumentar a elegibilidade para a otimização de um único fragmento.
Evento de espera AuroraLimitless:RemoteDDLExecution
O processo está esperando a conclusão de um comando DDL remoto.
Causas
Ao emitir um comando DDL em um grupo de fragmentos de banco de dados, ele deve ser distribuído para outros roteadores e nós de fragmento antes de confirmar a operação. Algumas operações de DDL podem ser executadas por um longo período, porque os dados devem ser adaptados às alterações do esquema.
Ação
Identifique comandos DDL de longa duração para poder otimizá-los.
Evento de espera AuroraLimitless:RemoteStatementExecution
Um processo está esperando a conclusão de um comando remoto.
Causas
Um comando SQL está sendo executado em um nó remoto. Esse evento aparecerá com frequência em comunicações internas, como verificações de auto_analyze
e de pulsação.
Ação
Identifique comandos de longa execução usando a exibição limitless_stat_statements. Em muitos casos, esse é um evento esperado, principalmente em processos em segundo plano ou processos internos, e nenhuma ação é necessária.
Evento de espera AuroraLimitless:FetchRemoteResults
Um processo está esperando para recuperar linhas de um nó remoto.
Causas
Esse evento de espera pode aumentar ao buscar muitas linhas de uma tabela remota, como uma tabela fragmentada ou de referência.
Ação
Identifique consultas SELECT
não otimizadas usando a exibição limitless_stat_statements
. Otimize as consultas para recuperar somente os dados necessários. Também é possível ajustar o parâmetro rds_aurora.limitless_maximum_variable_fetch_size
.
Evento de espera AuroraLimitless:AsyncGetInitialResponse
O processo está esperando uma resposta inicial quando o modo pipeline é usado na execução da consulta.
Causas
Isso normalmente será observado durante a execução do roteador para o fragmento em consultas com posicionamento de dados em um único fragmento e é uma parte esperada da execução normal.
Ação
Nenhuma outra ação é necessária.
Evento de espera AuroraLimitless:AsyncGetNextResponse
O processo está esperando respostas adicionais quando o modo pipeline é usado na execução da consulta.
Causas
Isso normalmente será observado durante a execução do roteador para o fragmento em consultas com posicionamento de dados em um único fragmento e é uma parte esperada da execução normal.
Ação
Nenhuma outra ação é necessária.
Evento de espera AuroraLimitless:AbortedCommandCleanup
O processo está esperando o resultado de uma consulta de limpeza remota. As consultas de limpeza são emitidas para os nós de fragmento para retorná-los ao estado apropriado quando uma transação distribuída é encerrada.
Causas
A limpeza de transação é feita quando uma transação é abortada porque um erro foi encontrado ou porque um usuário emitiu um comando ABORT explícito ou cancelou a consulta em execução.
Ação
Investigue a causa do cancelamento da transação.
Evento de espera AuroraLimitless:DistributedCommitPrepare
O processo está confirmando uma transação distribuída e esperando que todos os participantes reconheçam o comando de preparo.
Causas
As transações que modificam vários nós devem realizar uma confirmação distribuída. Uma longa espera em DistributedCommitPrepare
pode ser causada por longas esperas no evento IO:TwophaseFilePoolWrite
nos nós participantes.
Ação
Reduza o número de transações que modificam dados em vários nós. Investigue eventos IO:TwophaseFilePoolWrite
em outros nós do cluster.
Evento de espera AuroraLimitless:DistributedCommit
O processo está confirmando uma transação distribuída e esperando que o participante principal reconheça o comando de confirmação.
Causas
As transações que modificam vários nós devem realizar uma confirmação distribuída. Uma longa espera em DistributedCommit
pode ser causada por longas esperas no evento IO:XactSync
no participante principal.
Ação
Reduza o número de transações que modificam dados em vários nós. Investigue eventos IO:XactSync
em outros nós do cluster.
Evento de espera AuroraLimitless:DistributedCommitPrepareThrottle
O processo está tentando preparar uma transação distribuída e está com controle de utilização devido às transações preparadas existentes.
Causas
As transações que modificam vários nós devem realizar uma confirmação distribuída. Os participantes dessas transações devem realizar uma operação de preparação como parte do protocolo de confirmação. O Aurora limita o número de preparações simultâneas. Se esse limite for excedido, o processo aguardará no evento DistributedCommitPrepareThrottle
.
Ação
Reduza o número de transações que modificam dados em vários nós. Investigue os eventos IO:TwophaseFilePoolWrite
, pois o aumento do tempo nesses eventos pode fazer com que as transações preparadas existentes se acumulem, resultando em controle de utilização de novas tentativas de preparação.
Evento de espera AuroraLimitless:PreparedTransactionResolution
O processo encontrou uma tupla modificada por uma transação distribuída que está no estado de preparo. O processo deve determinar se a transação distribuída ficará visível no snapshot.
Causas
As transações que modificam vários nós devem realizar uma confirmação distribuída que inclui uma fase de preparo. Um alto número de transações distribuídas ou o aumento da latência em confirmações distribuídas podem fazer com que outros processos encontrem o evento de espera PreparedTransactionResolution
.
Ação
Reduza o número de transações que modificam dados em vários nós. Investigue eventos relacionados a confirmações distribuídas, pois o aumento do tempo nesses eventos pode aumentar a latência no caminho de confirmação das transações distribuídas. Também investigue as cargas da rede e da CPU.
Evento de espera AuroraLimitless:SendPreparedTransactionOutcome
O processo está sendo executado em um nó que está coordenando uma transação distribuída e outro processo perguntou sobre o estado dessa transação, ou o processo confirmou uma transação distribuída e está enviando o resultado aos participantes.
Causas
Os processos que encontrarem o evento de espera PreparedTransactionResolution
consultarão o coordenador da transação. A resposta no coordenador da transação encontrará SendPreparedTransactionOutcome.
Ação
Reduza o número de transações que modificam dados em vários nós. Investigue eventos relacionados à confirmação distribuída e eventos IO:TwophaseFilePoolWrite
e IO:TwophaseFilePoolRead
, pois esses eventos podem aumentar a latência no caminho de confirmação das transações distribuídas. Também investigue as cargas da rede e da CPU.
Evento de espera AuroraLimitless:CommitClockBarrier
O processo está confirmando uma transação e deve esperar para garantir que o tempo de confirmação atribuído seja garantidamente passado para todos os nós do cluster.
Causas
A saturação da CPU ou da rede pode causar um aumento no desvio do relógio, resultando no tempo gasto nesse evento de espera.
Ação
Investigue a saturação da CPU ou da rede no cluster.
Evento de espera AuroraLimitless:SnapshotClockBarrier
O processo recebeu um horário de snapshot de outro nó com um relógio no futuro e está esperando que seu próprio relógio atinja esse horário.
Causas
Isso geralmente ocorre depois que o processo recebe resultados de uma função que foi enviada para um fragmento e há um desvio de relógio entre os nós. A saturação da CPU ou da rede pode causar um aumento no desvio do relógio, resultando no tempo gasto nesse evento de espera.
Ação
Investigue a saturação da CPU ou da rede no cluster.
Evento de espera AuroraLimitless:ReaderSnapshotClockBarrier
Esse evento ocorre nos nós de leitura. O processo está esperando que o nó de leitura reproduza o fluxo de gravação para que todas as gravações que ocorreram antes do horário do snapshot do processo sejam aplicadas.
Causas
Um aumento no atraso da réplica do Aurora pode causar um aumento no tempo de espera nesse evento.
Ação
Investigue o atraso da réplica do Aurora.
Evento de espera AuroraLimitless:GatherDistributedDeadlockGraph
O processo está se comunicando com outros nós para coletar gráficos de bloqueio como parte da detecção de impasse distribuído.
Causas
Quando um processo está esperando um bloqueio, ele executa uma verificação de impasse distribuído após esperar mais de rds_aurora.limitless_distributed_deadlock_timeout
.
Ação
Investigue as causas da contenção de bloqueios na aplicação e considere ajustar o rds_aurora.limitless_distributed_deadlock_timeout
.
Evento de espera AuroraLimitless:DistributedDeadlockDetection
O processo está se comunicando com outros nós para detectar um impasse distribuído.
Causas
Quando um processo está esperando um bloqueio, ele executa uma verificação de impasse distribuído após esperar mais de rds_aurora.limitless_distributed_deadlock_timeout
.
Ação
Investigue as causas da contenção de bloqueios na aplicação e considere ajustar o rds_aurora.limitless_distributed_deadlock_timeout
.
Evento de espera AuroraLimitless:DistributedDeadlockAbort
O processo está se comunicando com outro nó para abortar uma sessão escolhida como vítima em um impasse distribuído.
Causas
Os padrões de aplicações estão resultando em impasses distribuídos.
Ação
Investigue os padrões de aplicações que resultam em impasses distribuídos.
Evento de espera AuroraLimitless:GatherRemoteStats
O processo está coletando estatísticas de outros nós no cluster.
Causas
As consultas e visualizações de monitoramento ou atividade, como limitless_stat_activity
, recuperarão estatísticas de outros nós.
Ação
Nenhuma outra ação é necessária.
Evento de espera AuroraLimitless:GlobalSequenceRefresh
O processo está gerando um novo valor de sequência e deve solicitar uma nova parte da sequência global.
Causas
Uma alta taxa de geração de valor de sequência pode resultar em paralisações nesse evento se rds_aurora.limitless_sequence_chunk_size
for insuficiente.
Ação
Essa é uma ocorrência normal. Se você observar um tempo excessivo nesse evento, considere ajustar o rds_aurora.limitless_sequence_chunk_size
. Consulte a documentação sobre sequências no Limitless Database.
Evento de espera AuroraLimitless:GlobalVacuumTimeExchange
O processo está trocando dados de snapshot para oferecer suporte à limpeza.
Causas
Os nós no Limitless Database trocam dados de horário do snapshot ativo mais antigo com outros nós para calcular o tempo de corte correto para a execução da limpeza.
Ação
Nenhuma outra ação é necessária.
Evento de espera AuroraLimitless:DistributedTransactionMonitorGather
O processo está reunindo metadados de transações de outros nós para oferecer suporte à limpeza de transações distribuídas.
Causas
Os nós no Limitless Database trocam metadados de transações com outros nós para determinar quando o estado de transação distribuída pode ser eliminado.
Ação
Nenhuma outra ação é necessária.
Evento de espera AuroraLimitlessActivity:AdminTaskSchedulerMain
Esperando no loop principal do processo de agendamento de tarefas.
Evento de espera AuroraLimitlessActivity:AdminTaskExecutorMain
Esperando no loop principal do processo do executor de tarefas.
Evento de espera AuroraLimitlessActivity:AdminTaskMonitorMain
Esperando no loop principal do processo de monitoramento de tarefas.
Evento de espera AuroraLimitlessActivity:DatabaseCleanupMonitorMain
Esperando no loop principal do processo de monitoramento de limpeza do banco de dados.
Evento de espera AuroraLimitlessActivity:TopologyCleanupMonitorMain
Esperando no loop principal do processo de monitoramento de limpeza de topologia.
Evento de espera AuroraLimitlessActivity:ToplogyChangeMonitorMain
Esperando no loop principal do processo de monitoramento de alterações de topologia.
Evento de espera AuroraLimitlessActivity:DistributedTransactionMonitorMain
Esperando no loop principal do processo de monitoramento de transações distribuídas.
Evento de espera AuroraLimitlessActivity:GlobalVacuumMonitorMain
Esperando no loop principal do processo de monitoramento de limpeza global.