Вы просматриваете документацию Apigee Edge .
Перейти к документации Apigee X. info
Политики сопоставления ключей и значений (KVM) являются основополагающим компонентом управления конфигурациями и динамическими значениями в системе. Однако наличие и поиск несуществующих ключей в этих KVM может существенно снизить производительность и привести к увеличению задержек.
Антипаттерн
Когда политика KVM пытается получить значение для ключа, отсутствующего в сопоставлении «ключ-значение», это приводит к дополнительным обращениям к базе данных Cassandra. Это увеличивает нагрузку на внутреннюю базу данных, особенно для несуществующих ключей, потребляет больше ресурсов и времени, тем самым увеличивая общую задержку запросов.
Влияние
Основным эффектом этого антипаттерна являются повышенные задержки выполнения и ошибки хранилища данных. Это негативно сказывается на скорости обработки системы и доступе к данным, поскольку высокая доля несуществующих поисков по ключу является основной причиной наблюдаемых задержек. Эта характеристика выполнения напрямую зависит от характера входящих запросов.
Симптомы
- Система демонстрирует повышенные задержки во время выполнения.
- Ошибки хранилища данных, указывающие на проблемы со скоростью обработки и доступом к данным.
Сообщения об ошибках
Анализ файлаsystem.log
указывает на наличие повторяющихся ошибок, связанных с Cassandra, в частности, связанных с извлечением данных и состоянием пула хостов. Основные обнаруженные сообщения об ошибках включают:-
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
Диагноз
Анализ файла system.log
процессора сообщений выявляет повышенные значения L1MissL2Miss
в 5-минутных отчетах по метрикам KVM.
Например: CACHE.org__env__KVM-Example.statistics [hitCount=215 L1MissL2Miss=14120 hitRate=5 L1MissL2Hit=212 getCount=556]
Лучшая практика
Для решения этой проблемы мы рекомендуем добавлять фиктивные значения для несуществующих ключей в KVM. Такой подход должен сократить количество вызовов Cassandra для несуществующих ключей, повысить производительность и сократить задержку.