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