[Springboot] 대용량 Select Query OOM 방지를 위한 스트림
2022. 12. 13. 00:12
개발/Spring
서론 대량의 select 쿼리를 날릴 때 대부분의 개발자들은 Memory 요소를 파악하지 못하는 것 같다. 이번에도 몇십만건의 데이터를 한번에 load 해서 front에 뿌리는 프로세스에서 was가 후두둑 죽어가는게 아닌가. 이전 프로젝트에서도 배치개발을 하던 과장급 프리랜서가 있었는데, 운영에 올리자마자 터지고 난리도 아니였다. 그들의 답변은 항상 '개발환경에선 잘된다, 단지 데이터가 많을 뿐 -> 인프라문제다.' 제발 메모리 이슈좀 알아서 해결해라!!!!!!!!!!!! 테스트 목적 '직접'해보자 Q. 수십~수백만 건의 데이터를 어떻게 사용자에게 보여줄 것인가??? 검색해보니 제일먼저 Mybatis fetchSize 조정이 있었다.(default 10) - 만약 1000개의 데이터를 select 한다면..
[Trouble Shooting] Spring HeapDump 설정 및 분석
2022. 12. 12. 21:39
엔지니어링/기타
신규 구축 프로젝트 중 erp application 서비스가 자꾸 죽는다고, .. 환경은 쿠버네티스 기반인데 OOM 떨어지게 개발해놓고 '나'한테 전화가 쏟아진다. 인프라 명목을 단정짓기위해 분석을 시작하고 팩트로 조져보자! dump 경로 및 gc로그 설정 먼저 heapdump 옵션과 gc log 설정을 하여 모니터링 하기 위해 deployment yaml 에 설정을 추가해주었다. spec: template: containers: - args: - -XX:+HeapDumpOnOutOfMemoryError - -XX:HeapDumpPath=/덤프파일경로/ - -XX:+PrintGCDetails - -verbose:gc - -Xloggc:/가비지컬렉터로그경로/gc.log:time,level,tags - -j..