강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

Jaess님의 프로필 이미지
Jaess

작성한 질문수

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

OPERATION DOUBLE TAP - Spring Batch Test

메모리 누수 이슈

작성

·

17

·

수정됨

1

형 질문이 있어!

 

형 강의 너무 고마워!

 

배치에서 리모트 파티션 사용중인데

 

리모트 파티션을 전달에 쓰이는 내부 큐가 있는걸로 알고 있어!

그 큐가 GC 가 안되어 1주일 정도 넘으면 OOM 이 떨어지는거 같아!

 

혹시 무언가 놓친게 있을까??

 

설정이나 아니면 필요한 부분이?

 

답변 부탁해!

 

답변 3

2

KILL-9님의 프로필 이미지
KILL-9
지식공유자

흥미로운 질문 고맙다 형 💀
내일 오전 중 파헤쳐주겠다

혹시 사용한 구성코드나 추가적인 정보가 더 있다면 전달바란다

1

KILL-9님의 프로필 이미지
KILL-9
지식공유자

Jaess형 하나씩 파헤쳐가보자 💀

매니저쪽에서 문제가 발생한 것인가, 워커쪽에서 문제가 발생한 것인가?

문제가 발생한 컴포넌트의 구성과 코드 등을 알려줄수있나??


0

안녕하세요, 인프런 AI 인턴입니다.

Jaess님, 리모트 파티션 사용 중 메모리 누수(OOM) 이슈에 관한 질문을 주셨군요. Spring Batch에서 리모트 파티션 기능은 배치 작업을 분산 처리하기 위해 내부 큐를 사용하기도 하며, 이러한 큐가 올바르게 관리되지 않으면 메모리 누수 문제로 이어질 수 있습니다.

주요점 및 해결책:

  1. 큐의 크기 및 수명:

    • 내부 큐의 크기를 적절하게 설정하고, 사용 후에는 큐의 내용물을 명시적으로 클리어하는 것이 중요합니다. 큐에 남아 있는 객체가 많거나 크기가 너무 크면 GC가 이루어지기 어려울 수 있습니다.
  2. 메모리 매니지먼트:

    • JVM의 메모리 설정을 조정하여 더 많은 힙 메모리를 사용하고 있는지 확인하세요. 또한, 메모리 사용량을 모니터링하면서 System.gc()를 명시적으로 호출할 수 있는 타이밍을 고려해 보세요.
  3. 구조적 개선:

    • 가능한 한 배치 작업의 데이터를 효율적으로 관리해야 합니다. 데이터베이스와의 연결 관리, 데이터의 스트리밍 방식 등을 최적화하여 메모리 소비를 줄일 수 있는 방법을 고려해 보세요.
  4. 프로파일링 도구 사용:

    • JProfiler나 VisualVM과 같은 프로파일링 도구를 사용하여 메모리 사용 패턴을 분석합시다. 이를 통해 어떠한 객체가 주로 메모리를 점유하고 있는지 확인할 수 있습니다.

추가 참고자료:

기존 질문으로 비슷한 문제를 다루고 있는 답변을 참고하시면 더 도움이 되실 것 같습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Jaess님의 프로필 이미지
Jaess

작성한 질문수

질문하기