Apigee Edge 문서입니다.
Go to the
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 호출 수를 줄여 성능을 개선하고 지연 시간을 줄일 수 있습니다.