Échec de la mise à niveau de PowerFlex 4.x avec une erreur de mémoire insuffisante et un espace de segment de mémoire Java
Summary: La mise à niveau de PFxM échoue avec une erreur de mémoire insuffisante et une erreur de segment de mémoire Java.
Symptoms
Lors de l’exécution de la mise à niveau PowerFlex, la mise à niveau échoue avec des erreurs Out-OfMemoryError et Java heap space.
À partir de 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
Impact
Échec de la mise à niveau.
Cause
Le problème de mémoire insuffisante se produit dans le déploiement dynamique lorsqu’il orchestre le processus de mise à niveau en raison d’un grand nombre d’objets dans PFxM (par exemple, un environnement à 64 nœuds/SVM).
Le processus de déploiement ne dispose pas d’un paramètre de taille de segment de mémoire codé en dur. Par conséquent, la JVM utilise 1/4 de la mémoire du nœud. Les machines virtuelles MVM sont déployées avec 32 Go de mémoire par défaut. Cela équivaut à une taille de segment de mémoire maximale de 8 Go pour le processus de déploiement.
Resolution
Les deux options peuvent être utilisées en même temps si nécessaire.
Option 1 :
Augmentez la mémoire de la machine virtuelle MVM à 64 Go. Cela augmente la quantité de mémoire du segment de mémoire Java disponible utilisée par le processus de déploiement à 16 Go :
Les ingénieurs ne disposent pas de mesures spécifiques pour la mémoire requise par nœud, mais l’utilisation de 64 Go s’est avérée efficace.
Si la mise à niveau échoue toujours, réduisez l’ensemble de réplicas de la passerelle PowerFlex (GW) à 1 GW :
1) Établissez une connexion SSH avec un serveur PFMP
2) Réduisez le nombre de réplicas à 1 :
kubectl scale sts block-legacy-gateway -n powerflex --replicas=1
3) Effectuez la mise à niveau de GW. Cela met à niveau le système vers la version 4.x, où MTLS est utilisé, et ce problème ne sera pas observé. 4) Une fois que le système PowerFlex back-end est mis à niveau vers la version 4.x, réglez l’ensemble de réplicas sur 2 pour la passerelle :
kubectl scale sts block-legacy-gateway -n powerflex --replicas=2
Option 2 :
Supprimez les groupes de ressources (RG) avant de mettre à niveau PowerFlex, puis utilisez l’opération Add Existing Resource Group pour les ajouter à nouveau. L’utilisation de la mémoire décrite dans ce problème est uniquement utilisée pour les nœuds qui se trouvent dans des RG ; S’il n’y a pas de RG, la mise à niveau ne crée pas les objets et il ne doit pas y avoir d’OOM.
Versions affectées
PFMP 4.x
Problème résolu dans la version
PFMP 4.8