La actualización de PowerFlex 4.x falla con Outofmemoryerror y espacio en montón de Java
Summary: La actualización de PFxM falla con un error de memoria insuficiente y de espacio en montón de Java.
Symptoms
Cuando se realiza la actualización de PowerFlex, la actualización falla con los errores Out-OfMemoryError y espacio del montón de Java.
Desde 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
Impacto
Error de actualización.
Cause
El problema de memoria insuficiente se produce en el implementador delgado mientras organiza el proceso de actualización debido a una gran cantidad de objetos en PFxM (por ejemplo, un entorno de 64 nodos/SVM).
El proceso del implementador no tiene una configuración de memoria de tamaño de montón codificada, por lo tanto, la JVM utiliza 1/4 de la memoria del nodo. Las VM de MVM se implementan con 32 GB de memoria de manera predeterminada. Esto equivale a un tamaño máximo del montón de 8 GB para el proceso del implementador.
Resolution
Ambas opciones se pueden utilizar al mismo tiempo si es necesario.
Opción 1:
Aumente la memoria de MVM VM a 64 GB. Estoaumenta la cantidad de memoria montón de Java disponible utilizada por el proceso del implementador a 16 GB:
El equipo de ingeniería no tiene métricas específicas para la memoria necesaria por nodo, pero el uso de 64 GB ha demostrado ser exitoso.
Si la actualización continúa fallando, reduzca el conjunto de réplicas del gateway de PowerFlex (GW) a 1 GW:
1) SSH a un servidor PFMP
2) Reduzca las réplicas a 1:
kubectl scale sts block-legacy-gateway -n powerflex --replicas=1
3) Realice la actualización de GW. Esto actualiza el sistema a 4.x, donde se utiliza MTLS, y este problema no se observará. 4) Una vez que el sistema PowerFlex de back-end se actualice a 4.x, ajuste el conjunto de réplicas a 2 para GW:
kubectl scale sts block-legacy-gateway -n powerflex --replicas=2
Opción 2:
Elimine los grupos de recursos (RG) antes de actualizar PowerFlex y, a continuación, utilice la operación Add Existing Resource Group para volver a agregarlos. El uso de memoria descrito en este problema solo se utiliza para los nodos que están en RG; si no hay RG, la actualización no compilará los objetos y no debe haber una OOM.
Versiones afectadas
PFMP 4.x
Problema corregido en la versión
PFMP 4.8