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 Key-Value Map (KVM) son un componente fundamental para administrar la configuración y los valores dinámicos dentro del sistema. Sin embargo, la presencia y la búsqueda de claves inexistentes en estas 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 clave-valor, se generan llamadas adicionales a la base de datos de Cassandra. Esta mayor comunicación con la base de datos de backend, en especial para las claves inexistentes, consume más recursos y tiempo, lo que aumenta la latencia general de las solicitudes.

Impacto

El efecto principal de este antipatrón son las latencias de tiempo de ejecución elevadas y los errores del almacén de datos. La velocidad de procesamiento y el acceso a los datos del sistema 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 del tiempo de ejecución que depende directamente de la naturaleza de las solicitudes entrantes.

Síntomas

  • El sistema presenta 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, específicamente en lo que respecta a la recuperación de datos y el estado del grupo de hosts. Entre los mensajes de error clave que se observaron, se incluyen los siguientes:
  • 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 elevados de L1MissL2Miss 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 que agregues valores ficticios para las claves no existentes en los KVM. Este enfoque debería reducir la cantidad de llamadas a Cassandra para las claves inexistentes, lo que mejorará el rendimiento y reducirá la latencia.

Lecturas adicionales