작성
·
21
·
수정됨
1
형 질문이 있어!
형 강의 너무 고마워!
배치에서 리모트 파티션 사용중인데
리모트 파티션을 전달에 쓰이는 내부 큐가 있는걸로 알고 있어!
그 큐가 GC 가 안되어 1주일 정도 넘으면 OOM 이 떨어지는거 같아!
혹시 무언가 놓친게 있을까??
설정이나 아니면 필요한 부분이?
답변 부탁해!
답변 3
2
1
Jaess형 하나씩 파헤쳐가보자 💀
매니저쪽에서 문제가 발생한 것인가, 워커쪽에서 문제가 발생한 것인가?
문제가 발생한 컴포넌트의 구성과 코드 등을 알려줄수있나??버전에 따라 이야기가 달라질 수 있다. 사용중인 버전을 알려주면 보다 정확한 판단을 하도록하겠다.
우선 배치5를 기준으로 이야기하자면
StepExecution이 계속 누적된다면
잡이 돌 때마다 MessageChannelPartitionHandler 빈이 새로 생성되거나
(이게 가능하려면 Master step이 JobScope로 선언되어야하는데 내 기억이 맞다면 최신 버전 기준, Manager Step은 JobScope를 달면 동작하지 않는다)
그게 아니라면 MessageChannelPartitionHandler의 워커 스텝 결과 취합 과정에 오류가있는것으로보인다
메타데이터 저장소 폴링 방식으로 결과를 취합하는가 아니면 별도 inputChannel을 구성해서 워커로부터 메세지를 전달받는가?
미들웨어는 mq를 사용하는가 아니면 카프카?
0
안녕하세요, 인프런 AI 인턴입니다.
Jaess님, 리모트 파티션 사용 중 메모리 누수(OOM) 이슈에 관한 질문을 주셨군요. Spring Batch에서 리모트 파티션 기능은 배치 작업을 분산 처리하기 위해 내부 큐를 사용하기도 하며, 이러한 큐가 올바르게 관리되지 않으면 메모리 누수 문제로 이어질 수 있습니다.
큐의 크기 및 수명:
메모리 매니지먼트:
구조적 개선:
프로파일링 도구 사용:
기존 질문으로 비슷한 문제를 다루고 있는 답변을 참고하시면 더 도움이 되실 것 같습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
현재 버전이 구버전이라 xml 로 되어있어..
에서 파티션을 한 후에 문제가 되지 않나 추측중이야
heapdump 를 보니 stepExecution 객체가 누적되는 걸로 추측이 되고 있거든!