본문 바로가기

Java/자바 성능 개선

(17)
19. GC 튜닝을 항상 할 필요는 없다. 💡 본 게시글은 이상민 저자의 '자바 성능 튜닝 이야기' 교재를 공부하고, 이에 대해 정리한 내용입니다. 들어가며 자바의 GC 튜닝은 반드시 필요한 상황에서만 진행하는 것이 바람직합니다. 그렇다고 WAS를 실행할 때 아무런 옵션 없이 실행해도 되는 것은 아닙니다. 기본적인 메모리 크기를 지정하는 등의 설정은 필요합니다. 그러나 사용량이 많지 않은 시스템에서는 이 정도의 설정으로 충분하며, 추가적인 튜닝은 굳이 필요하지 않을 수 있습니다. 1) GC 튜닝을 꼭 해야 할까? 결론부터 말하자면, Java 기반의 모든 서비스에서 GC 튜닝을 해야 하는 것은 아닙니다. 다만, 아래와 같은 설정들이 기본적으로 이루어져 있어야 합니다: 메모리 크기를 -Xms 옵션과 -Xmx 옵션으로 지정하였다. -server 옵션이..
18. GC가 어떻게 수행되는지 확인하기 💡 본 게시글은 이상민 저자의 '자바 성능 튜닝 이야기' 교재를 공부하고, 이에 대해 정리한 내용입니다. 들어가며 GC의 수행 과정을 분석하려면, 관련 도구를 사용해야 합니다. 여러가지 방법이 있지만, 'jstat'이라는 명령어를 사용하여 실시간으로 확인하거나 'verbosegc' 옵션을 사용하여 로그를 생성할 수 있습니다. 'verbosegc' 옵션을 사용하려면, 이를 자바 실행 옵션에 추가한 후, JVM을 재시작해야 합니다. 1) jps를 이용한 자바 인스턴스 확인 'jps'는 현재 시스템에서 실행 중인 JVM의 목록을 보여주는 도구입니다. 이는 JDK의 bin 디렉터리에 위치해 있습니다. 'jps'의 사용법은 매우 간단하며, 커맨드 프롬프트나 유닉스의 터미널에서 다음과 같은 옵션으로 실행하면 됩니다..
17. 도대체 GC는 언제 발생할까? 💡 본 게시글은 이상민 저자의 '자바 성능 튜닝 이야기' 교재를 공부하고, 이에 대해 정리한 내용입니다. 들어가며 자바 기반 시스템을 개발하면서 가비지 컬렉션(GC)이 어떻게 동작하는지 완벽히 이해하지 못하는 개발자들이 종종 있습니다. 이것이 반드시 자바 개발에 필요한 지식은 아니지만, GC의 동작 방식을 이해하는 것은 매우 중요합니다. 왜냐하면, 풀(Full) GC가 수행되는 동안에는 해당 JVM에서는 다른 처리를 하지 않습니다. 즉, GC가 자주 발생할수록 시스템의 응답 시간에 영향을 미칩니다. 이는 유닉스, 리눅스, 윈도우 서버 등 어떤 서버에서도 마찬가지입니다. 따라서, 자바 프로그램의 성능을 고려하는 개발자라면, GC가 어떻게 동작하는지에 대한 기본적인 이해를 가지고 있어야 합니다. 이는 자신이..
16. JVM은 도대체 어떻게 구동될까? 💡 본 게시글은 이상민 저자의 '자바 성능 튜닝 이야기' 교재를 공부하고, 이에 대해 정리한 내용입니다. 들어가며 전 세계의 대부분 시스템은 지속적으로 변화하고 있습니다. 즉, 시스템을 주기적으로 수정하고 배포하는 작업을 반복하게 됩니다. 웹 기반 시스템을 배포할 때 재시작만 수행한다면, 사용자는 배포 직후에 느린 응답 시간을 경험하게 될 수 있습니다. 이로 인해 사용자는 시스템에 대한 불만이 증가하게 될 수 있습니다. 이를 방지하기 위해 '워밍업'이 필요합니다. 그렇다면 왜 워밍업이 필요한지, 그 중요성에 대해 알아보겠습니다. HotSpot VM의 구조와 워밍업 JIT 옵티마이저 JVM의 구동 절차 JVM의 종료 절차 클래스 로딩의 절차 예외 처리의 절차 이러한 과정들은 Java의 HotSpot VM에..
14. 서버는 어떻게 세팅해야 할까? 💡 본 게시글은 이상민 저자의 '자바 성능 튜닝 이야기' 교재를 공부하고, 이에 대해 정리한 내용입니다. 들어가며 제가 처음으로 개발 프로젝트를 진행하면서 처음에는 코드 작성에만 집중했습니다. 그러나, 실제 서비스를 운영하려면 프로그램이 실행되는 환경, 즉 '서버 설정'이 중요하다는 것을 깨달았습니다. 이는 프로그램의 성능에 결정적인 영향을 미치기 때문입니다. 대개 기본값으로 최대한의 성능을 낼 수 있는 것은 없습니다. 웹 기반의 시스템도 정상적으로 작동하게 하려면 세팅이 중요합니다. 실제로 프로그램에 문제는 없었지만, 서버 설정 값 하나 때문에 성능이 저하되는 경험을 했습니다. 이를 통해, 성능 저하의 원인이 서버 설정에 있다면, 그 문제는 비교적 쉽게 해결할 수 있다는 것을 알게 되었습니다. 1) 서..
12. DB를 사용하면서 발생 가능한 문제점들 💡 본 게시글은 이상민 저자의 '자바 성능 튜닝 이야기' 교재를 공부하고, 이에 대해 정리한 내용입니다. 들어가며 간단한 프로젝트를 진행하던 중 DB를 사용하게 되었습니다. 그런데 DB를 사용하면서 예상치 못한 문제점들이 발생하였습니다. 가장 눈에 띄는 문제점은 자바 기반 애플리케이션의 성능에 있었습니다. 특히, 응답 속도를 지연시키는 주요 요인은 DB 쿼리 수행 시간과 그 결과를 처리하는 데 걸리는 시간이었습니다. 해당 교재의 저자는 애플리케이션에서의 DB 접속 관련 공지가 있다고 합니다. 그에 대한 주요 내용은 다음과 같았습니다. (1) DB Connection을 할 때는 반드시 공통 유틸리티를 사용해야 한다. (2) 각 모듈별 DataSource를 사용하여 리소스 부족 현상이 발생하지 않도록 해야 ..
11. JSP와 Servlet, Spring에서 발생할 수 있는 여러 문제점들 💡 본 게시글은 이상민 저자의 '자바 성능 튜닝 이야기' 교재를 공부하고, 이에 대해 정리한 내용입니다. 들어가며 최근 개발을 공부하면서 간단한 프로젝트를 진행하던 중, 제가 만든 웹사이트가 느리게 동작하는 것을 발견했습니다. 그래서 제 웹사이트가 느리게 동작하는 원인이 무엇인지 알아보고자 했습니다. 그 과정에서 병목 현상이 발생하는 주요 부분이 UI 부분과 비즈니스 로직 부분이라는 것을 알게 되었습니다. 그리고 그 중에서도, 서버에서 화면을 만들어 주는 UI 부분에서 문제가 많이 발생한다는 것을 깨달았습니다. 이를 해결하기 위해선, 화면을 만드는 자바스크립트가 사용자의 컴퓨터에서 잘 동작하도록 만드는 것이 중요하다는 것을 알게 되었습니다. 또한, 서버에서 화면을 만들어 주는 부분은 주로 JSP나 서블릿..
09. IO에서 발생하는 병목 현상 보호되어 있는 글입니다.