달력

112018  이전 다음

  •  
  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  •  

요즘 성능얘기 많이 쓰게 되네요. ^^

오늘 너무 꿀꿀한 기분에 그냥 정신없이 할일을 찾다보니 어느새 또 번역질을 하고 있더군요.

양이 많지 않구요. 

VisualVM홈페이지에 있는 소개하기와 시작하기 문서입니다. 


2월 25일

Posted by 이동국

댓글을 달아 주세요

1) 아파치 서버 설정

<IfModule mod_deflate.c>

AddOutputFilterByType DEFLATE application/json application/javascript

</IfModule>


2) 성능결과


TPS기준으로 하면 2~3개 정도 gzip적용한게 좋다. 

대신 gzip을 해서 컨텐츠를 압축하는 만큼 CPU사용량은 월등이 gzip적용한게 높다. 

대신 네트워크 사용량은 또 그만큼 gzip적용한게 적게 사용한다. 

서버를 최대한 활용하기 위해서는 gzip을 최대한 활용하는게 좋다. 


Posted by 이동국

댓글을 달아 주세요


개인적으로 50만원이라는 거금을 들여서 꽤 오래전부터 JProfiler라는 상용 자바 프로파일러 제품을 사용하고 있습니다. 그동안 사용하면서 사용법은 이미 머리속에 있으나 간단히 정리를 해야 할거 같아 위키에 정리했습니다. 대부분 스크린샷만 둔거라 기존에 사용해보지 않으신 분은 알아보기 힘드시겠네요. T.T


◆ 기본기능 사용법


◆ JProfiler 6에서 부턴가 추가된 Probe 기능 살펴보기

Posted by 이동국

댓글을 달아 주세요


VisualVM 자체도 많은 기능을 제공하지만 몇가지 플러그인을 제공합니다.
어찌보면 VisualVM 자체보다도 이 플러그인 들의 기능이 더 강력합니다.

공식적으로 배포하는 플러그인은 아래에서 볼수 있듯이 10개입니다.


1. VisualGC


힙 메모리 정보를 보여주거나 GC작업에 대한 상황을 화면처럼 보여줍니다. VisualVM 의 모니터링 기능에 더해 사용하시면 모니터링에 적절하리라 생각됩니다.

2. VisualVM-MBeans


어찌보면 이미 다른 툴에서도 많이 제공하는 기능이 되어 버린 MBean관련 기능입니다.
그래도 플러그인 형태로 제공하다 보니.. 유용한 기능에는 의심의 여지가 없죠.

3. VisualVM-TDA


TDA는 https://tda.dev.java.net/ 에서 만들고 있는 쓰레드 덤프 분석기(Thread Dump Analyzer)입니다. GUI형태로 덤프를 분석해 줄뿐 아니라 현재 상태에 대해 간단히 정리해서 보여주기 때문에 덤프 데이터를 분석할때 보조적으로 사용하면 굉장히 유용한 툴입니다.
덤프 사이의 차이점도 비교해주는 기능을 제공합니다.
Posted by 이동국

댓글을 달아 주세요

[성능] VisualVM

성능 2009.01.18 21:29

VisualVM 이라는 성능체크 또는 모니터링 툴이 있습니다.
라이센스는 GPLv2 + CE입니다.
홈페이지인 https://visualvm.dev.java.net/ 에서는 All-in-One Java Troubleshooting Tool 이라고 소개하고 있습니다.
제공하고 있는 기능 자체만 보면 All-in-One 이라고 볼수 있겠지만 실제 기능 각각을 사용하다보면 아쉬운 점은 있습니다.

리뷰라기 하기엔 다소 빈약한 글입니다만.. 살펴봤습니다.
화면 스샷과 간단한 설명은 다음 링크들에서 볼 수 있습니다.
사실 설명보다는 스샷이 대부분입니다. ^^

VisualVM 기본 : http://openframework.or.kr/Wiki.jsp?page=Using_visualvm
VisualVM의 모니터링 기능 활용하기 : http://openframework.or.kr/Wiki.jsp?page=Using_visualvm_monitor
VisualVM의 쓰레드 모니터링 기능 활용하기 : http://openframework.or.kr/Wiki.jsp?page=Using_visualvm_thread
VisualVM의 프로파일러 기능 활용하기 : http://openframework.or.kr/Wiki.jsp?page=Using_visualvm_profiler

1. VisualVM 의 기본화면


2. 모니터링 기본 화면


3. 힙 덤프


4. 쓰레드 덤프


5. 프로파일러


제품을 사용해보니 간간히 눈에 띄는 버그가 있습니다.
1. 톰캣 비정상 종료
이를테면 eclipse에서 tomcat를 시작할 경우 VisualVM으로 프로파일링을 하면 tomcat을 강제로 죽이는 문제가 있습니다. 이 경우 VisualVM을 먼저 실행하고 eclipse를 실행해서 사용하면 tomcat이 죽는 경우가 별로 없습니다. 사실 이것도 PC마다 다를수 있겠습니다.
2. CPU프로파일링 기준 모호
그외 프로파일러 기능에서 CPU프로파일링시 호출되는 메서드 별로 데이터를 보여주는 것이 아니라 클래스 별로 보여준다고 할까요..?? 프로파일링 데이터의 기준이 다소 모호한 면이 있습니다. 그게 아니라면 설정이 다른데 숨어있다고 밖에 볼수 없겠습니다.

아직 버전이 1.1이기 때문에 개선의 여지가 많습니다. 저는 개인적으로 JProfiler 정식 사용자라 제품간에 비교가 되기는 하지만 상용제품과 비교하는 건 말이 안되는 것이죠.
하지만 힙덤프, 쓰레드덤프, 메모리덤프 등.. 좋은 기능을 많이 제공하고 있습니다.
Posted by 이동국

댓글을 달아 주세요

  1. 서영아빠  댓글주소 수정/삭제 댓글쓰기 2009.01.23 18:52 신고

    좋은 정보 감사합니다. ^^

  2. 박진형  댓글주소 수정/삭제 댓글쓰기 2010.03.15 13:15 신고

    유용한 정보 감사합니다. 담아갑니다.

최근 서버 호스팅을  옮기고 이런 저런 셋팅을 변경하면서 과거 웹호스팅시 서버가 자주 죽던 현상이 도대체 왜 발생한 것인지가 궁금해서 Jennifer를 설치해봤습니다.
제가 가기고 있는 JProfiler 를 돌려도 되지만 아무래도 오랜시간을 모니터링을 해야 하는 터라 프로파일러는 적합하지 않다고 생각을 했습니다.

설치하기

설치는 비교적 간단했습니다.
제가 운영하는 서버가 JDK 1.6, tomcat 6.0을 사용하고 32bit 라는 것만 알고 있다면 설정상에서 어려움은 없었습니다. 단 -64d 옵션이 처음에 뭔가 하다가 64bit를 나타낸다는 것을 알았는데 처음 사용자의 경우 그 부분에 대한 배려가 별로 없었던게 아닌가 하는 생각이 아주 잠깐(?) 들었습니다.


지원하는 was종류입니다. 국내제품이라서 그런지 외사 제품이 지원하지 않는 JEUS가 있습니다.
jprofiler를 만들어내는 ej-technologies사에 JEUS지원해달라고 요청한 뒤 아무런 답변이 없는 것에 비하면 국내에서는 이것만 해도 굉장히 큰 장점이 되리라 생각됩니다.


64비트에 해당되는 -d64 옵션을 사용할 것인지에 대한 부분입니다. 처음 설치시 "y" 로 선택해서 했는데 잘 통과되더니 실제 사용시 맞지 않다는 오류가 함께 에러가 발생했습니다. 개인적으로 보완이 필요하지 않나 생각됩니다.
추후 다시 설정해서 32비트로 사용하기 위해 "n" 를 선택하니 별다른 문제가 없습니다.


사용할 에이전트 이름을 물어봅니다. 그냥 w11이라고 사용했습니다.


설정된 환경값입니다. 확인차 보여주는 거라.. ^^

어드민 화면

# 로그인 화면

기본 계정이 admin/admin 이기 때문에 로그인만 하면 됩니다.

# 대시보드

제니퍼에 접속시 가장 처음 보게 되는 대시보드입니다.
제니퍼가 제공하는 모니터링 기능의 대부분을 한 화면에서 제공하는데 아무래도 제가 업무용으로 사용하는 24인치 와이드 모니터 정도는 되어야 전체를 한번에 볼수 있습니다. 그냥 이 화면만 봐도 서버 상태를 파악할 수 있습니다.

# 메뉴정보

메뉴별로 다시 하위메뉴로 다시 분류되는 부분도 있습니다. 메뉴나 화면들이 무엇을 나타내는지는 쉽게 파악이 되지만 정식으로 라이센스를 구매한 사용자라면 간단한 교육을 받아주는게 좋을듯 합니다.

# 서비스 처리 정보

제가 운영하는 위키가 레퍼런스와 같은 정적 컨텐츠는 tomcat을 거치지 않기 때문에 잡히지 않기도 하고 사용자가 적은 시간대를 선택해서 인지 거의 변화가 없습니다.

# 자바 힙 정보

제가 이번에 제니퍼를 적용해서 모니터링 하고자 하는 실제 값입니다. 자바 힙의 사용정보..단순 이미지가 보여드릴수 없지만 계속 늘쑥날쑥 합니다.

# X-View


제니터의 가장 중요한 기능중 하나인 X-View로 알고 있습니다. 음 역시 접속자가 많은 서비스도 시간대도 아니다 보니.. 한적합니다.

# 실시간 업무처리량

실시간을 모니터링하는 항목에서 업무처리량에 관련된 값들입니다. 요청율, 응답시간, 호출횟수, 방문자 수등을 제공합니다.

# 실시간 사용자

실시간 사용자 정보입니다. 서비스 개수, 호출횟수, 방문자 수 등 앞서 본 실시간 업무처리량에서 본 데이터와 일부 중복되는 데이터도 있습니다.

# 실시간 메모리

제가 가장 중요하게 보고 있는 실시간 메모리 정보입니다. 그래프가 그다지 맘에 들지 않는데요. ^^

# 설정창


화면 우측 상단의 메모리 정보 같은 부분을 클릭하면 설정메뉴가 뜹니다. 설정이 가능한 부분은 언어설정과 스타일(white, black) 그외 보이는 정도입니다.

에러

# AWT의 NullPointerException


저의 경우 간혹 발생하고 있습니다. 로그인을 정상적으로 해도 발생하고 빈번하지는 않습니다만 간혹 발생하는게 사실입니다. 위는 에러창인데 실제 화면에서는 "오류" 라고 표기되면서 화면이 뜨지 않습니다.
사용하는 JDK가 1.6.0_10 입니다.

# 웹브라우저가 죽는 현상
이 에러도 간혹 발생하는데 웹브라우저가 간혹 죽습니다. 처음에는 다른게 원인이라고 생각했으나 웹브라우저를 띄우고 제니퍼 어드민에 접속한 후 그대로 놔두면 죽어 있습니다. 초기 접속시 메모리 어쩌고 했던 알림창이 기억나는데 그거 때문인가 하는 생각을 하고 있습니다.


내용은 살펴보면서 더 추가될 껍니다. ^^



Posted by 이동국

댓글을 달아 주세요

JDK 1.5 이후 java.lang.management아래에는 관리 인터페이스로 많은 MXBean을 제공합니다.
제가 알고 있는 오픈소스 모니터링및 관리툴인 Lambda Probe 에 비하면 많은 부분 작업을 더해야 겠지만 기본적인 기능만으로도 간단한 모니터링이 가능합니다.

JMX나 다른 기타 기능을 통해 통합 모니터링 시스템을 만들수 있으리라는 짐작을 하게 합니다.
시간을 내어 간단히 인터페이스 기능만을 사용해 웹 페이지를 꾸며봤습니다.
http://monitor.openframework.or.kr/index.jsp

좀 지속적으로 해보고자 구글에는 프로젝트로 등록했구요. ^^
http://code.google.com/p/monitoring-application/

아직 구문번역은 대충 해놓은 상태입니다. 오역이나 의견이 있으시면 바로 알려주셔도 됩니다.. 그럼 감사하죠..^^


# GC정보보기


# 메모리 정보보기


# 런타임 정보보기


# 쓰레드 정보보기


메모리 사용에 대해 어떤 경계점을 지날 경우 자동알림도 가능하겠네요. 물론 코딩이 좀 들어가야 겠지만
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/management/MemoryNotificationInfo.html

아무튼 이미 이런 기능이 JDK 1.5에도 많이 추가되어 있는데 사용하는 건 극히 일부라는걸 항상 느끼게 됩니다.


Posted by 이동국

댓글을 달아 주세요

  1. 하얀말  댓글주소 수정/삭제 댓글쓰기 2009.01.06 14:42 신고

    오올~ 잼난 일을 하시는군요!!!!???

  2. 박진형  댓글주소 수정/삭제 댓글쓰기 2010.03.15 13:24 신고

    유용한정보 감사합니다. 담아갑니다.


최근에 관심을 가지는 분야는 개발에 관련된 측정방법입니다.
측정이라고 하면 다양하게 있죠.. 이를테면 성능을 측정한다거나 소스코드 품질을 측정한다거나 다양한 측정요소가 있고 측정방법이 있습니다. 그만큼 측정을 도와주는 다양한 제품또한 나와 있습니다.
그런 맥락에서 작년에 구입했던 제품이 JProfiler 이죠..

최근 회사에서 담당한 것 중에 하나가 현재 출시되어 있는 프로파일러의 비교였습니다.
회사의 정책에 반하지 않는 범위내에서 리뷰 자료를 첨부합니다.

기본적으로 비교한 제품은 다음과 같습니다.
1. JProfiler 5.x
2. Yourkit Profiler 7.0
3. JProbe(<- 리뷰 자료는 없습니다. )
4. eclipse TPTP
5. netbeans profiler

개인적인 생각으로 제품의 순위는 상용제품의 경우 JProfiler -> Yourkit Profiler -> JProbe 순으로 JProfiler 의 기능이 만족스럽구요. 오픈소스인 TPTP와 netbeans profiler의 경우에는 장단점이 다르고 해당 IDE에 특화된 점 때문에 어느제품이 좋다고 논하기 힘들꺼 같습니다.

간단한 리뷰 자료라 생각보다 내용이 빈약할수 있고 개인적인 사견이 많이 들어 있습니다.
상세한 내용에 대해서는 다른 방식(메신져나 이메일..)을 통해 문의하시면 답변드릴수 있으리라 생각됩니다.
Posted by 이동국

댓글을 달아 주세요