본문 바로가기
📔개발자 일기 | | TIL

[20220421] 개발자 일기

by 캔 2022. 4. 21.

그동안 서버를 자주 다운시켰던 주범일 가능성이 높은 원인을 찾았다. 예약 목록을 엑셀 파일로 다운로드할 수 있는 버튼이 있는데 이 버튼을 눌렀을 때 테이블에 있는 모든 로우들을 가져오게 된다. 이 과정에서 검색된 로우들을 자바의 리스트 객체에 넣어야 하는데 자료가 거의 3만 개 가까이 되니 버튼을 눌렀다간 바로 OutOfMemory 예외가 발생할 수밖에 없다. 제대로 이런 엑셀 export 기능을 만들려면 XSSFWorkbook 라이브러리를 사용해서 구현해야 한다고 한다. 그리고 말한 것처럼 한꺼번에 가져오는 것이 아니라 자바 메모리 생각하면서 나눠서 처리해야 안전하다. 그런 방법이 아니라 그냥 데이터를 한꺼번에 리스트 객체에 넣는 것은 서비스 운영 초기에 데이터가 별로 없는 경우에는 문제가 되지 않을 수 있는데 지금처럼 시간이 지나 데이터가 많이 쌓인 경우라면 문제가 생길 수밖에 없다. 최초 개발 시에 잘 만들어야 되는데 그러질 못하니 오류를 잡아야만 하는 사람만 고생한다. 😥 그래도 가능성이 있는 오류를 찾아서 다행이라고 생각은 한다. 근데 아직도 "GC overhead limit exceed"와 connection 끊어지는 오류는 해결하지 못했다. 전자는 일단 객실 조회 쿼리 자체가 엄청 비효율적으로, 문제가 많게 설계되어 있기 때문으로 보이고, 후자는 아직 원인을 찾지 못하고 있다.

'📔개발자 일기 | | TIL' 카테고리의 다른 글

[20220425] TIL  (0) 2022.04.25
[20220422] 개발자 일기  (0) 2022.04.22
[20220420] 개발자 일기 & TIL  (0) 2022.04.20
[20220419] 개발자 일기 & TIL  (0) 2022.04.19
[20220418] 개발자 일기 & TIL  (0) 2022.04.18