INTRO
오늘은 개발을 하다가 발생한 너무나 느린 Debugger모드의 Build를 해결한 상황을 정리해 두려고 합니다.
우선 개발 환경은 아래와 같습니다.
Java : Java 8.0
IDE : IntelliJ
Build Tool : Maven
Web Application Server : Apache Tomcat
발단 / 요약
우선 사건의 발단은 너무나 급격히 저하된 제 IntelliJ의 Build 속도였습니다.
왜인지 모르겠으나,
저는 세팅 이후에도 다른 분들에 비해 IntelliJ의 디버깅 모드 build가 느려서 고민이었는데요..ㅎ
주위에 알아보거나 검색해봐도 "IntelliJ가 좀 무겁긴 하죠?" 정도의 답변만 얻을 수 있었습니다. 저도 그렇구나, 하고 넘어갔었고요..
IntelliJ이전에는 Eclipse를 쓰고 있었기에,
(Eclipse로 Build할 때도 답답해서 고민이었습니다 ㅠ)
당연히 개발 환경 개선을 위해 IntelliJ로 전환한 것이었으나, 어쩔 수 없다는 식의 답만 구한 것 같아서 많이 아쉬웠습니다.
결론적으로 처음 몇 달 간 제 IntelliJ 빌드는 10분 이상 걸렸습니다.
그러나,
최근 왜인지 모르게 점점 빌드가 느려지더니 톰캣 실행 후 어플리케이션이 뜰 때 까지 20분이 넘어갔고,
끝내 웹 어플리케이션이 뜨는 시간이 32분이 걸리는 것을 눈으로 봐버렸습니다....
결국 참을 수 없어서 이 문제부터 해결하고 넘어가자 하며 구글에 물어보고,
주위에 세팅 고수님들께도 확인도 받는 과정들,
많은 분들의 관심과 성원에 힘입어..
결국 웹 어플리케이션 뜨는 시간을 2분으로 줄였습니다..!
제 기억속에서 잊혀지기 전에 제가 어떤 과정을 통해 줄일 수 있었는지 과정을 기록해보려고 합니다.
첫 번째 조치 - Maven Clear and Rebuild
첫 번째로 수행해 본 조치는 Maven Clear and Rebuild 였습니다.
뭘 어쨌는지 Build를 수 없이 반복하다보니 Lifecycle이 문제가 발생해서 .. ?
Build를 더이상 진행할 수 없다는 에러가 발생하였습니다.
캡쳐는 못했습니다. ㅠ
열심히 찾아 본 결과 Maven lifecycle clean을 진행해야 한다고 하더군요.
Build를 하다가 미처 리로드 되지 않고 남아있던 maven library로 인해 새로 로딩되는 library들이 충돌이 날 수도 있다는 사실을 읽었습니다.
IntelliJ에 maven이 설치되어있다면 대부분 우상단에 maven 창이 접혀있으실 거라고 생각됩니다.
해당 maven 버튼을 눌러서 창을 열고,
maven > directory명 > Lifecycle > Clean : 마우스 우클릭, 'Run Maven Build' 클릭
이렇게 진행하시면 프로젝트마다 Clean하고 build하게 됩니다.
무사히 종료했다면,
저는 '혹시나' 하는 마음에 Maven자체도 Rebuild 했습니다.
그리고 발생한 Artifact 오류..
두 번째 조치 - Invalidate Chache...
두 번째 조치로는
상단 File > Invalidate Chaches > Invalidate and Restart
를 수행했는데요,
이는 프로젝트에 쌓인 캐시를 삭제하고 IDE를 재시작하는 동작입니다.
그러나 이번에는 뭔가 Bean생성 오류가 발생하였습니다..
(이때 거의 숨 참았슴다)
그래서 찾아보니 또 maven library 오류인 듯 하여 첫 번째 단계를 다시 진행하였습니다만,
추가로 Artifact 오류가 발생하여 Build Configuration을 다시 확인해줬습니다.
하지만 세팅에서는 딱히 다른 점이 발견되지 않아서 무한 1~2단계를 반복하는 지경에 이르렀습니다..
그래도 다행히, 반복 실행하던 Build에 좀 여유를 두고 1단계를 하고 2단계를 하니,
오류는 해결이 되었습니다.
이 또한 maven clean후 rebuild 시 제대로 파일이 가져와지지 않는 경우가 생겨서 발생하는 것 같더라고요..?
암튼 어찌저찌 오류는 해결하였습니다.
그래도 7분 정도는 Build후 로딩시간까지 포함해서 줄인 것 같았습니다.
세 번째 조치 - Breakpoint 모두 제거
간신히 Project Bean생성 및 Artifact 오류를 해결하였는데요,
다시 돌아와서 Build 시간을 줄이는 과제가 남았습니다.
사실 Debugging 모드 Build 시간은 구글링 하면 'Breakpoint를 제거하세요'라는 말을 바로 찾을 수 있습니다.
다만 저는 제가 찍었던 Breakpoint를 모두 지웠음에도 25분 가량의 build시간이 소요되어 위 두 가지 단계를 진행했던 거였습니다.
그런데...
혹시 몰라서 다시 열어본 Breakpoint 관리 창.
상단 Run > View Breakpoints
시스템에서 자동으로 생성된 Breakpoint라고 생각하고 그대로 두었던 3개의 Breakpoint들이 있었습니다.
(위 사진에는 해당 Breakpoint는 이미 삭제된 상태여서, 정확히 뭐였는지는 기억하지 못합니다..)
얘네들 트리를 열어서 하단의 Breakpoint를 하나씩 체크해보았습니다. 그랬더니 저 Remove 버튼이 활성화되는 경우가 있더라고요?!
혹시?! 하는 마음에 그대로 똑같이
1. 해당 Breakpoint 삭제
2. Maven Lifecycle Clean & Maven build
3. Invalidate Cache
4. IDE 재시작
이 과정을 지났더니 정말로 Build 시간이 급격하게 줄어서 무려 2분만에 Build 및 Application 실행까지 완료되었습니다.
결론
결국 모든 과정을 거쳐왔기에 해결이 된 게 아닌지,
그게 아니면 단순히 Breakpoint의 문제였을지는 확실히 알아내지 못했습니다.
(굳이 Breakpoint를 다시 추가하고, 다시 클리어해보고.. 의 과정을 다시 해보기엔 너무 너덜너덜해 진 상태였습니다..)
다만 저와 같이 원인을 명확히 알지 못하지만 Build 및 실행 시간이 지나치게 느린 분들께 참고가 되는 것,
그리고 미래의 제가 또 이러한 문제를 맞닥뜨렸을 때 무사히 참고하여 해결할 수 있기를 바라면서 작성해보았습니다.
결국 다음에 또 빌드가 너무 느려지게 되면 저는 이와 같은 방법으로 찾아가며 해결하겠지요,,
그 땐 역순으로 해보고 뭐가 진짜 문제였을지 공부해보는 것도 좋을 것 같네요..ㅎ
그럼 도움이 되었기를 바라면서,
즐거운 개발 생활 되세요!!
'공부 Log' 카테고리의 다른 글
[MySQL] Windows 환경 MySQL 업데이트하기 (2) | 2024.06.09 |
---|---|
[시험정보] 2024 스페인어 능력시험 DELE 일정, 시험 정보 (2) | 2024.04.01 |
[정보조사] 청년주택드림청약통장 가입 조건 및 대상, 혜택 정리 (0) | 2024.03.04 |
[Git/Github] Github Repository와 Local Repository 연동하기, SourceTree Git Clone (4) | 2024.02.28 |
[정보조사] 청년도약계좌 조건, 혜택, 가입 절차, 청년희망적금연계 알아보기 (2) | 2024.02.26 |