Outofmemoryerror 및 Java 힙 공간으로 인해 PowerFlex 4.x 업그레이드가 실패함
Summary: 메모리 부족 오류 및 Java 힙 공간 오류로 인해 PFxM 업그레이드가 실패합니다.
Symptoms
PowerFlex 업그레이드를 수행할 때 Out-OfMemoryError 및 java heap space 오류로 인해 업그레이드가 실패합니다.
deployment.log에서:
DEBUG [2025-01-06T22:50:31.482915] 573476: provider/configuration/vxos_update.rb:1082:in `process!': scaleio-block-legacy-gateway: Upgrade LIA DEBUG [2025-01-06T22:50:31.483170] 573476: provider/configuration/vxos_update.rb:707:in `im_upgrade': scaleio-block-legacy-gateway: Initiating VxOS cluster upgrade DEBUG [2025-01-06T22:50:31.576972] 573476: provider/configuration/vxos_update.rb:687:in `im_upgrade_staging': scaleio-block-legacy-gateway: Uploading VxOS RPMs for current version DEBUG [2025-01-06T22:50:58.310637] 573476: provider/configuration/vxos_update.rb:690:in `im_upgrade_staging': scaleio-block-legacy-gateway: Uploading VxOS RPMs for newer versions DEBUG [2025-01-06T22:50:58.312193] 573476: provider/configuration/vxos_update.rb:404:in `block in vxos_rpms': scaleio-block-legacy-gateway: Downloading rpms from nginx to /tmp: https://http-share.powerflex.svc:443/download//8aaa80939422a51b01943b5873e82d40/os/VxFlex4.5.2SLES15.4Repo/vxflexos_4.5.2000/ DEBUG [2025-01-06T22:50:59.581675] 573476: provider/configuration/vxos_update.rb:418:in `block in vxos_rpms': scaleio-block-legacy-gateway: Download operation result: # DEBUG [2025-01-06T22:50:59.582232] 573476: provider/configuration/vxos_update.rb:424:in `block in vxos_rpms': scaleio-block-legacy-gateway: Local rpm path: /tmp/d20250106-5032-ukddq7/http-share.powerflex.svc/8aaa80939422a51b01943b5873e82d40/os/VxFlex4.5.2SLES15.4Repo/vxflexos_4.5.2000 DEBUG [2025-01-06T22:50:59.587624] 573476: provider/configuration/vxos_update.rb:404:in `block in vxos_rpms': scaleio-block-legacy-gateway: Downloading rpms from nginx to /tmp: https://http-share.powerflex.svc:443/download//8aaa80939422a51b01943b5873e82d40/os/VxFlex4.5.2RHEL7Repo/vxflexos_4.5.2000/ DEBUG [2025-01-06T22:51:00.312803] 573476: provider/configuration/vxos_update.rb:418:in `block in vxos_rpms': scaleio-block-legacy-gateway: Download operation result: # DEBUG [2025-01-06T22:51:00.313528] 573476: provider/configuration/vxos_update.rb:424:in `block in vxos_rpms': scaleio-block-legacy-gateway: Local rpm path: /tmp/d20250106-5032-ukddq7/http-share.powerflex.svc/8aaa80939422a51b01943b5873e82d40/os/VxFlex4.5.2RHEL7Repo/vxflexos_4.5.2000 ERROR [2025-01-06T22:56:16.377904] 573476: rule_engine/rule.rb:241:in `process_state': Encountered a critical unrecoverable error while processing #: Java::JavaLang::OutOfMemoryError: Java heap space ERROR [2025-01-06T22:56:16.378496] 573476: service/processor.rb:54:in `block in process_state_threaded': Encountered a critical unrecoverable error while processing the service: Java::JavaLang::OutOfMemoryError: Java heap space ERROR [2025-01-06T22:56:16.379412] 573400: rule_engine/rule.rb:241:in `process_state': Encountered a critical unrecoverable error while processing #: Java::JavaLang::OutOfMemoryError: Java heap space
영향
업그레이드하지 못했습니다.
Cause
메모리 부족 문제는 PFxM의 많은 수의 객체(예: 64개 노드/SVM 환경)로 인해 업그레이드 프로세스를 오케스트레이션하는 동안 씬 배포자에서 발생합니다.
배치자 프로세스에는 하드 코딩된 힙 크기 메모리 설정이 없으므로 JVM은 노드 메모리의 1/4을 사용합니다. MVM VM은 기본적으로 32GB의 메모리와 함께 배포됩니다. 이는 배포자 프로세스의 최대 힙 크기가 8GB에 해당합니다.
Resolution
필요한 경우 두 옵션을 동시에 사용할 수 있습니다.
옵션 1:
MVM VM 메모리를 64GB로 늘립니다. 배포자 프로세스에서 사용하는 사용 가능한 Java 힙 메모리의 양을 16GB로 늘립니다.
엔지니어링 팀에는 노드당 필요한 메모리에 대한 특정 메트릭이 없지만 64GB를 사용하는 것은 성공적인 것으로 입증되었습니다.
업그레이드에 계속 실패하면 GW(PowerFlex Gateway)의 복제본 세트를 1GW로 줄입니다.
1) PFMP 서버에 SSH 접속
2) 복제본을 1로 줄입니다.
kubectl scale sts block-legacy-gateway -n powerflex --replicas=1
3) GW 업그레이드를 수행합니다. 이렇게 하면 시스템이 MTLS가 사용되는 4.x로 업그레이드되며 이 문제는 관찰되지 않습니다. 4) 백엔드 PowerFlex 시스템을 4.x로 업그레이드한 후 GW에 대해 복제본 세트를 다시 2로 조정합니다.
kubectl scale sts block-legacy-gateway -n powerflex --replicas=2
옵션 2:
PowerFlex를 업그레이드하기 전에 RG(Resource Group)를 제거한 다음 Add Existing Resource Group 작업을 사용하여 다시 추가합니다. 이 문제에서 설명하는 메모리 사용량은 RG에 있는 노드에만 사용됩니다. RG가 없는 경우 업그레이드 시 오브젝트가 빌드되지 않으며 OOM이 없어야 합니다.
영향을 받는 버전
PFMP 4.x
수정된 버전
PFMP 4.8 시리즈