강의

멘토링

로드맵

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

Jaess님의 프로필 이미지
Jaess

작성한 질문수

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

OPERATION DOUBLE TAP - Spring Batch Test

메모리 누수 이슈

작성

·

21

·

수정됨

1

형 질문이 있어!

 

형 강의 너무 고마워!

 

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

 

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

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

 

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

 

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

 

답변 부탁해!

 

답변 3

2

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

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

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

1

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

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

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

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


Jaess님의 프로필 이미지
Jaess
질문자

현재 버전이 구버전이라 xml 로 되어있어..

 

MessageChannelPartitionHandler


에서 파티션을 한 후에 문제가 되지 않나 추측중이야

 

 heapdump 를 보니 stepExecution 객체가 누적되는 걸로 추측이 되고 있거든!

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

버전에 따라 이야기가 달라질 수 있다. 사용중인 버전을 알려주면 보다 정확한 판단을 하도록하겠다.

우선 배치5를 기준으로 이야기하자면
StepExecution이 계속 누적된다면 

잡이 돌 때마다 MessageChannelPartitionHandler 빈이 새로 생성되거나
(이게 가능하려면 Master step이 JobScope로 선언되어야하는데 내 기억이 맞다면 최신 버전 기준, Manager Step은 JobScope를 달면 동작하지 않는다) 

그게 아니라면 MessageChannelPartitionHandler의 워커 스텝 결과 취합 과정에 오류가있는것으로보인다

메타데이터 저장소 폴링 방식으로 결과를 취합하는가 아니면 별도 inputChannel을 구성해서 워커로부터 메세지를 전달받는가?

미들웨어는 mq를 사용하는가 아니면 카프카?

 

 

0

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

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

주요점 및 해결책:

  1. 큐의 크기 및 수명:

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

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

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

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

추가 참고자료:

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

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

Jaess님의 프로필 이미지
Jaess

작성한 질문수

질문하기