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
파일을 분석한 결과 5분 KVM 측정항목 보고서 내에서 L1MissL2Miss
값이 상승한 것으로 나타났습니다.
예: CACHE.org__env__KVM-Example.statistics [hitCount=215 L1MissL2Miss=14120 hitRate=5 L1MissL2Hit=212 getCount=556]
권장사항
이 문제를 완화하려면 KVM에 존재하지 않는 키의 더미 값을 추가하는 것이 좋습니다. 이 접근 방식을 사용하면 존재하지 않는 키에 대한 Cassandra 호출 수가 줄어 성능이 개선되고 지연 시간이 단축됩니다.