Supervisión y depuración con las conclusiones en Azure Cosmos DB
SE APLICA A: NoSQL MongoDB Cassandra Gremlin Table
Azure Cosmos DB proporciona conclusiones sobre rendimiento, almacenamiento, coherencia, disponibilidad y latencia. En Azure Portal se proporciona una vista agregada de estas métricas. También puede ver las métricas de Azure Cosmos DB desde la API de Azure Monitor. Los valores de la dimensión para las métricas, como el nombre del contenedor, no distinguen entre mayúsculas y minúsculas. Por tanto, debe usar una comparación sin distinción entre mayúsculas y minúsculas al realizar comparaciones de cadenas en estos valores de dimensión. Para obtener información sobre cómo ver las métricas de Azure Monitor, consulte Supervisión de Azure Cosmos DB.
Este artículo lo guía a través de casos de uso comunes y cómo se pueden utilizar las conclusiones de Azure Cosmos DB para analizar y depurar estos problemas. De manera predeterminada, las conclusiones de las métricas se recopila cada cinco minutos y se mantiene durante siete días.
En las siguientes secciones se explican escenarios comunes donde puede usar las métricas de Azure Cosmos DB.
Descripción de cuántas solicitudes se realizan correctamente o causan errores
Para empezar, vaya a Azure Portal y navegue a la hoja Información. En este panel, abra la pestaña Solicitudes. Esta pestaña muestra un gráfico con el total de solicitudes segmentado por código de estado y tipo de operación. Para más información sobre los códigos de estado HTTP, consulte HTTP Status Codes for Azure Cosmos DB (Códigos de estado HTTP para Azure Cosmos DB).
El código de estado de error más común es 429 (limitación de tasa/limitación). Este error significa que las solicitudes a Azure Cosmos DB superan el rendimiento aprovisionado. La solución más común para este problema consiste en escalar verticalmente las RU para la colección dada. Para más información, consulte Introducción al rendimiento aprovisionado en Azure Cosmos DB
Determinación del consumo de rendimiento por un intervalo de claves de partición
Tener una buena cardinalidad de las claves de partición es esencial para cualquier aplicación escalable. A fin de determinar la distribución de rendimiento de cualquier contenedor particionado dividido en identificadores de intervalos de claves de partición, vaya al panel Conclusiones. Abra la pestaña Rendimiento. En el gráfico se muestra el consumo normalizado de RU/s en intervalos de claves de partición distintos.
Este gráfico le permite identificar si hay una partición activa. Los PartitionKeyRangeIDs corresponden a particiones físicas. La métrica Consumo de RU normalizado es un valor entre el 0 % y el 100 % que ayuda a medir el uso del rendimiento aprovisionado en una base de datos o contenedor. Una distribución de rendimiento desigual puede provocar particiones activas, lo que puede dar lugar a solicitudes limitadas y la necesidad de volver a crear particiones. Después de identificar qué clave de partición está causando el sesgo en la distribución, puede que tenga que volver a crear particiones en el contenedor con una clave de partición más distribuida. Para más información sobre la creación de particiones en Azure Cosmos DB, consulte Creación de particiones y escalado horizontal en Azure Cosmos DB.
Determinación del uso de índices y los datos
Es importante determinar la distribución de almacenamiento de cualquier contenedor con particiones por uso de datos, uso de índices y uso de documentos. Puede minimizar el uso de índices, maximizar el uso de datos y optimizar las consultas. Para obtener esta información, vaya al panel Información y abra la pestaña Almacenamiento.
Comparación del tamaño de los datos con el tamaño de índice
En Azure Cosmos DB, el almacenamiento total consumido es la combinación del tamaño de los datos y del tamaño del índice. Normalmente, el tamaño del índice es una fracción del tamaño de los datos. Para obtener más información, consulte el artículo Tamaño de índice. En el panel Métricas de Azure Portal, la pestaña Almacenamiento muestra el desglose de consumo de almacenamiento en función de los datos y el índice.
// Measure the document size usage (which includes the index size)
ResourceResponse<DocumentCollection> collectionInfo = await client.ReadDocumentCollectionAsync(UriFactory.CreateDocumentCollectionUri("db", "coll"));
Console.WriteLine("Document size quota: {0}, usage: {1}", collectionInfo.DocumentQuota, collectionInfo.DocumentUsage);
Si desea conservar el espacio de índice, puede ajustar la directiva de indexación.
Depuración de consultas lentas
En los SDK de la API para NoSQL, Azure Cosmos DB proporciona estadísticas de ejecución de consultas.
IDocumentQuery<dynamic> query = client.CreateDocumentQuery(
UriFactory.CreateDocumentCollectionUri(DatabaseName, CollectionName),
"SELECT * FROM c WHERE c.city = 'Seattle'",
new FeedOptions
{
PopulateQueryMetrics = true,
MaxItemCount = -1,
MaxDegreeOfParallelism = -1,
EnableCrossPartitionQuery = true
}).AsDocumentQuery();
FeedResponse<dynamic> result = await query.ExecuteNextAsync();
// Returns metrics by partition key range Id
IReadOnlyDictionary<string, QueryMetrics> metrics = result.QueryMetrics;
QueryMetrics proporciona información detallada sobre cuánto tardó cada componente de la consulta en ejecutarse. La causa principal más común para las consultas de larga duración son los análisis, lo que significa que la consulta no pudo aplicar los índices. Este problema puede resolverse con una mejor condición de filtro.
Supervisión de solicitudes del plano de control
Azure Cosmos DB aplica límites en el número de solicitudes de metadatos que se pueden realizar en intervalos consecutivos de 5 minutos. Las solicitudes del plano de control que superan estos límites pueden experimentar limitación. Las solicitudes de metadatos pueden, en algunos casos, consumir rendimiento frente a un master partition
en una cuenta que contenga todos los metadatos de la cuenta. Las solicitudes del plano de control que superan la cantidad de rendimiento experimentarán una limitación de velocidad (429s).
Para empezar, vaya a Azure Portal y navegue a la hoja Información. En este panel, abra la pestaña Sistema. La pestaña Sistema muestra dos gráficos. El primero muestra todas las solicitudes de metadatos de una cuenta. El segundo muestra el consumo de rendimiento de las solicitudes de metadatos de la cuenta master partition
que almacena los metadatos de una cuenta.
El gráfico anterior de Solicitud de metadatos por código de estado agrega solicitudes con una granularidad cada vez mayor a medida que se aumenta el intervalo de tiempo. El intervalo de tiempo más grande que puede usar para un rango de tiempo de 5 minutos es de 4 horas. Para supervisar las solicitudes de metadatos en un intervalo de tiempo mayor con granularidad específica, use Métricas de Azure. Cree un gráfico y seleccione Métrica de solicitudes de metadatos. En la esquina superior derecha, seleccione 5 minutos para Granularidad de tiempo, como se muestra a continuación. Las métricas también permiten a los usuarios crear alertas sobre ellas, lo que hace que sean más útiles que la información.
Pasos siguientes
Si quiere obtener más información acerca de cómo mejorar el rendimiento de bases de datos, lea estos artículos: