Solucionar problemas de latencia
Al igual que cualquier sistema de base de datos, Bigtable puede experimentar problemas de latencia. En este documento se describen las causas habituales de los problemas de latencia en Bigtable y se explica cómo solucionarlos.
Diagnostica y resuelve problemas de latencia de Bigtable siguiendo los pasos que se indican en las siguientes secciones:
Identificar 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 termina cuando Bigtable envía el último byte de datos al cliente. En el caso de las solicitudes de grandes cantidades de datos, la capacidad del cliente para consumir la respuesta puede afectar a la latencia del servidor.
- La latencia de las operaciones mide el tiempo total de extremo a extremo de una operación de Bigtable, incluidos todos los reintentos. Esta métrica registra el tiempo de ida y vuelta desde el cliente a Bigtable y de vuelta al cliente. La latencia de tu aplicación, la conexión de red, la latencia de la biblioteca de cliente de Bigtable y las latencias del servidor afectan a la latencia de las operaciones.
- Los patrones de carga de trabajo y de solicitudes pueden aumentar la latencia no solo por un problema de infraestructura, sino también por un cambio en el patrón de trabajo que solicita la aplicación. Por ejemplo, una consulta de análisis generada dinámicamente 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. Aunque el sistema funcione de forma eficiente, el aumento significativo de la cantidad de trabajo para una sola operación provoca un tiempo de ejecución más largo, que Bigtable percibe como una latencia mayor.
Antes de empezar
Para solucionar problemas de latencia alta, realiza las siguientes tareas:
- Habilita las métricas del lado del cliente de tu biblioteca de cliente para optimizar el rendimiento y resolver problemas.
- Para minimizar la latencia de la red, comprueba que tu aplicación se encuentre en la misma zona que tu clúster de Bigtable. De esta forma, se reduce la distancia de red entre tu aplicación y tu clúster, lo que mejora los tiempos de respuesta de las solicitudes.
- Recoge la siguiente información sobre tu entorno de Bigtable:
- Recoge la siguiente información sobre tu entorno del lado del cliente:
- Recoge la siguiente información sobre el problema:
Solucionar problemas de latencia
Si tienes problemas de latencia en Bigtable, sigue estos pasos para solucionarlos:
- Comprobar la latencia del servidor: usa la página Monitoring de la consolaGoogle Cloud para ver la latencia del servidor. Para obtener más información, consulta Monitorizar con Cloud Monitoring. Comprueba la latencia de tu instancia. Si la instancia contiene varios clústeres, segmenta la métrica por clúster. Si observas aumentos de la latencia de lectura o escritura en los gráficos de latencia o en las métricas del lado del cliente, sigue los pasos para solucionar problemas de latencia del servidor que se indican en la sección Solucionar problemas de latencia del servidor de este documento.
- Comprobar la latencia del cliente: después de habilitar las métricas del lado del cliente, busca
bigtable.googleapis.com/client
en el explorador de métricas de Cloud Monitoring. Consulta las métricas del lado del cliente disponibles. Si observas un aumento de la latencia en las métricas del lado del cliente, pero no en el servidor, examina tu aplicación y tu conexión de red. Para obtener más información, consulta la sección Solucionar problemas de latencia del cliente de este documento.
En el siguiente diagrama se muestra el proceso de solución de problemas de aumento de la latencia en Bigtable:
Solucionar problemas de latencia del cliente
Sigue estos pasos para solucionar problemas de latencia del lado del cliente.
Antes de empezar
Antes de empezar a solucionar problemas de latencia del lado del cliente, completa las siguientes tareas:
- Habilita las métricas del lado del cliente en Bigtable.
- Habilita la preparación de canales si usas una versión del cliente de Java 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. Si los canales son inadecuados o excesivos, pueden provocar latencias de intentos altas.
Comprobar las latencias de bloqueo de aplicaciones
Consulta la métrica Application Blocking Latencies
en la consola Google Cloud y realiza una de las siguientes acciones:
- Si las latencias de bloqueo de aplicaciones son altas y se corresponden con el aumento de latencia notificado, céntrate en solucionar los problemas del lado del cliente.
- Si las latencias de bloqueo de aplicaciones son altas y el cliente está alojado en una infraestructura, como GKE o Compute Engine, deriva el caso al equipo de asistencia correspondiente.Google Cloud Google Cloud
- Si las latencias de bloqueo de aplicaciones son bajas y la latencia de servicio 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 del tráfico, como la red o el frontend de Google. Puedes derivar el caso al Google Cloud equipo de redes para que te ayude a hacer una captura completa de paquetes y así identificar el cuello de botella de la latencia.
Solucionar problemas de latencia alta en las operaciones
- Si
connectivity_error_count
es alto, la aplicación tiene problemas para acceder al frontend de Google. Define tiempos de espera de RPC más bajos para que la solicitud pueda reintentarse en diferentes canales.- Si el tiempo de espera de la RPC es demasiado bajo, también puede provocar latencias altas en las operaciones. Determina el tiempo de espera de RPC típico del percentil 99 durante las operaciones normales. Si se define un valor de tiempo de espera de RPC más cercano a esta métrica, se puede optimizar el rendimiento.
- Si
retry_count
es alto, comprueba 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
medio.
Gestiona 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 hilo 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 gRPC. Para obtener más información, consulta Solicitudes almacenadas en búfer.
- El uso de CPU de la VM cliente es elevado. Un uso de CPU elevado también provoca que las solicitudes se pongan en cola en el cliente.
Solucionar problemas de latencia del servidor
Sigue estos pasos para solucionar problemas de latencia del lado del servidor.
Determinar si el clúster está sobrecargado
- Consulta los gráficos
Read requests
yWrite requests
para ver los cambios en las QPS. - Consulta 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 ha aumentado el ancho de banda. Para obtener más información, consulta Interpretar el rendimiento. - Para identificar cómo usa la CPU el perfil de la aplicación, el método y la tabla para solucionar problemas de rendimiento, consulta la entrada de blog ¿Dónde está consumiendo la CPU tu clúster de Cloud Bigtable?
- Aumenta el número de nodos del clúster afectado. Para obtener más información, consulta Añadir o quitar nodos manualmente y Autoescalado. Verifica que la utilización media de la CPU se mantenga por debajo del umbral recomendado.
Buscar puntos de acceso
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 deberse a un volumen alto e imprevisto de solicitudes a un intervalo de filas o a errores en el diseño del esquema. Este uso desequilibrado de los nodos puede provocar latencias más altas y retrasos en la replicación, lo que se conoce como puntos de acceso.
- Observa los puntos de acceso en el gráfico
CPU utilization (hottest node) high granularity
. - Para identificar las tablets que están dando problemas, usa hot tablets o la herramienta Key Visualizer.
- A diferencia de la sobreutilización de la CPU a nivel de clúster, que a menudo se puede mitigar añadiendo más nodos (escalado horizontal), los puntos de acceso pueden requerir otras técnicas de mitigación. Estas técnicas incluyen cambiar la forma de crear las claves de fila o cambiar el esquema. Para obtener más información, consulta la entrada de blog Eliminate hotspots in Cloud Bigtable (Eliminar puntos de acceso en Cloud Bigtable).
Abordar la latencia con un número de consultas por segundo bajo
Bigtable funciona mejor con tablas grandes a las que accedes con frecuencia. Si envías solicitudes después de un periodo sin uso, es posible que observes una latencia alta mientras Bigtable restablece las conexiones.
- Si los gráficos
Read requests
yWrite requests
muestran un valor bajo de consultas por segundo, los tiempos de respuesta serán más lentos. - Para mitigar los problemas de arranque en frío, sigue las prácticas recomendadas que se indican en el artículo Arranques en frío y QPS bajo.
Evaluar la eficiencia de las solicitudes
Evalúa la eficiencia de las solicitudes mediante estadísticas de consultas. Las estadísticas de las consultas muestran la proporción de filas vistas con respecto a las filas devueltas y de celdas vistas con respecto a las celdas devueltas, lo que indica la eficiencia de las consultas. Mejora la eficiencia de las solicitudes revisando los patrones de consulta o el diseño del esquema. Para obtener más información, consulta Obtener estadísticas de consultas.
Consultar los cambios en la configuración o en el perfil de aplicación
Si el número de nodos y el rendimiento se mantienen sin cambios, pero la utilización media de la CPU aumenta, puede deberse a cambios en las estrategias de replicación o de recogida de elementos no utilizados. Para obtener más información, consulta Replicación y rendimiento. Revertir cualquier cambio de configuración de la replicación o la recolección de elementos no utilizados.
Derivar a Asistencia de Bigtable
Si los pasos anteriores no resuelven el problema, deriva el caso al equipo de asistencia de Bigtable.
Siguientes pasos
- Consulta más información sobre el rendimiento de Bigtable.
- Consulta las métricas de Bigtable.
- Consulta las métricas disponibles en Key Visualizer.