<ph type="x-smartling-placeholder"></ph>
현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서. 정보
증상
Edge UI 또는 Edge 관리 API 호출을 통한 API 프록시 버전 배포가 실패하고
오류 "Error while accessing datastore"
오류 메시지
Error in deployment for environment qa. The revision is deployed, but traffic cannot flow. Error while accessing datastore;Please retry later
가능한 원인
이 문제의 일반적인 원인은 다음과 같습니다.
-
원인 세부정보 대상: 네트워크 연결 문제 차이점에 대해 자세히 알아보세요. 네트워크로 인한 메시지 프로세서와 Cassandra 간의 통신 실패 연결 문제나 방화벽 규칙이 있기 때문입니다 Edge 프라이빗 클라우드 사용자 Cassandra로 인한 배포 오류 재시작 루틴의 일부로 다시 시작되었으므로 Cassandra 노드를 사용할 수 없습니다. 유지보수가 가능합니다. Edge 프라이빗 클라우드 사용자 Cassandra에서 읽기 요청 지연 시간 급증 Cassandra 노드가 많은 수의 동시 읽기를 수행하는 경우 읽기 요청 지연 시간이 급증하여 느리게 응답할 수 있습니다. Edge 프라이빗 클라우드 사용자 API 프록시 번들이 15MB보다 큼 Cassandra는 다음 위치에서 15MB보다 큰 API 프록시 번들을 허용하지 않도록 구성되었습니다. 있습니다. Edge 프라이빗 클라우드 사용자 메일 간 네트워크 연결 문제 프로세서 및 Cassandra
진단
참고: Edge 프라이빗 클라우드 사용자만 다음 단계를 수행할 수 있습니다. 만약 Edge Public Cloud를 사용하는 경우 Apigee Edge 지원팀에 문의하세요.
- API 프록시를 배포 취소하고 다시 배포합니다. 일시적인 연결 문제가 발생한 경우
하면 오류가 사라질 수 있습니다.
경고: 프로덕션에 오류가 표시되면 배포를 취소하지 마세요. 환경입니다
- 문제가 지속되면 아래 관리 AP 호출을 실행하여
구성 요소에 오류가 있는지 확인합니다.
curl -u sysadmin@email.com https://management:8080/v1/o/<org>/apis/<api>/deployments
하나에서 Datastore에 액세스하는 중 오류 발생이 표시된 샘플 배포 상태 출력 각 메시지 프로세서의
{ "environment" : [ { "aPIProxy" : [ { "name" : "simple-python", "revision" : [ { "configuration" : { "basePath" : "/", "steps" : [ ] }, "name" : "1", "server" : [ { "status" : "deployed", "type" : [ "message-processor" ], "uUID" : "2acdd9b2-17de-4fbb-8827-8a2d4f3d7ada" }, { "error" : "Error while accessing datastore;Please retry later", "errorCode" : "datastore.ErrorWhileAccessingDataStore", "status" : "error", "type" : [ "message-processor" ], "uUID" : "42772085-ca67-49bf-a9f1-c04f2dc1fce3" } "state" : "error" }
- 배포 오류가 표시된 메시지 프로세서를 다시 시작합니다. 만약
일시적인 네트워크 문제가 발생하면 오류가 해결됩니다.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- 2단계를 반복하여 이전 메시지 프로세서에서 배포가 성공하는지 확인합니다. 시작됩니다 오류가 발견되지 않으면 문제가 해결된 것입니다.
- 메시지 프로세서가 포트 9042에서 각 Cassandra 노드에 연결할 수 있는지 확인
및 9160:
<ph type="x-smartling-placeholder">
- </ph>
- 텔넷을 사용할 수 있는 경우 텔넷을 사용합니다.
telnet <Cassandra_IP> 9042 telnet <Cassandra_IP> 9160
- Telnet을 사용할 수 없는 경우 다음과 같이 netcat을 사용하여 연결을 확인합니다.
nc -vz <Cassandra_IP> 9042 nc -vz <Cassandra_IP> 9160
- '연결 거부됨'이라는 응답을 받는 경우 '연결 시간이 초과되었습니다.'라는 오류 메시지가 표시되면 관리하게 됩니다
- 텔넷을 사용할 수 있는 경우 텔넷을 사용합니다.
- 문제가 지속되면 각 Cassandra 노드가 서버에서 수신 대기 중인지
포트 9042 및 포트 9160:
netstat -an | grep LISTEN | grep 9042 netstat -an | grep LISTEN | grep 9160
- Cassandra 노드가 포트 9042 또는 9160에서 수신 대기하지 않는 경우
특정 Cassandra 노드:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- 문제가 계속되면 네트워크 운영팀에 도움을 요청하세요.
- API 프록시를 배포 취소하고 다시 배포합니다. 일시적인 연결 문제가 발생한 경우
하면 오류가 사라질 수 있습니다.
해상도
네트워크 운영팀과 협력하여 그 사이에 네트워크 연결 문제를 해결합니다. 메시지 프로세서 및 Cassandra
Cassandra 다시 시작으로 인한 배포 오류
Cassandra 노드는 일반적으로 정기 유지보수의 일부로 주기적으로 다시 시작됩니다. API인 경우 프록시가 Cassandra 유지보수 작업 중에 배포된 후 Cassandra 데이터 스토어에 대한 액세스 불가
참고: Edge 프라이빗 클라우드 사용자만 다음 단계를 수행할 수 있습니다. 만약 Edge Public Cloud를 사용하는 경우 Apigee Edge 지원팀에 문의하세요.
진단
- 배포 중에 Cassandra 노드가 다시 시작되었는지 확인합니다.
Cassandra 로그나 가장 최근의 시작 시간 로그를 확인하여 수행할 수 있습니다.
grep
'shutdown
' <ph type="x-smartling-placeholder">/opt/apigee/var/log/apigee-cassandra/system.log
</ph>
해상도
- Cassandra가 준비되고 실행 중인지 확인합니다.
- 메시지 프로세서가 포트 9042에서 Cassandra 데이터 스토어에 연결할 수 있는지 확인하고 9160입니다.
Cassandra에서 읽기 요청 지연 시간 급증
개별 사용 사례와 트래픽 패턴에 따라 Cassandra의 읽기 수가 많을 수 있음 Cassandra에서 읽기 액세스가 필요한 정책이 포함된 프록시를 사용합니다
예를 들어 OAuth 정책에 대해 refresh_token 권한 부여 유형에 대한 GET 호출이 호출되고 갱신 토큰은 많은 액세스 토큰과 연결되어 있으므로 읽기를 수행합니다 이로 인해 Cassandra에서 읽기 요청 지연 시간이 증가할 수 있습니다.
진단
참고: Edge 프라이빗 클라우드 사용자만 다음 단계를 수행할 수 있습니다. 만약 Edge Public Cloud를 사용하는 경우 Apigee Edge 지원팀에 문의하세요.
- 베타 모니터링 대시보드를 설치한 경우 Cassandra 대시보드를 확인하고 '읽기 요청'과 도표가 될 수 있습니다. '읽기' 차트도 검토하세요. Request Latencies'(요청 지연 시간)'를 선택합니다.
- 읽기 요청과 읽기 지연 시간을 확인하는 또 다른 도구는
nodetool cfstats
명령어입니다. Cassandra를 참조하세요. 문서를 참조하세요.
해상도
참고: Edge 프라이빗 클라우드 사용자만 다음 단계를 수행할 수 있습니다. 만약 Edge Public Cloud를 사용하는 경우 Apigee Edge 지원팀에 문의하세요.
- Cassandra 성능이 정상으로 돌아오면 배포를 다시 시도해 보세요. 전체 Cassandra 링은 정상입니다.
- (선택사항) 메시지 프로세서에서 순차적 재시작을 수행하여 연결이 있습니다.
- 장기적인 해결책을 마련하기 위해서는 문제를 일으킬 가능성이 있는 API 트래픽 패턴을 검토해야 합니다. 더 높은 수준의 읽기를 지원합니다. 이 문제를 해결하는 데 도움이 필요하면 Apigee Edge 지원팀에 문의하세요.
- 기존 Cassandra 노드가 들어오는 트래픽을 처리하기에 충분하지 않은 경우 하드웨어 용량이나 Cassandra 데이터 스토어 노드의 수를 늘립니다. 적절하게 조정할 수 있습니다
API 프록시 번들이 15MB보다 큼
Cassandra에서 API 프록시 번들의 크기는 15MB로 제한됩니다. API의 크기가 프록시 번들이 15MB보다 큰 경우 '데이터 저장소에 액세스하는 중에 오류가 발생했습니다'라는 메시지가 표시됩니다. 언제 API 프록시 배포를 시도합니다
진단
참고: Edge 프라이빗 클라우드 사용자만 다음 단계를 수행할 수 있습니다. 만약 Edge Public Cloud를 사용하는 경우 Apigee Edge 지원팀에 문의하세요.
- 메시지 프로세서 로그 확인
(
/opt/apigee/var/log/edge-message-processor/logs/system.log
)로 이동하여 특정 API 프록시 배포 중에 발생한 모든 오류 - 아래 그림과 비슷한 오류가 표시되면 배포 오류가
API 프록시 번들 크기가 15MB
2016-03-23 18:42:18,517 main ERROR DATASTORE.CASSANDRA - AstyanaxCassandraClient.fetchDynamicCompositeColumns() : Error while querying columnfamily : [api_proxy_revisions_r21, adevegowdat@v1-node-js] for rowkey:{} com.netflix.astyanax.connectionpool.exceptions.TransportException: TransportException: [host=None(0.0.0.0):0, latency=159(486), attempts=3]org.apache.thrift.transport.TTransportException: Frame size (20211500) larger than max length (16384000)! at com.netflix.astyanax.thrift.ThriftConverter.ToConnectionPoolException(ThriftConverter.java:197) ~[astyanax-thrift-1.56.43.jar:na] at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:65) ~[astyanax-thrift-1.56.43.jar:na] ...<snipped> Caused by: org.apache.thrift.transport.TTransportException: Frame size (20211500) larger than max length (16384000)! at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:137) ~[libthrift-0.9.1.jar:0.9.1] at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101) ~[libthrift-0.9.1.jar:0.9.1] at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) ~[libthrift-0.9.1.jar:0.9.1] ...<snipped>
해상도
리소스 파일이 너무 많으면 API 프록시 번들이 커집니다. 다음을 사용하세요. 해결 방법:
해결 방법 1: 리소스 파일을 환경 또는 조직 수준으로 이동하기
- NodeJS 스크립트 파일 및 모듈, 자바스크립트 파일, JAR 파일을 환경 또는 조직 수준으로 변경합니다. 리소스 파일에 대한 자세한 내용은 다음을 참조하세요. Edge 문서를 참조하세요.
- API 프록시를 배포하고 오류가 해결되었는지 확인합니다.
문제가 지속되거나 리소스 파일을 환경 또는 조직으로 이동할 수 없는 경우 해결 방법 2를 적용할 수 있습니다.
해결 방법 2: Cassandra에서 API 프록시 번들 크기 늘리기
참고: Edge 프라이빗 클라우드 사용자만 다음 단계를 수행할 수 있습니다. 만약 Edge Public Cloud를 사용하는 경우 Apigee Edge 지원팀에 문의하세요.
Cassandra 속성 thrift frame의 크기를 늘리려면 다음 단계를 따르세요. 전송 크기: 에지:
- 다음 파일이 없으면 새로 만듭니다.
/opt/apigee/customer/application/cassandra.properties
- 파일에 다음 줄을 추가하여 <size>를 바꿉니다. 광고 소재에 필요한
다음과 같습니다.
conf_cassandra_thrift_framed_transport_size_in_mb=<size>
- Cassandra를 다시 시작합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- 클러스터의 모든 Cassandra 노드에서 1~3단계를 반복합니다.
문제가 계속되면 Apigee Edge 지원팀에 문의하세요.