OpenSource Story Board 387

IBM JVM (1.5 기준)

출처 : http://wiki.ex-em.com/index.php/JVM_Options Sun Hotspot JVM이 반드시 Command Line에서 JVM Option을 지정해주어야 하는 반면, IBM JVM에서는 다음과 같은 세 가지 방법으로 Option을 지정할 수 있다. Command Line: java -Xgcpolicy:optthruput 과 같은 형태로 지정 Options File: –Xoptionsfile 옵션을 이용해서 Option을 모아둔 Text File을 지정. Optionsfile은 다음과 같은 형태이다. #My options file -X -X=\,\ -D= IBM_JAVA_OPTIONS 환경변수: IBM_JAVA_OPTIONS 환경변수에 값을 지정(예: IBM_JAVA_OPT..

Sun HotSpot JVM (1.5 기준)

출처 : http://wiki.ex-em.com/index.php/JVM_Options Standard Options Option Description -client Client HotSpot JVM을 사용한다. Client HotSpot JVM은 Desktop용 Application을 구동하는데 유리하다. 성능 최적화(Optimization) 과정을 간략화함으로써 Application의 시작 시간을 최소화한다. -server Server HotSpot JVM을 사용한다. Server HotSpot JVM은 Server용 Application을 구동하는데 유리하다. 성능 최적화(Optimization)에 필요한 모든 과정을 최대한으로 수행한다. Application의 시작 시간은 느리지만, 일정 시간이 ..

JVM Standard vs. Non-Standard Option

Standard Option은 JVM 표준이다. 즉 Sun HotSpot JVM, IBM JVM, BEA JRockit JVM, HP HotSpot JVM 등 모든 JVM이 동일한 Option을 제공한다. 반면 Non-Standard Option은 JVM의 표준이 아니다. 따라서 JVM의 버전과 OS 종류에 따라 존재여부가 결정된다. 언제든지 추가되거나 없어지기도 한다. 이런 면에서 Non-Standard Option들은 골칫거리처럼 여겨질 수 있다. 하지만, 다음과 같은 측면에서 반드시 필요한 존재이기도 하다. JVM 구동에 필요한 설정값(Configuration Value)를 지정할 수 있다. 성능 개선에 필요한 Parameter 값을 지정할 수 있다. Bug나 오동작에 의한 Workaround로 활..

WebLogic JEUS 간 Global Transaction

1 Transaction 1.1 JEUS Interposed Transaction Manager 기능 WebLogic Transaction Manager에 JEUS Transaction Manager를 XAResource 로 등록하여, WebLogic에서 JEUS의 Transaction Manager를 XAResource로 사용할 수 있는 기능이 추가 되었다. 이렇게 Transaction Manager를 XAResource로 사용할 수 있도록 한 것을 Interposed Transaction Manager라고 한다. 사용 방법은 다음과 같다. WebLogic의 Transaction 관련해서 import 받는 WebLogic 클래스는 다음과 같다. ... import WebLogic.transaction...

Thread dump(Javacore) 분석 – waiting for IO response

Thread 상황 중 많이 볼 수 있는 패턴은 각각의 Thread들이 IO Response를 기다리는데 IO 작업에서 response가 느리게 와서 시스템 처리 속도가 느려지는 경우입니다. [그림 1].Thread들이 IO Wait를 할 때 시간에 따른 Thread dump 상황 [그림 2]. Thread가 DB Query Wait에 걸려있는 stack 그림1 상황은 DB에 Query를 보내고 response를 Thread들이 기다리고 있는 상황입니다. AP에서 JDBC를 통해서 Query를 보냈는데, Response가 오지 않으면 계속 기다리게 있게 되고 다른 Thread가 같은 DB로 보냈는데, Response가 오지 않고, 이런 것들이 중복돼서 결국은 사용할 수 있는 Thread가 없게 되서 새로운..

Thread dump(Javacore) 분석 – Dead Lock

Locking에 의해서 발생 할 수 있는 또 다른 문제는 dead lock 현상입니다. 두개 이상의 Thread가 서로 lock을 잡고 기다리는 “환형대기조건”이 성립되었을 때 서로 lock이 풀리지 않고 무한정 대기하는 현상을 이야기 합니다. 그림 1 을 보면 Thread1 은 methodA를 수행하고 있는데, synchronized methodB를 호출하기 전에 Thread2가 methodB가 끝나기를 기다리고 있습니다. 마찬가지로 Thread2는 Thread3가 수행하고 있는 methodC가 끝나기를 기다라고 있고, methodC 에서는 Thread1에서 수행하고 있는 methodA 가 끝나기를 기다리고 있습니다. 즉 각각의 메소드들이 서로 끝나기를 기다리고 있는 “환형 대기조건”이기 때문에 이 a..

Thread dump(Javacore) 분석 – lock connection

알다시피 Java 는 Multi Threading을 지원합니다. 이 경우 공유 영역을 보호하기 위해서 Synchronized method를 이용하는데, 우리가 흔히들 말하는 Locking이 이것입니다. 예를 들어 Thread1이 Synchronized된 Method A의 Lock을 잡고 있는 경우, 다른 쓰레드 들은 그 Method를 수행하기 위해서, 앞에서 Lock을 잡은 쓰레드가 그 Lock을 반환하기를 기다려야 한다. [그림1]. Thread간 lock을 기다리는 형태 만약에 이 Thread 1의 MethodA의 수행시간이 아주 길다면 Thread 2,3,4는 마냥 이 수행을 아주 오랜 시간 기다려야 하고, 다음 2번이 Lock을 잡는다고 해도 3,4번 Thread들은 1번과 2번 쓰레드가 끝난 시..

Thread dump(Javacore) 분석

이 Thread dump를 어떻게 분석을 하고, System의 Bottle neck을 찾아내는데 이용할지를 설명 하겠습니다.. System이 Hangup이나 slowdown에 걸렸을 때, 먼저 Thread dump를 추출해야 합니다. 이때 한 개가 아니라 3~5초 간격으로 5개 정도의 dump를 추출해야 합니다.. 추출한 여러 개의 dump를 연결하면 각 Thread가 시간 별로 어떻게 변하고 있는 지를 판별할 수 있습니다. 먼저 각각의 Thread 덤프를 비교해서 보면, 각각의 Thread는 적어도 1~2개의 덤프 내에서 연속된 모습을 보여서는 안 되는 것이 정상입니다. 일반적으로Application은 내부적으로 매우 고속으로 처리되기 때문에, 하나의 Method에 1초 이상 머물러 있는다는 것은 거의..

Thread dump(Javacore)가 무엇인가요?

본 문서를 위해서 우선 용어부터 정의를 하도록 하겠습니다. Hang up Server Instance는 실행되고 있으나, 아무런 응답이 없는 상황(멈춤 상태) Slowdown Server Instance의 response time이 아주 급격히 떨어지는 상태(느려짐) 통산 WAS 는 Client로부터 request를 받아서 그 request의 내용을 분석하게 됩니다. JMS인지, HTTP, RMI request인지를 분석 한 후 그 내용을 큐에 저장하게 됩니다. 큐에 저장된 내용은 WAS 에서 request를 처리 할 수 있는 Working Thread들이 있을 때 각각의 Thread들이 Queue에서 Request를 하나씩 꺼내서 그 기능을 수행하게 됩니다. 여기서 우리가 주의 깊게 봐야 하는 것은 T..

Web System 튜닝을 위한 TCP 파라미터설명

TCP/IP Kernel Parameter 일반적으로 최초설치(Install)된 운영체제(Operating System)는 범용의 목적하에 Kernel Parameter 설정이 이루어지게 됩니다.. 따라서 Web Service만을 위한Kernel Parameter값은 반드시 최적화 시켜야 합니다. 특히 웹서버의 성능에 영향을 많이 주는 TCP/IP parameter setting은 20~30% 정도의 성능 향상을 가져 올 수 있을 정도로 중요합니다. 본 FAQ 문서에서는 웹서버의 형태로 운용되는 유닉스 서버의 TCP/IP 일반과 Tuning에 관한 내용을 기술합니다. TCP connection initiation background TCP는 reliable connection oriented protoc..