1. 서비스별 Heap 덤프 생성 방법
디렉토리 변경
cd /usr/lib/vmware-vcops/common/lib
vROPS 버전에 맞게 Heap 덤프 수집(※ 명령어 실행 전 log4j JAR 파일명과 서비스 포트 번호 확인 필요)
8.0: java -cp "alive_platform.jar:log4j-1.2.17.jar:vrops-jmx-metrics-1.0.jar" com.vmware.vcops.common.JMXCommandExecutor 9005 dumpHeap /storage/db/vcops/heapdump
8.1: java -cp "alive_platform.jar:log4j-api-2.12.0.jar:vrops-jmx-metrics-1.0.jar" com.vmware.vcops.common.JMXCommandExecutor 9004 dumpHeap /storage/db/vcops/heapdump
8.3: java -Djavax.net.ssl.trustStore=NONE -cp "alive_platform.jar:log4j-core-2.12.0.jar:vrops-logging-1.0-SNAPSHOT.jar:log4j-api-2.12.0.jar:vrops-jmx-metrics-1.0.jar:vrops-trustmanager-3.0-SNAPSHOT.jar" com.vmware.vcops.common.JMXCommandExecutor 9005 dumpHeap /storage/db/vcops/heapdump
8.6.2: java -Djavax.net.ssl.trustStore=NONE -cp "alive_platform.jar:log4j-core-2.16.0.jar:vrops-logging-1.0-SNAPSHOT.jar:log4j-api-2.16.0.jar:vrops-jmx-metrics-1.0.jar:vrops-trustmanager-3.0-SNAPSHOT.jar" com.vmware.vcops.common.JMXCommandExecutor 9006 dumpHeap /storage/db/vcops/heapdump
Heap 덤프 파일의 md5sum 생성
/storage/db/vcops/heapdump/md5sum heapDump_xxxxxxxxxxxxx.hprof 2>&1 | tee md5sum_output.file
Heap 덤프 파일과 md5sum 파일 압축
/storage/db/vcops/heapdump/zip heapdump.zip heapDump_xxxxxxxxxxxxx.hprof md5sum_output.file
서비스 포트 번호
- Analytics: 9004
- API(REST): 9007
- Collector: 9005
- Cassandra: 9008
- UI (tcServer): 9006
예제)
admin@vRealizeClusterNode [ /usr/lib/vmware-vcops/common/lib ]$ java -Djavax.net.ssl.trustStore=NONE -cp "alive_platform.jar:log4j-core-2.17.2.jar:vrops-logging-1.0-SNAPSHOT.jar:log4j-api-2.17.2.jar:vrops-jmx-metrics-1.0.jar:vrops-trustmanager-3.0-SNAPSHOT.jar" com.vmware.vcops.common.JMXCommandExecutor 9006 dumpHeap /storage/db/vcops/heapdump
Parsing cmd
Try to connect to the JMX port - 9006
Successfully connected to the JMX port - 9006
Successfully got mbean server
Generating heapdump at - /storage/db/vcops/heapdump/heapDump_1658747689682.hprof
Succesfully generated heapdump
root@vRealizeClusterNode [ /storage/db/vcops/heapdump ]# md5sum heapDump_1658747689682.hprof 2>&1 | tee md5sum_output.file
71fd070cf3b9de913c02008691510b9a heapDump_1658747689682.hprof
root@vRealizeClusterNode [ /storage/db/vcops/heapdump ]# zip heapdump.zip heapDump_1658747689682.hprof md5sum_output.file
adding: heapDump_1658747689682.hprof (deflated 84%)
adding: md5sum_output.file (stored 0%)
2. 수집한 Heap Dump 분석
1) EclipseMAT를 PC에 설치합니다. (사전에 JDK가 설치되어 있어야 합니다.)
2) 설치 완료 후 EclipseMAT를 실행하고 File > Open Heap Dump 메뉴를 통해 위에서 수집한 확장자 hprof 파일을 선택합니다.
참고:
Eclips MAT로 heap dump open 시 아래와 같은 Error가 발생하며, parsing이 fail될 경우가 있습니다.
An internal error occurred during: "Parsing heap dump from 'C:\Temp\Image data\20230621-SDS-vROPS-issue\java_pid4494.hprof'".
Java heap space
이럴 경우 MemoryAnalyzer.ini 파일을 Text editor로 open 하셔서 -Xmx1024m 값을 아래와 같이 수정 후 application을 다시 기동해주시면 됩니다.
-Xmx1024m to -Xmx2048m
참고로 Memory 여유가 된다면 4096이나 8092 등의 값으로 변경하면 빠르게 parsing을 할 수 있다.
3) Leak Suspects Report를 선택합니다.
4) Overview TAB에서 Actions에 있는 Dominator Tree를 선택하면, 어떤 클래스가 Heap을 얼마나 사용하고 있는지 확인이 가능합니다.
'Management' 카테고리의 다른 글
[Operations] Instanced Metrics (0) | 2023.08.06 |
---|---|
[Operations] How to use API using postman (0) | 2023.08.06 |
[Operations] Generate a support bundle through the console or command line (0) | 2023.08.06 |
[Operations] 서비스 시작/중지/확인 (0) | 2023.08.06 |
[Operations] Database(Cassandra, Postgres) 접속 방법 (0) | 2023.08.06 |