Antipatrón: Impacto de los KVM inexistentes en la latencia

Estás viendo la documentación de Apigee Edge.
Ir a la documentación de Apigee X.
info

Las políticas de mapas de pares clave-valor (KVM) son un componente fundamental para administrar las configuraciones y los valores dinámicos dentro del sistema. Sin embargo, la presencia y la búsqueda de claves inexistentes dentro de estos KVM pueden afectar significativamente el rendimiento y generar mayores latencias.

Antipatrón

Cuando una política de KVM intenta recuperar un valor para una clave que no existe en el mapa de pares clave-valor, se generan llamadas adicionales a la base de datos de Cassandra. Este aumento en la comunicación con la base de datos de backend, en particular para las claves inexistentes, consume más recursos y tiempo, lo que aumenta la latencia general de la solicitud.

Impacto

El efecto principal de este antipatrón es el aumento de las latencias de tiempo de ejecución y los errores del almacén de datos. La velocidad de procesamiento del sistema y el acceso a los datos se ven afectados de forma negativa, ya que el alto porcentaje de búsquedas de claves inexistentes es el motivo principal de las latencias observadas. Esta es una característica de tiempo de ejecución que depende directamente de la naturaleza de las solicitudes entrantes.

Síntomas

  • El sistema muestra latencias de tiempo de ejecución elevadas.
  • Errores del almacén de datos, que indican problemas con la velocidad de procesamiento y el acceso a los datos.

Mensajes de error

El análisis del archivo system.log indica la presencia de errores recurrentes relacionados con Cassandra, en especial en lo que respecta a la recuperación de datos y el estado del grupo de hosts. Los mensajes de error clave observados incluyen lo siguiente:
  • ERROR DATASTORE.CASSANDRA - AstyanaxCassandraClient.get() : Exception while fetching rowKey : [7ccd1062-6e05-4d12-aa86-5c7bf944682d, app_credentials, kms] from column family:{} in keyspace:{}
  • ERROR DATASTORE.CASSANDRA - AstyanaxCassandraClient.logHostPoolInCaseOfErrors() : Cassandra Host Pool under use - All Hosts: xx.xx.xx.102(xx.xx.xx.102):9160,xx.xx.xx.101(xx.xx.xx.101):9160,xx.xx.xx.103(xx.xx.xx.103):9160. Active Hosts: xx.xx.xx.101(xx.xx.xx.101):9160,xx.xx.xx.102(xx.xx.xx.102):9160

Diagnóstico

El análisis del archivo system.log del procesador de mensajes revela valores L1MissL2Miss elevados en los informes de métricas de KVM de 5 minutos.

Por ejemplo: CACHE.org__env__KVM-Example.statistics [hitCount=215 L1MissL2Miss=14120 hitRate=5 L1MissL2Hit=212 getCount=556]

Práctica recomendada

Para mitigar este problema, te recomendamos agregar valores ficticios para las claves inexistentes en los KVM. Este enfoque debería reducir la cantidad de llamadas a Cassandra para las claves inexistentes, lo que mejora el rendimiento y reduce la latencia.

Lecturas adicionales