개요
Apigee Hybrid는 버전 1.14.2부터 최대 30MB의 대용량 메시지 페이로드를 지원합니다. Apigee Hybrid는 버전 1.14.3부터 최대 75MB의 대용량 메시지 페이로드를 허용할 수 있습니다. 기본 메시지 페이로드 크기는 10MB입니다. 메시지 페이로드 크기를 참고하세요.
최대 30MB의 메시지 페이로드 지원 구성
하이브리드 설치의 환경에서 대용량 메시지 페이로드를 지원하도록 하려면 런타임 구성을 다음과 같이 변경해야 합니다.
- 힙 크기를 4Gi 이상으로 늘립니다.
- 메모리 한도를 6Gi 이상으로 늘립니다.
- 메모리 리소스 요청을 4Gi 이상으로 늘립니다.
이러한 설정은 설치의 개별 환경 또는 모든 환경에 대해 구성할 수 있습니다.
대용량 메시지 페이로드를 지원하도록 개별 환경 구성
대용량 메시지 페이로드를 지원하도록 구성된 프록시에 설치의 한 개 또는 몇 개의 환경에만 엔드포인트가 있는 경우 대용량 페이로드를 지원하도록 환경을 구성할 수 있습니다. 이렇게 하면 대용량 페이로드를 지원할 필요가 없는 환경에 메모리를 추가하지 않아도 됩니다.
대용량 메시지 페이로드를 지원하도록 개별 환경을 구성하려면 envs.components.runtime 속성을 사용하면 됩니다. overrides.yaml 파일을 다음과 같이 변경합니다.
-
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다음을 참조하세요.
-
업데이트할 각 환경에 대해
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_NAME은
apigee-env차트 설치 및 업그레이드를 추적하는 데 사용되는 이름입니다. 이 이름은 설치 내 다른 Helm 출시 이름과 다르게 고유해야 합니다. 일반적으로ENV_NAME과 동일합니다. 그러나 환경 이름이 환경 그룹 이름과 같으면 환경과 환경 그룹에 서로 다른 출시 이름(예:dev-env-release및dev-envgroup-release)을 사용해야 합니다. Helm의 출시에 관한 자세한 내용은 Helm 문서의 세 가지 주요 개념을 참조하세요. - ENV_NAME은 업그레이드하는 환경의 이름입니다.
- OVERRIDES_FILE은 수정된
overrides.yaml파일입니다.
- ENV_RELEASE_NAME은
-
차트를 업그레이드합니다.
테스트 실행을 수행합니다.
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE
대용량 메시지 페이로드를 지원하도록 모든 환경 구성
runtime 스탠자를 변경하면 설치의 모든 환경에 힙 및 메모리 한도가 설정됩니다. envs.components.runtime 속성을 사용하여 개별 환경에 대해 이러한 설정을 재정의할 수 있습니다.
-
overrides.yaml파일에 다음 스탠자를 추가합니다.runtime: cwcAppend: bin_setenv_max_mem: 4096Mi # Increase max heap size to 4 gigs resources: requests: memory: 4Gi limits: memory: 6Gi다음을 참조하세요.
-
설치의 각 환경에 대해
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 포드당 최대 QPSL- 요청당 왕복 지연 시간(예상 지연 시간의 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
모니터링
여기에 제공된 가이드라인은 시작점으로 사용하기 위한 것입니다. 메모리 사용량 모니터링 및 알림을 적극 권장합니다. 힙 사용량이 지속적으로 높은 경우 안전 계수를 늘려 사용하세요.
관련 주제에 대한 추가 정보
- 메시지 페이로드 크기
envs[].components.runtime.resources.limits.memoryenvs[].components.runtime.resources.requests.memoryruntime.resources.limits.memoryruntime.resources.requests.memory