JVM 11

VisualVM을 이용한 JVM 모니터링

JVM Monitoring조대협 JVM 1.4 버전대에만 해도 GUI 기반으로 JVM을 모니터링 하는 도구는 거의 없었다. 콘솔로 접속해서 Thread dump나 GC 로그등을 분석하거나 필요할 경우 JMX 기반의 모니터링 명령어등을 만들어야 했는데, 근래에는 좋은 모니터링 도구들이 많이 나와서, 쉽게 JVM의 상태를 모니터링 할 수 있고, 메모리,CPU 사용률, Thread 현황들을 매우 쉽게 분석할 수 있다.여기에, 여러개의 VM을 동시에 중앙에서 매우 세세하게 모니터링이 가능하게 되었다.여기서는 몇가지 자주 사용되는 JVM 모니터링 툴을 소개하고자 한다. VisualVM대표적인 도구로는 오픈소스 기반의 Visual VM이라는 도구가 있다. http://visualvm.java.net/에서 다운로드 ..

Apache Tomcat Tuning (아파치 톰캣 튜닝 가이드)

톰캣 튜닝조대협 이번에는 톰캣 서버에 대한 튜닝 옵션에 대해서 한번 알아보자.애플리케이션 관점에서의 튜닝도 중요하지만, 각 솔루션에 대한 특성을 업무 시나리오에 맞춰서 튜닝하는 것도 못지 않게 중요하다. 여기서 톰캣 튜닝을 설명하는 것은 톰캣 자체에 대한 튜닝 옵션을 소개하는 것도 목적이 있지만, 그보다 업무형태에 따라서 어떠한 접근을 해서 톰캣을 튜닝하는지를 소개하기 위함이다. 가정여기서 튜닝 하는 톰캣은 HTTP/JSON형태의 REST 형태로 서비스를 제공하는 API 서버의 형태이다. 여러대의 톰캣을 이용하여 REST 서비스를 제공하며, 앞단에는 L4 스위치를 둬서 부하를 분산하며, 서비스는 stateless 서비스로 공유되는 상태 정보가 없다. server.xml 튜닝톰캣의 대부분 튜닝 패러미터는 ..

G1GC Collector

Garbage First Collector 이하 G1 Collector는 예전에 잠깐 소개한적이 있는데, 오늘 지금 하는 프로젝트에서 메모리 관련 이슈가 있어서 잠깐 살펴보았는데, 대략 적인 원리는 다음과 같다. CMS (Concurrent Mark & Sweep)의 원리는 기존에, New 영역을 Old영역으로 보낸후에, Old 영역의 Object Tree를 Search해서 Dead Object를 Mark하고, Mark 된 Object들을 deallocate하는 방식이었다. 이 작업을 Concurrent Thread가 연속적으로 한다는 것인데, (Full GC 시간에 몰아서 하는 것이 아니라. ) G1 Collector는 메모리 구조 부터가 틀리다. New/Old 영역을 Physical하게 따로 나누지 ..

새로운 GC Collector G1.

재미있는 소식이 있어서 포스팅합니다. JDK 1.6 update 14에 G1이라는 형식의 Garbage collector가 추가됩니다. 기존에 CMS (Concurrent mark and sweep)과 는 다르게, Compaction을 사용하며, 특히 주목할만한 것은 Large Memory에서 latency time을 극소화 했다는 것입니다. 쉽게 풀어서 설명하자면, 이제 GC 시간 때문에 대용량 Heap을 사용하지 못하는 일이 없어진다는 것입니다. 애플리케이션이 메모리에서 많이 자유로워 지는 것이지요... 물론 뚜껑을 열어봐야 알겠지만, CMS옵션도 1.4에 release되어 1.5에는 꽤나 쓸만한 모습을 갖춘만큼. G1 Collector도 앞으로 많은 기대가 됩니다. 참고 http://www.info..

JVM 튜닝

진짜 오래전 문서인데.. JVM 튜닝 문서 링크 == JVM GC와 메모리 튜닝 자바스터디 네트워크 [www.javastudy.co.kr] 조대협 [bcho_N_O_SPAM@j2eestudy.co.kr] 모든 Java Application은 JVM(Java Virtual Machine)위에서 동작한다. 이 JVM이 동작하는데 있어서, 메모리의 구조와 특히 GC는 Application의 응답시간과 성능에 밀접한 관계를 미친다. 이번 강좌에서는 JVM 의 메모리 구조와 GC 알고리즘 (JDK 1.4.X에 포함된 새로운 알고리즘 포함) 그리고, JVM의 메모리 튜닝을 통한 Application의 성능향상방법에 대해서 알아보도록 하자. 1.GC란 무엇인가? GC는 Garbage Collection의 약자로 Ja..

2007 BEA Dev days 강의 자료

안녕하세요? 어제 DevDays에 참가하셨던 분들 중에서 강의자료가 필요하신분들을 위해서 내용을 첨부합니다. 원래 이 강의 내용들은 JCO 주최 Java Conference에서 2회에 걸쳐서 강의되었고 이미 여러 문서들이 인터넷을 통해서 배포 되어있었기 때문에 내용이 익숙하신 분들이 많을것 같습니다. 얼마전에 다시 BEA로 돌아오느냐고 신선한 주제를 마련하지 못했네요.. 다음 컨퍼런스에서는 좀더 신선한 주제로 찾아뵙도록 하겠습니다. 감사합니다.

성능과 튜닝 2007.10.26

Out Of Memory에 대한 대처 방안

OOM은 Java AP의 아주 골치 아픈 오류이기도 하면서 가장 추적하기 어려운 문제이기도 하다. 1. 추적에 대한 가장 전통적인 방법은 IBM AIX JVM의 Heap Dump를 사용하는 방식이었다. 2. 현재는 HP JVM에서 Heap Dump를 generate해주고, 이를 AMI2나, JMeter를 사용해서 분석이 가능하며 3. JVM 1.5,1.6서는 Sun에서도 Heap Dump 추출이 가능하고 jhat이라는 유틸리티로 분석이 가능하다. 또는 jmap이라는 (pmap)과 같은 유틸리티를 사용해서 heap dump를 추출할 수 도 있다. * 1.6에 포함된 JHat http://java.sun.com/javase/6/docs/technotes/tools/share/jhat.html * JHat 프..

JVM 튜닝 옵션 정리

JVM 튜닝 옵션 총정리 == http://blogs.sun.com/watt/resource/jvm-options-list.html == 정말 많다... GC튜닝은 좀더 자동화되고 세세화된 튜닝이 가능한것 같고, 눈에 띄는것은 컴파일에 대한 튜닝이 좀 더 추가되었고, 모니터링 기능이 정말 강화되었다. jconsole은 실시간으로 메모리 상태 뿐만 아니라, Thread 상태 까지 모니터링 할 수 있고 pmap과 비슷하게, 메모리 맵을 볼 수 있는 유틸리티도 있어서 Out Of Memory 상황을 분석하는데 많은 도움이 될것 같다.