您正在查看 Apigee Edge 文档。
前往 Apigee X 文档。 信息
键值对映射 (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
文件的分析显示,在 5 分钟的 KVM 指标报告中,L1MissL2Miss
值偏高。
例如:CACHE.org__env__KVM-Example.statistics [hitCount=215 L1MissL2Miss=14120 hitRate=5 L1MissL2Hit=212 getCount=556]
最佳做法
为缓解此问题,我们建议在 KVM 中为不存在的键添加虚拟值。这种方法应能减少对不存在的键的 Cassandra 调用次数,从而提高性能并缩短延迟时间。