Soluciona problemas de latencia
Al igual que cualquier sistema de bases 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 solucionarlos.
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 para 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 circuito 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 la operación.
- Los patrones de carga de trabajo y de solicitudes 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 debido a una importación de datos reciente o a un cambio en la lógica de la aplicación. Si bien el sistema puede funcionar 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 y, así, optimizar tu 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 de 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:
- Verifica la latencia del servidor: Usa la página Monitoring 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, segmenta la métrica por clúster. Si observas aumentos en la 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.
- 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 en la latencia de las métricas del cliente, pero no en las del servidor, examina tu aplicación y la conexión de red. Para obtener más información, consulta la sección Soluciona problemas de latencia del cliente en este documento.
En el siguiente diagrama, se muestra el proceso de solución de problemas relacionados con el aumento de la latencia en Bigtable:
Soluciona problemas de latencia del cliente
Sigue estos pasos para solucionar problemas de latencia del cliente.
Antes de comenzar
Antes de comenzar a solucionar problemas de latencia del cliente, completa las siguientes tareas:
- Habilita las métricas del cliente en Bigtable.
- Habilita el cebado de canales si usas una versión 2.17.1 o anterior del cliente de Java. La actualización del canal está habilitada de forma predeterminada a partir de la versión 2.18.0.
- Realiza iteraciones 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 aplicaciones
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 aplicaciones son altas y el cliente está alojado en la infraestructura deGoogle Cloud , como GKE o Compute Engine, deriva el caso al equipo de asistencia al cliente de Google Cloud correspondiente.
- Si las latencias de bloqueo de la aplicación son bajas y la latencia de servicio de Bigtable también es baja, es probable que el cuello de botella de latencia se encuentre en un componente intermedio de la ruta de red o de tráfico, como la red o el frontend de Google. Considera derivar el caso al equipo de redes Google Cloudpara que te ayude con una captura de paquetes completa y, así, identificar el cuello de botella de latencia.
Cómo abordar las latencias altas de las operaciones
- Si
connectivity_error_count
es alto, la aplicación tiene problemas para acceder al frontend de Google. Establece tiempos de espera de RPC más bajos para que la solicitud se pueda reintentar en diferentes canales.- Si el tiempo de espera de RPC es demasiado bajo, también puede generar latencias altas en las operaciones. Determina el tiempo de espera típico de P99 de RPC durante las operaciones normales. Establecer un valor de tiempo de espera de RPC más cercano a esta comparativa ayuda a optimizar el rendimiento.
- Si
retry_count
es alto, verifica la etiqueta de estadoattempt_latencies
. Si los intentos fallan con erroresDEADLINE_EXCEEDED
, el plazo de la solicitud es demasiado corto en comparación con elattempt_latencies
promedio.
Aborda las solicitudes en cola en el subproceso de gRPC
Si ninguna de las métricas supera la norma, es posible que las solicitudes se pongan 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 del 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 problemas de latencia del servidor.
Determina si el clúster está sobrecargado
- Verifica los gráficos de
Read requests
yWrite requests
para detectar cambios en las QPS. - Verifica el gráfico
Node count
para ver los cambios en el recuento de nodos. - Consulta los gráficos
Read throughput
yWrite throughput
para ver si hubo aumentos en el ancho de banda. Para obtener más información, consulta Información sobre el rendimiento. - Para identificar cómo se usa la CPU por perfil de app, método y tabla para solucionar problemas de rendimiento, consulta la entrada de blog ¿Dónde está consumiendo CPU tu clúster de Cloud Bigtable?.
- Aumenta el recuento de nodos en el clúster afectado. Para obtener más información, consulta Cómo agregar o quitar nodos de forma manual y Ajuste de escala automático. Verifica que el uso promedio de la CPU permanezca por debajo del umbral recomendado.
Cómo verificar 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 e 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 puntos de acceso.
- Observa los puntos calientes en el gráfico de
CPU utilization (hottest node) high granularity
. - Para identificar las tablets sobrecargadas, usa hot tablets o la herramienta Key Visualizer.
- A diferencia del uso excesivo de la CPU a nivel del clúster, que a menudo se puede mitigar agregando más nodos (escalamiento horizontal), los hotspots pueden requerir otras técnicas de mitigación. Entre estas técnicas, se 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 puntos calientes en Cloud Bigtable.
Cómo abordar la latencia con QPS bajas
Bigtable tiene un mejor rendimiento con tablas grandes a las que accedes 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.
- Si los gráficos de
Read requests
yWrite requests
muestran un QPS bajo, es probable que los tiempos de respuesta sean más lentos. - Para mitigar los problemas de inicio en frío, sigue las prácticas recomendadas que se indican en Inicios en frío y QPS bajas.
Evalúa la eficiencia de las solicitudes
Evalúa la eficiencia de las solicitudes con las estadísticas de consultas. Las estadísticas de consultas muestran la proporción de filas vistas en relación con las filas devueltas y de celdas vistas en relación con las celdas devueltas, lo que indica la eficiencia de las consultas. Mejora la eficiencia de las solicitudes revisando los patrones de consultas o el diseño del esquema. Para obtener más información, consulta Cómo obtener estadísticas de consultas.
Verifica los cambios en la configuración o el perfil de la app
Si la cantidad de nodos y el rendimiento permanecen sin cambios, pero el uso promedio de la CPU aumenta, esto podría 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 al equipo de asistencia de Bigtable.
¿Qué sigue?
- Obtén más información sobre el rendimiento de Bigtable.
- Consulta Métricas de Bigtable.
- Explora las métricas disponibles en Key Visualizer.