업데이트 처리 중 오류 발생

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

증상

Edge UI 또는 Edge 관리 API 호출을 통해 API 프록시 버전을 배포할 수 없으며 'Unexpected error occurred while processing the updates' 오류가 발생합니다.

오류 메시지

Error in deployment for environment sit.

The revision is deployed and traffic can flow, but flow may be impared. com.apigee.kernel.exceptions.spi.UncheckedException{ code = messaging.runtime.UpdateFailed, message = Unexpected error occurred while processing the updates, associated contexts = []}

가능한 원인

이 오류의 원인은 여러 가지일 수 있습니다. 다음은 몇 가지 원인의 예입니다.

원인 세부정보 대상
메모리 부족 메시지 프로세서의 자바 힙 공간이 부족하여 API 프록시 배포에 실패했습니다. 프라이빗 클라우드 사용자
API 프록시 번들의 오류 API 프록시 번들에 API 프록시 배포 실패를 초래할 수 있는 오류가 있습니다. 프라이빗 및 퍼블릭 클라우드 사용자

처음에 시도할 일반적인 단계

  1. 메시지 프로세서 로그에서 배포 오류 또는 예외 스택 트레이스가 있는지 확인합니다. /opt/apigee/var/log/apigee/edge-message-processor/logs/system.log
  2. 일반적으로 배포 오류의 원인에 대한 정보를 제공하는 스택 트레이스가 표시됩니다. 스택 트레이스를 꼼꼼히 읽고 원인을 파악하세요.

메모리 부족

진단

참고: Edge Private Cloud 사용자만 다음 단계를 수행할 수 있습니다. Edge Public Cloud를 사용하는 경우 Apigee 지원팀에 문의하세요.

  1. 아래 그림과 같이 메시지 프로세서 로그 /opt/apigee/var/log/apigee/edge-message-processor/logs/system.log에서와 유사한 예외가 표시될 수 있습니다.
    Apigee-Main-4 ERROR BOOTSTRAP - RuntimeConfigurationServiceImpl.dispatchToListeners() : RuntimeConfigurationServiceImpl.dispatchToListeners : Error occurred while dispatching the request DeployEvent{organization=‘myorg', application='person-credentials-api', applicationRevision='275', deploymentSpec=basepath=/;env=dev;, deploymentID=null} to com.apigee.application.bootstrap.listeners.MessageProcessorBootstrapListener@5db88cb8
    com.apigee.kernel.exceptions.spi.UncheckedException: Unexpected error occurred while processing the updates
            at com.apigee.entities.AbstractConfigurator.throwUncheckedException(AbstractConfigurator.java:280) ~[config-entities-1.0.0.jar:na]
            at com.apigee.messaging.configuration.MessageProcessorServiceImpl.configure(MessageProcessorServiceImpl.java:665) ~[message-processor-1.0.0.jar:na]
            at com.apigee.application.bootstrap.listeners.MessageProcessorBootstrapListener.configureMessageProcessorService(MessageProcessorBootstrapListener.java:54) ~[application-bootstrap-1.0.0.jar:na]
            at com.apigee.application.bootstrap.listeners.MessageProcessorBootstrapListener.deploy(MessageProcessorBootstrapListener.java:29) ~[application-bootstrap-1.0.0.jar:na]
            …<snipped>
            at com.apigee.application.bootstrap.proto.RuntimeConfig_ConfigRPCService_BlockingSkeleton$1.run(RuntimeConfig_ConfigRPCService_BlockingSkeleton.java:38) [application-bootstrap-1.0.0.jar:na]
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_75]
            at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_75]
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_75]
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_75]
            at java.lang.Thread.run(Thread.java:745) [na:1.7.0_75]
    Caused by: java.lang.OutOfMemoryError: Java heap space
    
  2. Caused by: java.lang.OutofMemoryError: Java Heap space 메시지는 메시지 프로세서의 자바 힙 공간이 부족했음을 나타냅니다.

해상도

참고: Edge Private Cloud 사용자만 다음 단계를 수행할 수 있습니다. Edge Public Cloud를 사용하는 경우 Apigee 지원팀에 문의하세요.

메시지 프로세서의 최대 자바 힙 공간을 늘립니다.

최대 자바 힙 공간은 JVM 속성 -Xmx에 의해 제어됩니다. 메시지 프로세서의 자바 힙 공간을 늘리는 단계는 다음과 같습니다.

  1. Java 힙 공간을 늘릴 수 있는 메모리 양을 결정합니다.
    1. /opt/apigee/edge-message-processor/bin/setenv.sh 파일에서 최대 힙 공간(max_mem)에 설정된 현재 값을 확인합니다.
    2. 시스템에서 /proc/meminfo 명령어를 사용하여 MemTotal (사용 가능한 총 RAM 크기), MemFree(시스템에서 사용하지 않은 물리적 RAM의 양)를 가져옵니다.
      1. 위 정보에 동일한 시스템에 있는 다른 프로세스(예: Edge Router 등)에서 사용하는 메모리가 포함되어 있는지 확인하세요.
      2. 위의 정보를 기반으로 메시지 프로세서의 자바 힙 공간을 얼마나 늘릴 수 있는지 확인합니다.
      3. 예를 들어 현재 메시지 프로세서의 최대 힙 공간은 1,024MB, MemTotal은 8GB (8,192MB), MemFree는 5GB (5,120MB)입니다. 이 경우 최대 자바 힙 공간을 3GB (3,072MB)로 늘릴 수 있습니다.
      4. 자바 힙 공간을 얼마나 늘릴지 판단하는 데 도움이 필요한 경우 Apigee 지원팀에 문의하세요.
  2. /opt/apigee/customer/application/message-processor.properties
    
    파일이 아직 없다면 만듭니다.
  3. 힙 설정 증가 (예: 3072M)로 파일에 다음 줄을 추가합니다.
    bin_setenv_max_mem=3072m
    
  4. 파일을 저장합니다.
  5. 메시지 프로세서를 다시 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    
  6. 메시지 프로세서가 2개 이상 있으면 모든 메시지 프로세서에서 3~6단계를 반복합니다.

문제가 계속되면 Apigee 지원팀에 문의하세요..

API 프록시 번들 오류

API 프록시에 사용된 정책에 오류가 있으면 "Unexpected error occurred while processing the updates" 오류와 함께 배포가 실패합니다.

예를 들어 이 커뮤니티 게시물을 참조하세요.

진단

참고: Edge Private Cloud 사용자만 다음 단계를 수행할 수 있습니다. Edge Public Cloud를 사용하는 경우 Apigee 지원팀에 문의하세요.

  1. 메시지 프로세서 로그에서 API 프록시 배포와 관련된 예외나 오류를 확인합니다. 이 오류를 통해 문제를 해결하기 위해 API 프록시 번들에서 변경해야 할 사항에 대한 정보가 제공됩니다.
  2. 메시지 프로세서 로그에 오류 메시지가 표시되지 않으면 API 프록시의 업데이트 기록 차이를 확인합니다. 이전 버전이 문제 없이 배포되면 적용된 코드 변경사항을 검토합니다.

해상도

  1. API 프록시 번들에서 필요한 사항을 변경하여 문제를 해결합니다.
  2. 배포 문제를 일으킨 모든 코드 변경사항을 API 프록시로 되돌립니다.

문제가 계속되면 Apigee 지원팀에 문의하여 추가 지원을 받으세요.