25/1/24 퇴근 후 설연휴 시작!
밥먹고 씻고 신나게 게임을 키고 있는데 문자 메세지가 울리기 시작한다.
GC TIME exceeded threshold
이거는 회사 모니터링 시스템에서 보내주는 문자 메세지인데
대충 가비지 콜렉터가 과로중이라서 cpu를 다잡아먹고 서비스가 느려지기 시작했다는 의미이다.
이 문자가 오고 조금 지나면 메신저로 느려요! 이런 연락들이 오기 시작한다.
단순히 느린 것을 넘어 타임아웃이 쌓이고 이러면서 큰 문제로 번질 여지도 있다.
그래서 이 문자 메세지가 오면 빨리 확인을 해보는 게 좋다.
게임을 끄고 시스템 모니터링 툴에 접속했다...
서버 하나가 빨갛게 차오르고 있는 것이 보인다.
이 시스템에서 GC 이벤트를 발생시키는 화면이 하나 있다.
그건 바로 대용량 데이터를 엑셀로 내려받을 수 있는 화면이다.
모니터링 시스템에서 로그를 보니 예상했던대로 엑셀다운 어쩌구가 빨간 글씨로 잔뜩 찍혀있다.
...나는 예전에 이 화면의 속도를 개선하기 위해 정말로 노력했다.
근데 방법이 없었다.
어디서 속도가 많이 걸리는지 분석했는데...SQL은 순식간이고 엑셀로 변환하는 데 시간을 다 잡아먹었다.
그리고 엑셀다운 자체는 무슨 라이브러리 갖다 쓰고 있어서 내가 뭐 손댈 수 있는 여지가 없었다.
이 화면이 느린건 코드를 잘못짜서 그런게 아니라 그냥 데이터가 매우 매우 많아서 오래 걸리는 것이다.
업무 특성상 이 화면에서 기간을 일주일 정도로만 잡고 조회해도 엄청나게 많은 데이터가 튀어나온다.
여기서 속도를 개선하겠다고 기간제한을 하루로 만들겠습니다! 이러면...
사용자들의 반발이 매우 심할 것이다.
지금 기간제한은 한 일주일인가 이주일인가 그런데 이것도 너무 짧다고 하고 있다.
암튼 이런 사유에 더불어... 이 화면은 관리자용 화면이라 사용자가 많지도 않아서 해결 못한 채로 넘어갔고 지금도 몇달에 한 번씩(주로 누군가가 몇달치 자료를 뽑기 위해 데이터를 반복 추출하고 있는 경우) GC TIME 메세지가 발생한다.
그럼 어떻게 하느냐?
나는 GC TIME 이벤이 발생하면 그냥 서버를 재기동한다...
서버가 이중화되어 있어서 서비스가 중단되거나 그럴 걱정도 없다.
암튼 이렇게 해결이 되었고,이제 다시 연휴를 즐기러 가야겠다^^
'일상 > 개발 관련 일상' 카테고리의 다른 글
DevFest 송도 2024 후기 (6) | 2024.12.21 |
---|---|
git cherry-pick 과 관련된 일상 (1) | 2024.10.16 |
Spring boot 폴더 구조. 뭘 써야 하지.. (0) | 2023.02.19 |
[vue, spring] 이미지 포함한 게시판 만들기 (0) | 2022.12.19 |
ssafy 1학기의 꽃, 관통 프로젝트 (0) | 2022.11.28 |
댓글