Interpretar los resultados del rendimiento en AlloyDB Omni en una VM

Selecciona una versión de la documentación:

En este documento se describe cómo interpretar los resultados de rendimiento de AlloyDB Omni en una máquina virtual. En este documento se da por hecho que conoces PostgreSQL.

Cuando representas gráficamente el rendimiento a lo largo del tiempo a medida que se modifica otra variable, normalmente el rendimiento aumenta hasta que se agotan los recursos.

En la siguiente figura se muestra un gráfico de escalado de rendimiento típico. A medida que aumenta el número de clientes, la carga de trabajo y el rendimiento también aumentan hasta que se agotan todos los recursos.

Gráfico de escalado del rendimiento que muestra el rendimiento en función del número de clientes. A medida que aumenta el número de clientes, el rendimiento también aumenta hasta que se agotan todos los recursos.
Imagen 1: gráfico que muestra el escalado típico del rendimiento. A medida que aumenta el número de clientes, la carga de trabajo y el rendimiento también aumentan hasta que se agotan todos los recursos.

Lo ideal es que, al duplicar la carga del sistema, el rendimiento también se duplique. En la práctica, habrá una contención de recursos que provocará aumentos de rendimiento menores. En algún momento, el agotamiento o la contención de recursos hará que el rendimiento se estabilice o incluso disminuya. Si estás optimizando el rendimiento, es fundamental que identifiques este punto, ya que te ayudará a centrar tus esfuerzos en ajustar la aplicación o el sistema de base de datos para mejorar el rendimiento.

Estos son algunos de los motivos habituales por los que el rendimiento puede estabilizarse o disminuir:

  • Agotamiento de los recursos de CPU en el servidor de la base de datos
  • Agotamiento de los recursos de CPU en el cliente, por lo que no se envía más trabajo al servidor de la base de datos
  • Contención de bloqueo de base de datos
  • Tiempo de espera de E/S cuando los datos superan el tamaño del grupo de búfer de PostgreSQL.
  • Tiempo de espera de E/S debido a la utilización del motor de almacenamiento
  • Cuellos de botella en el ancho de banda de la red al devolver datos al cliente

La latencia y el rendimiento son inversamente proporcionales. A medida que aumenta la latencia, disminuye el rendimiento. Intuitivamente, tiene sentido. Cuando empieza a producirse un cuello de botella, las operaciones tardan más y el sistema realiza menos operaciones por segundo.

Gráfico de escalado de latencia que muestra que la latencia se mantiene constante hasta que se produce fricción debido a la contención de recursos.
Imagen 2: gráfico que muestra un escalado de latencia típico. La latencia se mantiene constante hasta que se produce una fricción debido a la contención de recursos.

El gráfico de escalado de latencia muestra cómo cambia la latencia a medida que aumenta la carga de un sistema. La latencia se mantiene relativamente constante hasta que se produce fricción debido a la contención de recursos. El punto de inflexión de esta curva suele corresponderse con el aplanamiento de la curva de rendimiento en el gráfico de escalado del rendimiento.

Otra forma útil de evaluar la latencia es mediante un histograma. En esta representación, agrupamos las latencias en contenedores y contamos cuántas solicitudes corresponden a cada contenedor.

Gráfico de escalado de latencia que muestra que la latencia se mantiene constante hasta que se produce fricción debido a la contención de recursos.
Imagen 3: figura que muestra un histograma de latencia típico. La latencia se mantiene constante hasta que se produce una fricción debido a la contención de recursos.*

Este histograma de latencia muestra que la mayoría de las solicitudes tardan menos de 100 milisegundos y que hay latencias superiores a 100 milisegundos. Conocer la causa de las solicitudes con latencias de cola más largas puede ayudar a explicar las variaciones en el rendimiento de la aplicación. Las causas de la cola larga de latencias aumentadas corresponden a las latencias aumentadas que se observan en el gráfico de escalado de latencia típico y al aplanamiento del gráfico de rendimiento.

El histograma de latencia es más útil cuando hay varias modalidades en una aplicación. Una modalidad es un conjunto normal de condiciones de funcionamiento. Por ejemplo, la mayoría de las veces, la aplicación accede a páginas que están en la caché de búfer. La mayoría de las veces, la aplicación actualiza las filas, pero puede haber varios modos. En ocasiones, la aplicación recupera páginas del almacenamiento, inserta filas nuevas o experimenta conflictos de bloqueo.

Cuando una aplicación se encuentra con estos diferentes modos de funcionamiento a lo largo del tiempo, el histograma de latencia muestra estas modalidades.

Gráfico de escalado de latencia que muestra que la latencia se mantiene constante hasta que se produce fricción debido a la contención de recursos.
Imagen 4: figura que muestra un histograma de latencia bimodal típico. La latencia se mantiene constante hasta que se produce una fricción debido a la contención de recursos.

Esta cifra muestra un histograma bimodal típico en el que la mayoría de las solicitudes se atienden en menos de 100 milisegundos, pero hay otro clúster de solicitudes que tardan entre 401 y 500 milisegundos. Conocer la causa de esta segunda modalidad puede ayudarte a mejorar el rendimiento de tu aplicación. También puede haber más de dos modalidades.

La segunda modalidad puede deberse a operaciones normales de la base de datos, a una infraestructura y una topología heterogéneas o al comportamiento de la aplicación. Estos son algunos ejemplos que puedes tener en cuenta:

  • La mayoría de los accesos a datos proceden del grupo de búferes de PostgreSQL, pero algunos proceden del almacenamiento.
  • Diferencias en las latencias de red de algunos clientes al servidor de bases de datos
  • Lógica de aplicación que realiza diferentes operaciones en función de la entrada o la hora del día
  • Contención de bloqueo esporádica
  • Picos en la actividad del cliente