PowerFlex Manager 3.8: Erros de heap Java sem memória levam a um desempenho insatisfatório
Summary: O esgotamento da memória heap do Java leva a um baixo desempenho da interface do usuário do PFxM e falhas inesperadas aleatórias em várias tarefas, como inventário de recursos, implementação de um novo serviço ou adição de um serviço existente. ...
Symptoms
A interface do usuário do PFxM apresenta baixo desempenho e pode ser lenta para fazer log-in e para extrair seções diferentes dentro dela. Várias tarefas, como inventário de recursos, implantação de um novo serviço ou adição de um serviço existente, podem falhar inesperadamente.
A coluna asmui e asmManager logs mostra Out-OfMemory Erros:
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!/:?]
...
Impacto
O esgotamento da memória heap do Java leva a um baixo desempenho da interface do usuário do PFxM e falhas aleatórias inesperadas em várias tarefas.
Cause
Os componentes asmui e asmManager têm um intervalo de memória heap Java padrão de 128M-512M e 512M-6144M, respectivamente. Em ambientes maiores, esse intervalo de memória pode não ser adequado para permitir que os vários processos sejam executados corretamente, levando ao esgotamento da memória heap.
Ambientes com um grande número de objetos no PFxM (por exemplo, 100+ recursos, 3+ serviços com 32+ nós, 10+ serviços totais) se beneficiarão de um pool maior de memória heap Java.
Resolution
O tamanho de heap Java pode ser aumentado para os componentes asumui e asmManager. No passado, isso era comumente visto como o "patch em grande escala" porque um patch tinha que ser aplicado à instância atual do PFxM e não persistia nos upgrades do PFxM.
Um patch não é mais necessário, pois essa atualização é aplicada a arquivos de configuração que persistem no upgrade do PFxM.
Nota: Antes de atualizar os valores de heap, a VM do PFxM deve ser configurada com pelo menos 20 vCPU (10 núcleos/2 soquetes) e 56 GB de memória.
Esse procedimento requer uma reinicialização da VM do PFxM, planeje adequadamente.
1. Na CLI do PFxM, faça backup dos arquivos de configuração atuais do asmui e do asmManager Java:
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. Faça um snapshot da VM do PFxM no Center.
3. Aumente a faixa superior de heap de asmui para 2048 M:
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. Aumente o intervalo superior de heap do asmManager para 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. Reinicie a VM do PFxM.
6. Verifique se as alterações de configuração são aplicadas:
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. Depois que as alterações forem implementadas e o problema for resolvido, exclua o snapshot da VM do PFxM no Center.
Impactado
Versões 3.8.6 e mais recentes