Eventos de espera do Limitless Database - Amazon Aurora
Evento de espera IO:TwophaseFilePoolWriteEvento de espera IO:TwophaseFilePoolReadEvento de espera AuroraLimitlessEvento de espera AuroraLimitless:AsyncConnectEvento de espera AuroraLimitless:RemoteStatementSetupEvento de espera AuroraLimitless:RemoteDDLExecutionEvento de espera AuroraLimitless:RemoteStatementExecutionEvento de espera AuroraLimitless:FetchRemoteResultsEvento de espera AuroraLimitless:AsyncGetInitialResponseEvento de espera AuroraLimitless:AsyncGetNextResponseEvento de espera AuroraLimitless:AbortedCommandCleanupEvento de espera AuroraLimitless:DistributedCommitPrepareEvento de espera AuroraLimitless:DistributedCommitEvento de espera AuroraLimitless:DistributedCommitPrepareThrottleEvento de espera AuroraLimitless:PreparedTransactionResolutionEvento de espera AuroraLimitless:SendPreparedTransactionOutcomeEvento de espera AuroraLimitless:CommitClockBarrierEvento de espera AuroraLimitless:SnapshotClockBarrierEvento de espera AuroraLimitless:ReaderSnapshotClockBarrierEvento de espera AuroraLimitless:GatherDistributedDeadlockGraphEvento de espera AuroraLimitless:DistributedDeadlockDetectionEvento de espera AuroraLimitless:DistributedDeadlockAbortEvento de espera AuroraLimitless:GatherRemoteStatsEvento de espera AuroraLimitless:GlobalSequenceRefreshEvento de espera AuroraLimitless:GlobalVacuumTimeExchangeEvento de espera AuroraLimitless:DistributedTransactionMonitorGatherEvento de espera AuroraLimitlessActivity:AdminTaskSchedulerMainEvento de espera AuroraLimitlessActivity:AdminTaskExecutorMainEvento de espera AuroraLimitlessActivity:AdminTaskMonitorMainEvento de espera AuroraLimitlessActivity:DatabaseCleanupMonitorMainEvento de espera AuroraLimitlessActivity:TopologyCleanupMonitorMainEvento de espera AuroraLimitlessActivity:ToplogyChangeMonitorMainEvento de espera AuroraLimitlessActivity:DistributedTransactionMonitorMainEvento de espera AuroraLimitlessActivity:GlobalVacuumMonitorMain

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