PowerFlex Manager 3.8: Gli errori di heap Java insufficiente portano a scarse prestazioni
Summary: L'esaurimento della memoria heap di Java determina scarse prestazioni dell'interfaccia utente PFxM ed errori imprevisti casuali per varie attività, ad esempio l'inventario delle risorse, la distribuzione di un nuovo servizio o l'aggiunta di un servizio esistente. ...
Symptoms
L'interfaccia utente PFxM presenta scarse prestazioni e può essere lenta ad accedere e a visualizzare diverse sezioni all'interno dell'interfaccia utente. Varie attività, ad esempio l'inventario delle risorse, la distribuzione di un nuovo servizio o l'aggiunta di un servizio esistente, potrebbero avere esito negativo in modo imprevisto.
La colonna asmui e asmManager I registri mostrano Out-OfMemory errori:
2024-06-01 01:17:24 [http-nio-9030-exec-4] (DeviceController.java:626) [ERROR] getDeviceList() - Exception from service call
java.lang.OutOfMemoryError: Java heap space
2024-06-01 01:17:24 [http-nio-9030-exec-4] (BaseController.java:304) [ERROR] Found generic exception in Controller
java.lang.OutOfMemoryError: Java heap space
2024-06-01 01:17:24 [http-nio-9030-exec-9] (DeviceController.java:626) [ERROR] getDeviceList() - Exception from service call
java.lang.OutOfMemoryError: Java heap space
2024-06-01 01:17:24 [http-nio-9030-exec-9] (BaseController.java:304) [ERROR] Found generic exception in Controller
java.lang.OutOfMemoryError: Java heap space
2024-06-01 01:17:26 [http-nio-9030-exec-6] (DeviceController.java:626) [ERROR] getDeviceList() - Exception from service call
java.lang.OutOfMemoryError: Java heap space
2024-06-01 01:17:26 [http-nio-9030-exec-6] (BaseController.java:304) [ERROR] Found generic exception in Controller
java.lang.OutOfMemoryError: Java heap space
...
2024-07-10 00:40:50 [http-nio-9030-exec-11] (RestTemplateResponseErrorHandler.java:47) [ERROR] REST Error: {
"detailMessage" : "Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap space",
"cause" : {
"cause" : {
"cause" : null,
"stackTrace" : [ ],
"message" : "Java heap space",
"localizedMessage" : "Java heap space",
"suppressed" : [ ]
...
"stackTrace" : [ ],
"suppressedExceptions" : [ ],
"status" : 500,
"timestamp" : "2024-07-10T04:40:50.986+00:00",
"error" : "Internal Server Error",
"path" : "/AsmManager/job/",
"messages" : [ {
"messageBundle" : null,
"messageCode" : null,
"severity" : null,
"category" : null,
"displayMessage" : "Runtime error",
"responseAction" : null,
"detailedMessage" : "Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap space",
"agentId" : null,
"correlationId" : null,
"timeStamp" : "2024-07-10T04:40:50.987+00:00",
"sequenceNumber" : 0
} ]
}
2024-07-10 00:40:50 [http-nio-9030-exec-11] (JobsController.java:83) [ERROR] getJobs() - Exception from service call
com.dell.asm.rest.common.exception.LocalizedWebApplicationException: HTTP 500 Internal Server Error
at com.dell.pfxm.springboot.helpers.error.RestTemplateResponseErrorHandler.handleError(RestTemplateResponseErrorHandler.java:64) ~[RestCommon-0.7.0-SNAPSHOT.jar!/:?]
...
Impatto
L'esaurimento della memoria heap di Java porta a scarse prestazioni dell'interfaccia utente PFxM ed errori imprevisti casuali per varie attività.
Cause
I componenti asmui e asmManager hanno un intervallo di memoria heap Java predefinito rispettivamente di 128 M-512 M e 512 M-6144 M. In ambienti più grandi, questo intervallo di memoria potrebbe non essere adeguato per consentire la corretta esecuzione dei vari processi, con conseguente esaurimento della memoria heap.
Gli ambienti con un numero elevato di oggetti in PFxM (ad esempio 100+ risorse, 3+ servizi con 32+ nodi, 10+ servizi totali) trarranno vantaggio da un pool di memoria dell'heap Java più grande.
Resolution
Le dimensioni dell'heap Java possono essere aumentate per i componenti asumui e asmManager. In passato, questa era comunemente vista come la "patch su larga scala" perché una patch doveva essere applicata all'istanza PFxM corrente e non persisteva negli aggiornamenti PFxM.
Una patch non è più necessaria poiché questo aggiornamento viene applicato ai file di configurazione che persistono durante l'aggiornamento di PFxM.
NOTA: Prima di aggiornare i valori dell'heap, la VM PFxM deve essere configurata con almeno 20 vCPU (10 core/2 socket) e 56 GB di memoria.
Questa procedura richiede un riavvio della macchina virtuale PFxM, pianificare di conseguenza.
1. Dalla CLI PFxM, eseguire il backup dei file di configurazione Java di asmui e asmManager correnti:
sudo cp /opt/Dell/ASM/conf/asmui-jvm-props.conf asmui-jvm-props.conf.bak sudo cp /opt/Dell/ASM/conf/asmManager-jvm-props.conf asmManager-jvm-props.conf.bak
2. Creare una snapshot della macchina virtuale PFxM al centro.
3. Aumentare l'intervallo superiore dell'heap asmui a 2048M:
echo '-Xloggc:/opt/Dell/ASM/logs/gc_asmui.log -XX:+PrintHeapAtGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=10M -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="/opt/Dell/ASM/logs/" -Xms128m -Xmx2048m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -Dhttp.nonProxyHosts="localhost.localdomain|localhost|127.0.0.1" -Djava.io.tmpdir=/opt/Dell/ASM/temp -Dspring.profiles.active=main' > /opt/Dell/ASM/conf/asmui-jvm-props.conf
4. Aumentare l'intervallo superiore dell'heap asmManager a 18432M:
echo '-Xloggc:/opt/Dell/ASM/logs/gc_asmManager.log -XX:+PrintHeapAtGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=10M -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="/opt/Dell/ASM/logs/" -Xms512m -Xmx18432m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -Dhttp.nonProxyHosts="localhost.localdomain|localhost|127.0.0.1" -Djava.io.tmpdir=/opt/Dell/ASM/temp -Dspring.profiles.active=main' > /opt/Dell/ASM/conf/asmManager-jvm-props.conf
5. Riavviare la macchina virtuale PFxM.
6. Verificare che le modifiche alla configurazione vengano applicate:
cat /opt/Dell/ASM/conf/asmui-jvm-props.conf | grep -E 'Xms|Xmx' cat /opt/Dell/ASM/conf/asmManager-jvm-props.conf | grep -E 'Xms|Xmx'
7. Dopo aver implementato le modifiche e risolto il problema, eliminare la snapshot della macchina virtuale PFxM al centro.
Incluso
Versioni 3.8.6 e successive