Apigee Hybrid에서 대용량 메시지 페이로드 지원 구성

개요

Apigee Hybrid는 버전 1.14.2부터 최대 30MB의 대용량 메시지 페이로드를 지원합니다. Apigee Hybrid는 버전 1.14.3부터 최대 75MB의 대용량 메시지 페이로드를 허용할 수 있습니다. 기본 메시지 페이로드 크기는 10MB입니다. 메시지 페이로드 크기를 참고하세요.

최대 30MB의 메시지 페이로드 지원 구성

하이브리드 설치의 환경에서 대용량 메시지 페이로드를 지원하도록 하려면 런타임 구성을 다음과 같이 변경해야 합니다.

  • 힙 크기를 4Gi 이상으로 늘립니다.
  • 메모리 한도를 6Gi 이상으로 늘립니다.
  • 메모리 리소스 요청을 4Gi 이상으로 늘립니다.

이러한 설정은 설치의 개별 환경 또는 모든 환경에 대해 구성할 수 있습니다.

대용량 메시지 페이로드를 지원하도록 개별 환경 구성

대용량 메시지 페이로드를 지원하도록 구성된 프록시에 설치의 한 개 또는 몇 개의 환경에만 엔드포인트가 있는 경우 대용량 페이로드를 지원하도록 환경을 구성할 수 있습니다. 이렇게 하면 대용량 페이로드를 지원할 필요가 없는 환경에 메모리를 추가하지 않아도 됩니다.

대용량 메시지 페이로드를 지원하도록 개별 환경을 구성하려면 envs.components.runtime 속성을 사용하면 됩니다. overrides.yaml 파일을 다음과 같이 변경합니다.

  1. overrides.yaml 파일에 다음 스탠자를 추가합니다.
    envs:
    - name: ENV_NAME
      components.
        runtime:
          cwcAppend:
            bin_setenv_max_mem: 4096Mi   # Increase max heap size to 4 gigs
          resources:
            requests:
              memory: 4Gi
            limits:
              memory: 6Gi
    

    다음을 참조하세요.

  2. 업데이트할 각 환경에 대해 apigee-env 차트를 업그레이드합니다.

    테스트 실행을 수행합니다.

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE \
      --dry-run=server
    
    • ENV_RELEASE_NAMEapigee-env 차트 설치 및 업그레이드를 추적하는 데 사용되는 이름입니다. 이 이름은 설치 내 다른 Helm 출시 이름과 다르게 고유해야 합니다. 일반적으로 ENV_NAME과 동일합니다. 그러나 환경 이름이 환경 그룹 이름과 같으면 환경과 환경 그룹에 서로 다른 출시 이름(예: dev-env-releasedev-envgroup-release)을 사용해야 합니다. Helm의 출시에 관한 자세한 내용은 Helm 문서의 세 가지 주요 개념을 참조하세요.
    • ENV_NAME은 업그레이드하는 환경의 이름입니다.
    • OVERRIDES_FILE은 수정된 overrides.yaml 파일입니다.
  3. 차트를 업그레이드합니다.

    테스트 실행을 수행합니다.

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE
    

대용량 메시지 페이로드를 지원하도록 모든 환경 구성

runtime 스탠자를 변경하면 설치의 모든 환경에 힙 및 메모리 한도가 설정됩니다. envs.components.runtime 속성을 사용하여 개별 환경에 대해 이러한 설정을 재정의할 수 있습니다.

  1. overrides.yaml 파일에 다음 스탠자를 추가합니다.
    runtime:
      cwcAppend:
        bin_setenv_max_mem: 4096Mi   # Increase max heap size to 4 gigs
      resources:
        requests:
          memory: 4Gi
        limits:
          memory: 6Gi
    

    다음을 참조하세요.

  2. 설치의 각 환경에 대해 apigee-env 차트를 업그레이드합니다.

    테스트 실행을 수행합니다.

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE \
      --dry-run=server
    

    차트를 업그레이드합니다.

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE
    

30MB~75MB 메시지 페이로드 가이드라인

대규모 페이로드 시나리오의 메시지 프로세서에 대한 최적의 힙 크기를 결정하는 것은 특정 사용 사례에 따라 다르지만 Apigee에서는 이 프로세스를 지원하는 일반적인 가이드라인을 제공합니다.

메시지 프로세서(MP)당 힙 크기를 계산하려면 다음 값을 사용하세요.

  • Q - MP 포드당 최대 QPS
  • L - 요청당 왕복 지연 시간(예상 지연 시간의 95번째 백분위수)
  • C - MP당 총 동시 실행 수, 특정 시점에 MP에 동시에 유지될 수 있는 최대 요청 수입니다. C = Q * L과 같이 계산됩니다.
  • P_req - 클라이언트가 Apigee에 보낸 요청의 페이로드 크기(MB)
  • P_resp - 대상으로부터 수신한 응답의 페이로드 크기(MB)
  • S - 안전 계수(Apigee에서는 1.5~2 범위를 권장함)
  • BASE_HEAP - 프록시 구성과 같이 요청과 관련이 없는 리소스를 고려한 기본 힙 크기 (Apigee에서는 3072Mi를 권장함)

안전 계수 S와 기본 힙 크기를 고려하면 MP당 총 힙은 다음과 같이 계산됩니다.

MP당 힙 크기 = BASE_HEAP + C * (P_req + P_resp) * S

대형 페이로드 시나리오의 기본 재정의 구성은 다음과 같습니다.

envs:
  components:
    runtime:
      resources:
        requests:
          cpu: 2000m
          memory: 2Gi
        limits:
          cpu: 4000m
          memory: 4Gi
      cwcAppend:
        bin_setenv_max_mem: 3072Mi # base heap size

계산 예시

다음은 아래의 값을 사용한 계산의 예입니다.

  • 최대 QPS, Q: 2
  • 지연 시간, L: 7s
  • 요청 페이로드 크기, P_req: 40MB
  • 응답 페이로드 크기, P_resp: 40MB
  • 안전 계수, S: 1.5
  • 기본 힙 크기, BASE_HEAP: 3072Mi

힙 크기 = 3072 + (2 * 7) * (40+40) * 1.5 = 4752Mi

limits.memory는 OS 오버헤드 및 기타 힙이 아닌 메모리 사용량을 고려하여 권장 힙보다 1Gi가 더 커야 합니다.

이 예에서는 overrides.yaml에 다음을 추가합니다.

envs:
  components:
    runtime:
      resources:
        requests:
          memory: 4Gi
        limits:
          memory: 5.75Gi # approximately 1Gi over 4.75Gi
      cwcAppend:
        bin_setenv_max_mem: 4752Mi

고려사항

트래픽 버스트

HPA는 QPS가 증가함에 따라 MP가 확장되도록 합니다. 하지만 HPA가 스케일 업을 트리거하는 데 약 60초가 걸릴 수 있습니다. 비정상적으로 높은 트래픽 버스트는 MP에서 메모리 부족(OOM) 오류를 일으킬 수 있습니다.

이러한 트래픽 버스트가 예상되는 경우 적절한 안전 계수를 사용하여 힙 사용량을 확장하세요. 예를 들면 S = 2입니다.

= BASE_HEAP + (Q * L) * (P_req + P_resp) * 2

정책 사용

위 계산에는 정책 사용이 포함되지 않습니다. Apigee를 사용하면 고객이 요청/응답 페이로드의 사본을 만들 수 있으며, 이로 인해 힙 사용량이 크게 달라질 수 있습니다.

예를 들어 전체 대상 응답의 사본을 3개 만드는 JavaScript 정책이 있는 경우 사용할 방정식은 다음과 같습니다.

Heap per MP = Base Heap + (Q * L) * (P_req + P_resp * 4) * S

메모리 사용량을 늘릴 수 있는 정책의 예는 다음과 같습니다.

  • AssignMessage
  • 자바스크립트 콜아웃
  • JavaCallout

모니터링

여기에 제공된 가이드라인은 시작점으로 사용하기 위한 것입니다. 메모리 사용량 모니터링 및 알림을 적극 권장합니다. 힙 사용량이 지속적으로 높은 경우 안전 계수를 늘려 사용하세요.

관련 주제에 대한 추가 정보