tablets sobrecargadas

Para ayudarte a solucionar problemas de rendimiento, Bigtable permite identificar y observar tablets sobrecargadas en un clúster. En esta página, se describen las tablets sobrecargadas, se explica cómo obtener una lista de tablets sobrecargadas y se analizan las situaciones en las que identificarlas es útil. Antes de leer esta página, debes leer la descripción general de Bigtable.

El nombre del método que usas para obtener una lista de tablets sobrecargadas varía según el lenguaje que se use. Por cuestiones prácticas, en este documento se hace referencia al método por su nombre de API de RPC de Cloud Bigtable Admin, ListHotTablets. Puedes obtener una lista de tablets sobrecargadas con el siguiente comando:

La identificación de tablets sobrecargadas puede ayudarte a realizar las siguientes tareas:

Comprende las tablets sobrecargadas

Una tabla de Bigtable se fragmenta en bloques de filas contiguas, llamados tablets, que ayudan a equilibrar la carga de trabajo de las consultas. Cada tablet se asocia con un nodo, y las operaciones de estas filas se realizan en el nodo. Para optimizar el rendimiento, los tablets se dividen o se mueven a un nodo diferente según los patrones de acceso. Según los patrones de acceso de los usuarios (operaciones de lectura, escritura y análisis), las tablets se vuelven a equilibrar en los nodos. Para obtener más información sobre el balanceo de cargas, consulta Cómo Bigtable optimiza tus datos con el tiempo.

Una tablet activa es una tablet que muestra un uso excesivo de la CPU del nodo debido a que utiliza un porcentaje de CPU desproporcionadamente grande en comparación con otras tablets. Este uso de nodos desequilibrado puede causar retrasos en la latencia y la replicación.

Una de las causas más frecuentes de las tablets sobrecargadas son los hotspots, que ocurren cuando la aplicación accede con frecuencia a las filas que están cerca en la tabla. Los hotspots suelen ser el resultado de un diseño de esquema que no está optimizado para distribuir los patrones de acceso de tu aplicación en la tabla. Para aprender a diseñar tu las claves de fila para que no se produzcan hotspots, consulta Recomendaciones sobre el diseño del esquema.

Para obtener una lista de tablets sobrecargadas, debes tener asignada una función que tenga el permiso bigtable.viewer.

Salida

El método ListHotTablets muestra los siguientes datos para un clúster determinado en una instancia.

  • Nombre de la tablet. El ID único que asigna Bigtable a la tablet activa. La CLI de gcloud no muestra este campo.
  • Tabla. ID de la tabla asociada a la tablet activa.
  • Uso de CPU. El uso de CPU promedio del nodo asociado con la tablet activa, expresado como un porcentaje, durante ese intervalo de un minuto. Este porcentaje es el promedio de la suma de las CPU de escritura y CPU de lectura desde la hora de inicio hasta la hora de finalización.
  • Hora de inicio. Es la hora de inicio del período de la tablet activa.
  • Hora de finalización. Hora de finalización del período de la tablet activa.
  • Clave de inicio. La primera clave de fila en la tablet activa.
  • Clave de finalización. La última clave de fila de la tablet activa. Un sufijo de \000 es cuando las teclas de inicio y finalización sean iguales, lo que indica que la tablet abarca una sola fila.

Las claves se ordenan lexicográficamente dentro de una tablet, por lo que cualquier clave entre la clave de inicio y la clave final se encuentra en esa tablet.

Los hotspots se calculan en una resolución de un minuto y una tablet puede volver a aparecer en el resultado. En otras palabras, una tablet se puede considerar activa durante varios minutos.

De forma predeterminada, ListHotTablets busca en las últimas 24 horas. Para buscar dentro de un intervalo de tiempo específico, proporciona una hora de inicio y de finalización.

La cantidad máxima de tablets mostradas es de 50. Para cambiar esto, proporciona un tamaño de página.

El método muestra una lista vacía si ninguno de las tablets del clúster están activas.

Ejemplo en el que se usa la CLI de gcloud

Antes de copiar este ejemplo, instala la CLI de gcloud.

Para ver una lista de tablets activas para un clúster determinado, ejecuta el comando hot-tablets list en Cloud Shell o en la ventana de tu terminal local.

  gcloud bigtable hot-tablets list CLUSTER_ID --instance INSTANCE_ID

Reemplaza lo siguiente:

  • CLUSTER_ID: el identificador permanente del clúster
  • INSTANCE_ID: el identificador permanente de la instancia.

Si cualquiera de los tablets del clúster está caliente, la terminal muestra un resultado similar al siguiente. Las tablets sobrecargadas en un clúster se muestran en orden descendente según el uso de CPU.

TABLE      CPU_USAGE  START_TIME                 END_TIME                   START_KEY            END_KEY
test-data  89.3       2021-12-14T01:19:57+00:00  2021-12-14T01:20:57+00:00  user29333893046…    user29333893046…
test-data  22.8       2021-12-14T01:04:59+00:00  2021-12-14T01:06:59+00:00  user29333893046…    user29345657428…
test-data  20.9       2021-12-14T01:18:56+00:00  2021-12-14T01:20:56+00:00  user54519105346…    user545293
test-data  16.5       2021-12-14T01:18:56+00:00  2021-12-14T01:20:56+00:00  user49196524328…    user49206

Casos prácticos de datos de tablets sobrecargadas

Identificar las tablets sobrecargadas en un clúster puede ayudarte a solucionar problemas de rendimiento. Puedes usar el método ListHotTablets en combinación con otros de supervisión, como el Key Visualizer de diagnóstico para Bigtable.

Identifica claves de filas problemáticas

Puedes usar ListHotTablets para identificar claves y rangos de filas específicos. Esto puede proporcionar observabilidad en los patrones de acceso que podrían estar causando hotspots.

Por ejemplo, supongamos que el esquema de clave de fila de una tabla es [user_id]#[event_timestamp], los ID de usuario y las marcas de tiempo separados por un símbolo de hash. Obtener una lista de tablets sobrecargadas puede ayudarte a determinar si los ID de usuario específicos o las marcas de tiempo de eventos causan hotspots. Identificar los patrones de acceso te permite realizar acciones adicionales, como rediseñar claves o filas de filas a fin de distribuir el uso de manera más uniforme en el espacio de claves. En este ejemplo, si los ID de usuario aumentan monótonamente y causan hotspots por ese motivo, puedes asignarlos en un orden diferente o usar identificadores únicos a nivel universal (UUID).

Cuando las claves de fila de inicio y finalización son iguales y se agrega la clave de fila de finalización con un sufijo \000, crea una tablet de una sola fila. Cuando esta tablet recibe una cantidad de tráfico desproporcionadamente grande, se generan hotspots.

Observa hotspots con un nivel de detalle a nivel de minutos

Puedes usar una lista de tablets sobrecargadas con los mapas de calor de Key Visualizer. Si bien Key Visualizer es una buena herramienta para observar el panorama más amplio de los patrones de acceso a espacios de claves, ListHotTablets proporciona un mayor nivel de detalle.

Después de inspeccionar los mapas de calor en Key Visualizer, puedes explorar hotspots específicos. Debido a que Key Visualizer se ejecuta durante un período de semanas, sus datos para los hotspots se agregan en intervalos de 15 minutos. Además, varias tablets se pueden combinar en el mismo espacio de claves de Key Visualizer.

Después de usar Key Visualizer a fin de identificar el intervalo de tiempo en el que se produjeron los hotspots, puedes ejecutar ListHotTablets para obtener un mayor nivel de detalle en la clave y el espacio de tiempo. El nivel de detalle mayor es particularmente útil para el uso periódico. ListHotTablets puede identificar hotspots de corta duración que KeyVisualizer no puede.

Identifica tablas problemáticas en un clúster

Debido a que Key Visualizer funciona a nivel de tabla, no siempre es la mejor opción para solucionar un problema en un clúster que tiene varias tablas. ListHotTablets opera a nivel de clúster, por lo que puedes usarlo para identificar tablas con alto uso de CPU y reducir el problema.

¿Qué sigue?