2020년 6월 27일 토요일

How to analyze the cause of Full GC and OOM in SAP PO 7.5

SAP PO에서 여러 GC(Garbage Collecto)가 존재하지만 유독 Full GC에 민감한 이유는 GC가 수행되는 시간이 다른 것보다 길며 수행중인 상태에서는 Application이 멈춰질수 있는 부분이라 GC가 끝난 후에 요청데이터가 한번에 몰리게되 부하를 발생될수있습니다. 시스템 안정성과 성능에 영향을 줄수 있는 부분입니다.
가끔씩 BC분이 특정노드에서 Full GC현상이 발생된다고 얘기하는 경우가 있습니다. 그럴때면 노드별로 Full GC현상이 발생된 시간대에 노드별로 수행된 인터페이스 건수를 확인하는데.. 이것 외에 SAP PO에서 Full GC가 발생되는 현상에대해 체크하는 방법들을 알아보려고 합니다. 그 전에 Full GC에 대해 알아봐야겠죠?

GC(Garbage Collector) 란?

JAVA에서는 Automatic memory management가 되어서 따로 개발자가 메모리관리를 위한 로직을 구현할 필요성이 없다고 합니다. 프로그램에서 객체가 생성되어 메모리에 올라가게되고 그 객체에 대한 처리가 완료되면 더이상 필요없기때문에 효율적으로 처리하기 위한 작업을 GC라고 하는군요.
예전에 PO의 ESB(Enterprise Service Builder)에서 UDF(User-Defined Function)을 추가후 매핑테스트를 한적이 있었는데 OOM(OutOfMemory)가 발생된적이 있었습니다. GC를 해도 더이상 사용가능한 메모리 영역이 없는데 계속 할당하려고 하는 경우 발생된다고합니다. 또한 GC는 Heap메모리와 관련이 있으며 Full GC가 발생되는 경우 PO의 Heap메모리 설정값을 변경하는 경우가 있었습니다. 하지만 근본적인 문제를 해결하지 않는이상 또 같은 문제가 발생될수 있는것 같더라고요.

GC 튜닝의 필요성?

일반적인 JAVA Application에서 많은 객체가 생성되면 그 객체를 처리하는 GC도 수행을 많이 할테고 일단 객체생성을 줄이는게 좋다고 합니다. 그래서 로직을 구현할때 사용하는 String보다 StringBuilder와 StringBuffer를 권장하는것 같습니다. 하지만 PO는 JSON Adapter Channel도 존재하지만 주로 XML파싱 많이 수행되서 대용량 사이즈가 전송되는경우 메모리에 부하를 줄수 있는 부분이 발생됩니다. 그래서 좋은 성능을 위한 권장 사이즈도 존재하는 거고요. 그리고 SAP PO의 매핑에 UDF나 Java Mapping이 들어간경우가 있는데 이 안에서 잘못된 로직을 구현하는경우 이또한 메모리에 부하를 줄수 있는 부분이라 만약 튜닝을 하게 된다면 이런 작은 부분들부터 개선할필요가 있을것 같습니다.

Full GC 체크과정

몇개의 사이트의 내용을 확인해봤을때 BC(Basis Consultant)와 시스템 관리자가 알수있는 내용인것 같으며 PO 담당자가 알기에는 어려운내용으로 보입니다. 혹시나 비효율적으로 Full GC가 실행이 되는것 같고 OOM이 확인이 되는경우 BC나 시스템관리자에게 도움을 받아서 해결하는게 좋을것 같습니다.
예전에는 보지 못한 메뉴인것 같은데..
NWA(SAP NetWeaver Administrator) > Troubleshooting > Advanced Troubleshooting의 Thread Dump Analysis와 Heap Dump Analysis에서 덤프파일을 다운을받아 발생원인을 찾을수 있을것 같습니다. 그리고 LogViewer에서 'OutOfMemory'를 조회 하는경우 fafal이나 error로그로 OOM을 발생시키는 인터페이스나 메시지를 확인이 가능합니다.
더 자세하게 확인을 하려면 The SAP JVM Profiler가 있는데 .zip파일을 Service Maketplace에서 다운을 받아 이클립스 기반의 NWDS(SAP NetWeaver Developer)의 Install New Software > Archive.. 로 플러그인 설치가 가능합니다. SAP JVM Profiler은 PO서버의 JVM의 백앤드 데이터를 그래픽 요소를 가미해서 프론트앤드에서 보여주는 Tool입니다. 이 화면에서 GC, 시스템정보 그리고 성능관련된 데이터를 보여주는 이부분들에 대해서는 나중에 다뤄보기로 하겠습니다.

출처: 
https://12bme.tistory.com/57
https://d2.naver.com/helloworld/37111
The SAP JVM Profiler Documentation.pdf

#SAP #PO75 #fullGC #OOM #OutOfMemory #JvmProfiler #GarbageCollector


댓글 없음:

댓글 쓰기