PowerFlex Manager 3.8: Out-OfMemory Java 힙 오류로 인해 성능 저하
Summary: Java 힙 메모리가 소모되면 PFxM UI 성능이 저하되고 리소스 인벤토리, 새 서비스 배포 또는 기존 서비스 추가와 같은 다양한 작업에 대해 예기치 않은 무작위 오류가 발생합니다.
Symptoms
PFxM UI의 성능이 저하되고 로그인 속도가 느릴 수 있으며 UI 내에서 다른 섹션을 가져오는 속도가 느려질 수 있습니다. 리소스 인벤토리, 새 서비스 배포 또는 기존 서비스 추가와 같은 다양한 작업이 예기치 않게 실패할 수 있습니다.
이 asmui 및 asmManager 로그 표시 Out-OfMemory 오류:
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!/:?]
...
영향
Java 힙 메모리가 소모되면 PFxM UI 성능이 저하되고 다양한 작업에 대해 예기치 않은 무작위 오류가 발생합니다.
Cause
asmui 및 asmManager 구성 요소의 기본 Java 힙 메모리 범위는 각각 128M-512M 및 512M-6144M입니다. 대규모 환경에서는 이 메모리 범위가 다양한 프로세스를 올바르게 실행하는 데 적합하지 않아 힙 메모리가 고갈될 수 있습니다.
PFxM에 많은 수의 개체가 있는 환경(예: 100+ 리소스, 32+ 노드가 있는 3+ 서비스, 10+ 총 서비스)은 더 큰 Java 힙 메모리 풀의 이점을 누릴 수 있습니다.
Resolution
asumui 및 asmManager 구성 요소에 대해 Java 힙 크기를 늘릴 수 있습니다. 과거에는 패치를 현재 PFxM 인스턴스에 적용해야 하고 PFxM 업그레이드 간에 지속되지 않았기 때문에 이를 일반적으로 '대규모 패치'로 간주했습니다.
이 업데이트는 PFxM 업그레이드 전반에 걸쳐 유지되는 구성 파일에 적용되므로 패치가 더 이상 필요하지 않습니다.
참고: 힙 값을 업데이트하기 전에 PFxM VM을 최소 20개의 vCPU(10개 코어/2개 소켓) 및 56GB 메모리로 구성해야 합니다.
이 절차를 수행하려면 PFxM VM을 재부팅해야 하며 그에 따라 계획합니다.
1. PFxM CLI에서 현재 asmui 및 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. 중앙에서 PFxM VM의 스냅샷을 생성합니다.
3. asmui 힙 상한 범위를 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. asmManager 힙 상한 범위를 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. PFxM VM을 재시작합니다.
6. 구성 변경 사항이 적용되었는지 확인합니다.
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. 변경 사항이 구현되고 문제가 해결되면 Center에서 PFxM VM 스냅샷을 삭제합니다.
영향
버전 3.8.6 이상