2024년 3월 14일 목요일

OOM(OutOfMemory)에러에 대한 원인 및 해결방안에 대한 정리

SAP PO에서 발생되는 OOM(OutOfMemory)에 에러원인과 해결방안은 다양한것 같음

SAP PO에서의 OOM에러 원인들은

  •  예를들어 자바프록시 등 내 개발자가 생성한 로직에 잘못된 코드나 메모리 누수가 있는 경우 → 예를들어 테스트 없이 운영배포 후 무한루프 로직이나 라이브러리 사용과는 다른 구현
  • 커스텀으로 개발된 코드에서 사용한 외부 라이브러리에 버그가 있는 경우 → 예를들어 레퍼런스가 없는 서비스 지원이 끊긴 라이브러리
  • 인터페이스 시 사이즈 제한으로 인한 강제 에러나 대용량 사이즈 처리로 인한 부하가 발생된 경우 → 예를들어 소스시스템에서의 대용량 전송 및 타겟쪽 조회 시 대용량사이즈 리턴
  • PO내의 처리관련 설정 보다 더 많은 건수나 빈도수로 호출되어 정체가 되는경우 → 예를들어 소스시스템에서의 무작위 호출
  • 시스템내 처리중인 메시지 건수가 많고 이 데이터를 쿼리실행 할때 → 예를들어 집계쿼리 실행이나 인터페이스 내 PO테이블 조회 등
  • 트레이스 로그는 모르겠지만 시스템 내 많은 로깅이 쌓일때 → 예를들어 로그레벨 수정으로 인한 불필요한 로깅 등

해결방안으로는

  • 무작위로 호출되어 에러가 발생되는 경우 → 소스 배치인경우 일단 중지 후 에러난 로그나 처리중인건들은 확인 후 재처리나 캔슬처리
  • 불필요한 로깅 → 시스템 로그레벨을 조정하거나 자바프록시내 로깅은 해당 인터페이스를 수정
  • 메모리 누수같은경우
    • 노드추가나 JVM파라메터 추가하는경우에도 문제가 지속적으로 발생되는 경우가 있다고 함
    • 힙 메모리 크기를 늘리는 경우에는 OOM오류를 지연될 뿐이라고 함
    • 근본적으로 메모리 
  • 메모리 관련 모니터링이나 덤프 분석을 위해선
    • Wily Introscope를 사용하는 경우 모든 노드의 힙 메모리 사용량 모니터링
    • Eclipse Memory Analyzer(MAT)를 사용한 인스턴스 메모리 사용량을 알수 있는듯
      • 바이너리 형식 Heap dump를 분석할수 있다고 함
      • SAP가 개발한 Eclipse RPC를 베이스로 멀티플레이트 폼? 어플리케이션이라고 함

관련 이전 블로그 글


출처

댓글 없음:

댓글 쓰기