Eventos de espera de Base de datos ilimitada - Amazon Aurora
Evento de espera IO:TwophaseFilePoolWriteEvento de espera IO:TwophaseFilePoolReadEvento de espera AuroraLimitless:ConnectEvento 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 de Base de datos ilimitada

Los siguientes eventos de espera afectan a Base de datos ilimitada de Aurora PostgreSQL. Puede supervisar estos eventos de espera para identificar los cuellos de botella en el procesamiento de Base de datos ilimitada de Aurora PostgreSQL.

Temas

Evento de espera IO:TwophaseFilePoolWrite

A la espera de una escritura de un archivo de estado de dos fases dentro del grupo de archivos de estado de dos fases. Este es un evento específico de Aurora.

Causas

Los procesos que ejecutan un comando PREPARED TRANSACTION, incluidos los participantes en una transacción distribuida de Base de datos ilimitada, deben conservar el estado de la transacción en un archivo de dos fases. Aurora utiliza un grupo de archivos para mejorar el rendimiento de esta operación.

Acción

Se trata de una operación de E/S de escritura sincrónica y, por lo tanto, una latencia alta en este evento tiene causas similares a IO:XactSync y se puede investigar de la misma manera. Si utiliza Base de datos ilimitada, es posible que tenga que reducir el número de transacciones distribuidas que se ejecutan.

Evento de espera IO:TwophaseFilePoolRead

A la espera de una lectura de un archivo de estado de dos fases dentro del grupo de archivos de estado de dos fases.

Causas

Es posible que los procesos que ejecutan un comando COMMIT PREPARED en una transacción preparada previamente, incluidos los participantes en una transacción distribuida de Base de datos ilimitada, tengan que leer el estado de la transacción mantenido previamente en un archivo de dos fases. Aurora utiliza un grupo de archivos para mejorar el rendimiento de esta operación.

Acción

Esta es una operación de E/S de lectura. Por lo tanto, una latencia alta en este evento tiene causas similares a IO:DataFileRead y se puede investigar de la misma manera. Si utiliza Base de datos ilimitada, es posible que tenga que reducir el número de transacciones distribuidas que se ejecutan.

Evento de espera AuroraLimitless:Connect

El proceso espera a que se establezca una conexión con otro nodo del clúster.

Causas

Se establecen conexiones entre los procesos y los nodos remotos para ejecutar consultas, distribuir transacciones y ejecutar DDL.

Acción

Reduzca la cantidad de conexiones simultáneas al clúster o ajuste el uso de consultas entre particiones.

Evento de espera AuroraLimitless:AsyncConnect

Este evento es similar a Connect, pero representa un proceso que espera a que se establezcan conexiones paralelas a un conjunto de nodos.

Causas

El establecimiento de una conexión paralela se realiza normalmente al ejecutar sentencias DDL.

Acción

Reduzca el número de sentencias DDL o combine varios DDL en la misma sesión para mejorar la reutilización de las conexiones.

Evento de espera AuroraLimitless:RemoteStatementSetup

El proceso está esperando a que se configure la ejecución remota de consultas, como abrir o cerrar el cursor o crear una instrucción preparada.

Causas

Este evento de espera aumenta con el número de escaneos en tablas particionadas en las que la instrucción no se ha podido optimizar en una sola partición.

Acción

Optimice las consultas para reducir el número de operaciones de escaneo o aumentar la elegibilidad para la optimización de una sola partición.

Evento de espera AuroraLimitless:RemoteDDLExecution

El proceso está esperando a que se complete un comando DDL remoto.

Causas

Al ejecutar un comando DDL en un grupo de particiones de base de datos, debe distribuirse a otros nodos de enrutadores y particiones antes de confirmar la operación. Algunas operaciones de DDL pueden ejecutarse durante mucho tiempo, ya que los datos deben adaptarse a los cambios de esquema.

Acción

Identifique los comandos DDL de ejecución prolongada para poder optimizarlos.

Evento de espera AuroraLimitless:RemoteStatementExecution

Un proceso está esperando a que se complete un comando remoto.

Causas

Se está ejecutando un comando SQL en un nodo remoto. Este evento aparecerá con frecuencia en las comunicaciones internas, por ejemplo, en auto_analyze y en las comprobaciones de latidos del corazón.

Acción

Identifique los comandos de ejecución prolongada con la vista limitless_stat_statements. En muchos casos, esto es algo esperado, especialmente para los trabajadores en segundo plano o los procesos internos. No es necesario realizar ninguna acción.

Evento de espera AuroraLimitless:FetchRemoteResults

Un proceso está esperando para recuperar filas de un nodo remoto.

Causas

Este evento de espera puede aumentar al obtener un gran número de filas de una tabla remota, como una tabla particionada o de referencia.

Acción

Identifique las consultas SELECT no optimizadas con la vista limitless_stat_statements. Optimice las consultas para recuperar solo los datos necesarios. También puede adaptar el parámetro rds_aurora.limitless_maximum_adaptive_fetch_size.

Evento de espera AuroraLimitless:AsyncGetInitialResponse

El proceso espera una respuesta inicial cuando se utiliza el modo de canalización en la ejecución de la consulta.

Causas

Esto suele ocurrir durante la ejecución de enrutador a partición en el caso de consultas con una ubicación de datos de una sola partición. Todo esto forma parte de la ejecución normal.

Acción

No hay que hacer nada más.

Evento de espera AuroraLimitless:AsyncGetNextResponse

El proceso espera una respuesta adicional cuando se utiliza el modo de canalización en la ejecución de la consulta.

Causas

Esto suele ocurrir durante la ejecución de enrutador a partición en el caso de consultas con una ubicación de datos de una sola partición. Todo esto forma parte de la ejecución normal.

Acción

No hay que hacer nada más.

Evento de espera AuroraLimitless:AbortedCommandCleanup

El proceso está esperando el resultado de una consulta de limpieza remota. Las consultas de limpieza se envían a los nodos de partición para devolverlos al estado adecuado cuando finaliza una transacción distribuida.

Causas

La limpieza de transacciones se realiza cuando una transacción se cancela porque se ha detectado un error o porque un usuario ha emitido un comando ABORT explícito o ha cancelado la consulta en ejecución.

Acción

Investigue la causa de la cancelación de la transacción.

Evento de espera AuroraLimitless:DistributedCommitPrepare

El proceso confirma una transacción distribuida y espera a que todos los participantes confirmen el comando prepare.

Causas

Las transacciones que modifican varios nodos deben realizar una confirmación distribuida. Una espera prolongada en DistributedCommitPrepare podría deberse a las largas esperas del evento IO:TwophaseFilePoolWrite en los nodos participantes.

Acción

Reduzca la cantidad de transacciones que modifican los datos en varios nodos. Investigue los eventos IO:TwophaseFilePoolWrite en otros nodos del clúster.

Evento de espera AuroraLimitless:DistributedCommit

El proceso confirma una transacción distribuida y espera a que todos los participantes principales confirmen el comando commit.

Causas

Las transacciones que modifican varios nodos deben realizar una confirmación distribuida. Una espera prolongada en DistributedCommit podría deberse a las largas esperas del evento IO:XactSync en el participante principal.

Acción

Reduzca la cantidad de transacciones que modifican los datos en varios nodos. Investigue los eventos IO:XactSync en otros nodos del clúster.

Evento de espera AuroraLimitless:DistributedCommitPrepareThrottle

El proceso intenta preparar una transacción distribuida y tiene limitaciones debido a las transacciones preparadas existentes.

Causas

Las transacciones que modifican varios nodos deben realizar una confirmación distribuida. Los participantes en estas transacciones deben realizar una operación de preparación como parte del protocolo de confirmación. Aurora limita el número de preparaciones simultáneas y, si se supera este límite, el proceso esperará en el evento DistributedCommitPrepareThrottle.

Acción

Reduzca la cantidad de transacciones que modifican los datos en varios nodos. Investigue los eventos IO:TwophaseFilePoolWrite, ya que el aumento del tiempo transcurrido en esos eventos podría provocar la acumulación de transacciones preparadas existentes y, por lo tanto, limitar los nuevos intentos de preparación.

Evento de espera AuroraLimitless:PreparedTransactionResolution

El proceso ha detectado una tupla modificada por una transacción distribuida que tiene el estado preparado. El proceso debe determinar si la transacción distribuida será visible en su instantánea.

Causas

Las transacciones que modifican varios nodos deben realizar una confirmación distribuida que incluye una fase de preparación. Un número elevado de transacciones distribuidas o un aumento de la latencia en las confirmaciones distribuidas pueden provocar que otros procesos se topen con el evento de espera PreparedTransactionResolution.

Acción

Reduzca la cantidad de transacciones que modifican los datos en varios nodos. Investigue los eventos relacionados con las confirmaciones distribuidas, ya que si se prolonga el tiempo transcurrido en esos eventos, podría aumentar la latencia en la ruta de confirmación de las transacciones distribuidas. Se recomienda que investigue las cargas de red y de la CPU.

Evento de espera AuroraLimitless:SendPreparedTransactionOutcome

El proceso se ejecuta en un nodo que coordina una transacción distribuida y otro proceso ha preguntado por el estado de esa transacción, o bien el proceso ha confirmado una transacción distribuida y está enviando el resultado a los participantes.

Causas

Los procesos en los que se produzca el evento de espera PreparedTransactionResolution consultarán al coordinador de transacciones. La respuesta del coordinador de transacciones será SendPreparedTransactionOutcome.

Acción

Reduzca la cantidad de transacciones que modifican los datos en varios nodos. Investigue los eventos relacionados con las confirmaciones distribuidas, además de los eventos IO:TwophaseFilePoolWrite y IO:TwophaseFilePoolRead, pues esos eventos podrían aumentar la latencia en la ruta de confirmación de las transacciones distribuidas. Se recomienda que investigue las cargas de red y de la CPU.

Evento de espera AuroraLimitless:CommitClockBarrier

El proceso está confirmando una transacción y debe esperar para garantizar que el tiempo de confirmación asignado ya haya pasado en todos los nodos del clúster.

Causas

La saturación de la CPU o de la red podría provocar un aumento de la desviación del reloj, lo que provocaría que se perdiera tiempo en este evento de espera.

Acción

Investigue la saturación de la CPU o de la red en su clúster.

Evento de espera AuroraLimitless:SnapshotClockBarrier

El proceso ha recibido un tiempo de la instantánea de otro nodo con un reloj que marca una hora futura y está esperando a que su propio reloj alcance esa hora.

Causas

Por lo general, esto ocurre después de que el proceso haya recibido los resultados de una función que se ha colocado en una partición y cuando el reloj se desvía entre los nodos. La saturación de la CPU o de la red podría provocar un aumento de la desviación del reloj, lo que provocaría que se perdiera tiempo en este evento de espera.

Acción

Investigue la saturación de la CPU o de la red en su clúster.

Evento de espera AuroraLimitless:ReaderSnapshotClockBarrier

Este evento se produce en los nodos de lectura. El proceso espera a que el nodo de lectura reproduzca el flujo de escritura para que se apliquen todas las escrituras que se realizaron antes de la instantánea del proceso.

Causas

Un aumento del retraso en la réplica de Aurora puede provocar un aumento del tiempo de espera en este evento.

Acción

Investigue el retraso de la réplica de Aurora.

Evento de espera AuroraLimitless:GatherDistributedDeadlockGraph

El proceso consiste en comunicarse con otros nodos para recopilar gráficos de bloqueo como parte de la detección de interbloqueos distribuidos.

Causas

Cuando un proceso está esperando un bloqueo, realizará una comprobación de interbloqueo distribuido después de esperar más de rds_aurora.limitless_distributed_deadlock_timeout.

Acción

Investigue las causas de la contención de bloqueos en su aplicación y considere la posibilidad de ajustar rds_aurora.limitless_distributed_deadlock_timeout.

Evento de espera AuroraLimitless:DistributedDeadlockDetection

El proceso consiste en comunicarse con otros nodos para detectar un interbloqueo distribuido.

Causas

Cuando un proceso está esperando un bloqueo, realizará una comprobación de interbloqueo distribuido después de esperar más de rds_aurora.limitless_distributed_deadlock_timeout.

Acción

Investigue las causas de la contención de bloqueos en su aplicación y considere la posibilidad de ajustar rds_aurora.limitless_distributed_deadlock_timeout.

Evento de espera AuroraLimitless:DistributedDeadlockAbort

El proceso consiste en comunicarse con otro nodo para abortar una sesión elegida como víctima de un interbloqueo distribuido.

Causas

Los patrones de la aplicación están provocando interbloqueos distribuidos.

Acción

Investigue los patrones de la aplicación que están provocando interbloqueos distribuidos.

Evento de espera AuroraLimitless:GatherRemoteStats

El proceso consiste en recopilar estadísticas de otros nodos del clúster.

Causas

La supervisión de las consultas y vistas de actividad, como limitless_stat_activity, recuperará estadísticas de otros nodos.

Acción

No hay que hacer nada más.

Evento de espera AuroraLimitless:GlobalSequenceRefresh

El proceso está generando un nuevo valor de secuencia y debe solicitar un nuevo fragmento de la secuencia global.

Causas

Una alta tasa de generación de valores de secuencia puede causar retrasos en este evento si rds_aurora.limitless_sequence_chunk_size no es suficiente.

Acción

Esto es normal. Si ve un tiempo excesivo en este evento, considere la posibilidad de adaptar rds_aurora.limitless_sequence_chunk_size. Consulte la documentación sobre secuencias en Base de datos ilimitada.

Evento de espera AuroraLimitless:GlobalVacuumTimeExchange

El proceso consiste en intercambiar datos de instantáneas para respaldar el vaciado.

Causas

Los nodos de Base de datos ilimitada intercambian los datos de tiempo de las instantáneas activas más antiguas con otros nodos para calcular el tiempo límite correcto para la ejecución de vaciado.

Acción

No hay que hacer nada más.

Evento de espera AuroraLimitless:DistributedTransactionMonitorGather

El proceso consiste en recopilar metadatos de transacciones de otros nodos para facilitar la limpieza de transacciones distribuidas.

Causas

Los nodos de Base de datos ilimitada intercambian los metadatos de las transacciones con otros nodos para determinar cuándo se puede purgar el estado de las transacciones distribuidas.

Acción

No hay que hacer nada más.

Evento de espera AuroraLimitlessActivity:AdminTaskSchedulerMain

Esperando en el bucle principal del proceso del programador de tareas.

Evento de espera AuroraLimitlessActivity:AdminTaskExecutorMain

Esperando en el bucle principal del proceso del ejecutor de tareas.

Evento de espera AuroraLimitlessActivity:AdminTaskMonitorMain

Esperando en el bucle principal del proceso de supervisión de tareas.

Evento de espera AuroraLimitlessActivity:DatabaseCleanupMonitorMain

Esperando en el bucle principal del proceso de supervisión de limpieza de la base de datos.

Evento de espera AuroraLimitlessActivity:TopologyCleanupMonitorMain

Esperando en el bucle principal del proceso de supervisión de limpieza de la topología.

Evento de espera AuroraLimitlessActivity:ToplogyChangeMonitorMain

Esperando en el bucle principal del proceso de supervisión de cambio de la topología.

Evento de espera AuroraLimitlessActivity:DistributedTransactionMonitorMain

Esperando en el ciclo principal del proceso de supervisión de transacciones distribuidas.

Evento de espera AuroraLimitlessActivity:GlobalVacuumMonitorMain

Esperando en el bucle principal del proceso de supervisión de vaciado.