Soluciona problemas de latencia

Como cualquier sistema de base de datos, Bigtable puede experimentar problemas de latencia. En este documento, se analizan las causas comunes de los problemas de latencia en Bigtable y se explica cómo solucionar problemas.

Diagnostica y resuelve problemas de latencia de Bigtable con los pasos para solucionar problemas que se indican en las siguientes secciones:

Comprende las causas de la latencia alta

Los siguientes factores contribuyen a los problemas de latencia en Bigtable:

  • Latencia del servidor. La medición de la latencia del servidor comienza cuando Bigtable recibe la solicitud y finaliza cuando Bigtable envía al cliente el último byte de datos. En el caso de las solicitudes de grandes cantidades de datos, la capacidad del cliente de consumir la respuesta puede afectar la latencia del servidor.
  • Las latencias de operación miden el tiempo total de extremo a extremo de una operación de Bigtable, incluidos todos los reintentos. Esta métrica hace un seguimiento del recorrido de ida y vuelta del cliente a Bigtable y de vuelta al cliente. La latencia de tu aplicación, la conexión de red, la latencia de la biblioteca cliente de Bigtable y las latencias del servidor afectan la latencia de las operaciones.
  • Los patrones de carga de trabajo y solicitud pueden aumentar la latencia no solo debido a un problema de infraestructura, sino también a un cambio en el patrón de trabajo que solicita la aplicación. Por ejemplo, una consulta de análisis generada de forma dinámica que antes analizaba cien filas ahora analiza un millón de filas debido a una importación de datos reciente o un cambio en la lógica de la aplicación. Si bien el sistema puede estar funcionando de manera eficiente, el aumento significativo en la cantidad de trabajo para una sola operación genera un tiempo de ejecución más largo, lo que Bigtable percibe como una latencia más alta.

Antes de comenzar

Para solucionar problemas de latencia alta, realiza las siguientes tareas:

  • Habilita las métricas del cliente para tu biblioteca cliente para optimizar el rendimiento y resolver problemas.
  • Para minimizar la latencia de red, verifica que tu aplicación resida en la misma zona que tu clúster de Bigtable. Esto reduce la distancia de red entre tu aplicación y tu clúster, lo que mejora los tiempos de respuesta para las solicitudes.
  • Recopila la siguiente información sobre tu entorno de Bigtable:
  • Recopila la siguiente información sobre tu entorno del cliente:
  • Recopila la siguiente información sobre el problema:

Soluciona problemas de latencia

Si tienes problemas de latencia en Bigtable, sigue estos pasos para solucionar el problema:

  1. Verifica la latencia del servidor: Usa la página Supervisión en la consola deGoogle Cloud para ver la latencia del servidor. Para obtener más información, consulta Supervisa con Cloud Monitoring. Verifica la latencia de tu instancia. Si la instancia contiene varios clústeres, divide la métrica por clúster. Si observas aumentos en la latencia en los gráficos de latencia de lectura o escritura, o en las métricas del cliente, sigue los pasos para solucionar problemas de latencia del servidor que se indican en la sección Soluciona problemas de latencia del servidor de este documento.
  2. Verifica la latencia del cliente: Después de habilitar las métricas del cliente, busca bigtable.googleapis.com/client en el Explorador de métricas de Cloud Monitoring. Revisa las métricas del cliente disponibles. Si observas un aumento de la latencia en las métricas del cliente, pero no en el servidor, examina la aplicación y la conexión de red. Para obtener más información, consulta la sección Soluciona problemas de latencia del cliente de este documento.

En el siguiente diagrama, se muestra el proceso para solucionar problemas de aumento de la latencia en Bigtable:

Diagrama de flujo para solucionar problemas de latencia de Bigtable.
Figura 1. Proceso de solución de problemas de latencia de Bigtable (haz clic para ampliar).

Soluciona problemas de latencia del cliente

Sigue estos pasos para solucionar los problemas de latencia del cliente.

Antes de comenzar

Antes de comenzar a solucionar problemas de latencia del cliente, completa las siguientes tareas:

  • Habilitar las métricas del cliente en Bigtable
  • Habilita la preparación de canales si usas un cliente de Java de la versión 2.17.1 o anterior. La actualización de canales está habilitada de forma predeterminada a partir de la versión 2.18.0.
  • Itera para determinar el tamaño óptimo del grupo de conexiones para tu carga de trabajo. Los canales inadecuados o excesivos pueden causar latencias de intentos altas.

Verifica las latencias de bloqueo de la aplicación

Verifica la métrica Application Blocking Latencies en la consola de Google Cloud y realiza una de las siguientes acciones:

  • Si las latencias de bloqueo de la aplicación son altas y corresponden al aumento de latencia informado, enfócate en solucionar los problemas del cliente.
  • Si las latencias de bloqueo de la aplicación son altas y el cliente está alojado en la infraestructura deGoogle Cloud , como GKE o Compute Engine, escala el problema al equipo de asistencia de Google Cloud adecuado.
  • Si las latencias de bloqueo de la aplicación son bajas y la latencia de entrega de Bigtable también es baja, es probable que el cuello de botella de la latencia se encuentre en un componente intermedio de la red o de la ruta de tráfico, como la red o el frontend de Google. Considera derivar el problema al equipo de redes de Google Cloud para que te ayude con una captura de paquetes completa para identificar el cuello de botella de latencia.

Cómo abordar las latencias de operaciones altas

  1. Si connectivity_error_count es alto, la aplicación tiene problemas para llegar al frontend de Google. Establece tiempos de espera de RPC más bajos para que la solicitud se pueda reintentar en canales diferentes.
    • Si el tiempo de espera de RPC es demasiado bajo, también puede generar latencias de operación altas. Determina el tiempo de espera típico de RPC del P99 durante las operaciones normales. Establecer un valor de tiempo de espera de RPC más cercano a esta comparativa ayuda a optimizar el rendimiento.
  2. Si retry_count es alto, verifica la etiqueta de estado attempt_latencies. Si los intentos fallan con errores DEADLINE_EXCEEDED, el plazo de la solicitud es demasiado corto en comparación con el promedio de attempt_latencies.

Atiende las solicitudes en cola en el subproceso de gRPC

Si ninguna de las métricas supera la norma, las solicitudes pueden ponerse en cola en el subproceso de gRPC. Esto puede deberse a los siguientes motivos:

  • El tamaño del grupo de canales es demasiado pequeño y las solicitudes se ponen en cola en los canales de gRPC. Para obtener más información, consulta Solicitudes almacenadas en búfer.
  • El uso de CPU de la VM cliente es alto. El uso elevado de CPU también genera una cola de solicitudes en el cliente.

Soluciona problemas de latencia del servidor

Sigue estos pasos para solucionar los problemas de latencia del servidor.

Determina si el clúster está sobrecargado

  1. Verifica los gráficos Read requests y Write requests para ver si hay cambios en las QPS.
  2. Revisa el gráfico Node count para ver si hay cambios en el recuento de nodos.
  3. Verifica los gráficos Read throughput y Write throughput para ver si hay aumentos en el ancho de banda. Para obtener más información, consulta Información sobre el rendimiento.
  4. Para identificar cómo el perfil de la app, el método y la tabla usan la CPU para solucionar problemas de rendimiento, consulta la entrada de blog ¿Dónde consume la CPU tu clúster de Cloud Bigtable?.
  5. Aumenta el recuento de nodos en el clúster afectado. Para obtener más información, consulta Agrega o quita nodos de forma manual y Ajuste de escala automático. Verifica que el uso promedio de la CPU permanezca por debajo del umbral recomendado.

Verifica si hay hotspots

Una tablet activa usa un porcentaje desproporcionadamente grande de la CPU de un nodo en comparación con otras tablets asociadas a ese nodo. Este uso desequilibrado puede ocurrir debido a un volumen alto imprevisto de solicitudes a un rango de filas o a fallas en el diseño del esquema. Este uso de nodos desequilibrado puede causar latencias más altas y retrasos en la replicación, lo que se conoce como hotspots.

  1. Observa los hotspots en el gráfico CPU utilization (hottest node) high granularity.
  2. Para identificar las tablets sobrecargadas, usa tablets sobrecargadas o la herramienta Key Visualizer.
  3. A diferencia del uso excesivo de CPU a nivel del clúster, que a menudo puedes mitigar agregando más nodos (escalamiento horizontal), los hotspots pueden requerir otras técnicas de mitigación. Estas técnicas incluyen cambiar la forma en que construyes las claves de fila o cambiar el esquema. Para obtener más información, consulta la entrada de blog Elimina los hotspots en Cloud Bigtable.

Aborda la latencia con QPS bajas

Bigtable tiene un mejor rendimiento con tablas grandes a las que se accede con frecuencia. Si envías solicitudes después de un período sin uso, es posible que observes una latencia alta mientras Bigtable restablece las conexiones.

  1. Si los gráficos Read requests y Write requests muestran QPS bajas, espera tiempos de respuesta más lentos.
  2. Mitiga los problemas de inicio en frío siguiendo las prácticas recomendadas en Inicios en frío y QPS bajas.

Evalúa la eficiencia de las solicitudes

Evalúa la eficiencia de las solicitudes con la página Patrones de acceso y las estadísticas de consultas:

  • Usa la página Patrones de acceso en la consola de Google Cloud para supervisar el desglose de los tipos de consultas de lectura y escritura a lo largo del tiempo (como lecturas de puntos, análisis cortos, análisis inversos, lecturas dispersas y lecturas masivas) y comparar las filas analizadas y las celdas vistas con las filas mostradas y las celdas enviadas para tus tablas y perfiles de apps. Para obtener más información, consulta Analiza los patrones de acceso.
  • Usa las estadísticas de consultas para inspeccionar la proporción de filas vistas en comparación con las filas devueltas y las celdas vistas en comparación con las celdas devueltas para las solicitudes de lectura individuales. Mejora la eficiencia de las solicitudes revisando los patrones de consulta, los filtros o el diseño del esquema. Para obtener más información, consulta Obtén estadísticas de consultas.

Verifica los cambios en la configuración o el perfil de la app

Si el recuento de nodos y la capacidad de procesamiento no cambian, pero el uso promedio de CPU aumenta, esto puede deberse a cambios en las estrategias de replicación o de recolección de elementos no utilizados. Para obtener más información, consulta Replicación y rendimiento. Revierte cualquier cambio de configuración para la replicación o la recolección de elementos no utilizados.

Deriva el caso al equipo de asistencia de Bigtable

Si los pasos anteriores no resuelven el problema, deriva el caso a la asistencia de Bigtable.

¿Qué sigue?