38
2011. 9. IBM SoftwareGroup WebSphere CTP 이정운 과장 (JungWoon Lee, [email protected]) © Copyright IBM Corporation 2011 SoftwareGroup, IBM Korea IBM WAS Tuning 방법 소개 Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

IBM WAS enablement about tuning for BPs

Embed Size (px)

DESCRIPTION

IBM WAS enablement about tuning for BPs

Citation preview

Page 1: IBM WAS enablement about tuning for BPs

1SoftwareGroup WebSphereConfidential - Do Not Distribute

2011. 9.

IBM SoftwareGroup WebSphere CTP 이정운 과장 (JungWoon Lee, [email protected])

© Copyright IBM Corporation 2011

SoftwareGroup, IBM Korea

IBM WAS Tuning 방법 소개

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 2: IBM WAS enablement about tuning for BPs

2SoftwareGroup WebSphereConfidential - Do Not Distribute

0. 주요 성능 튜닝 작업 절차 요약

1. 하드웨어 및 소프트웨어 요구사항 검토

2. 최신 갱신팩, 픽스팩 및 권장되는 임시 픽스 설치

3. 하드웨어 구성 및 설정 확인때때로 일시적인 오류로 인해 이더넷 어댑터 속도가 느려질 수 있습니다. 시스템 메모리가 적정하고 메모리 DIMM(Dual Inline Memory Module)의 수및 해당 위치가 최적값인지 확인. 일부 시스템에서는 다른 DIMM 구성보다 우수한 성능을 허용하는 메모리 DIMM 구성이 있습니다. 사용되는하드웨어가 사용할 수 있는 하드웨어인지 여부를 확인.

4. 응용프로그램 설계 검토응용프로그램 설계로 인한 많은 성능 문제점을 추적할 수 있습니다. 설계를 검토하여 이로 인해 성능 문제점이 발생하는지 여부를 판별.

5. 운영 체제 조정운영 체제 구성은 성능에 있어 중요한 역할을 합니다. 많은 경우, 일부 TCP/IP 매개변수를 사용자 응용프로그램에 맞게 조정해야 합니다.

6. 최소 및 최대 JVM(Java Virtual Machine) 힙 크기 설정많은 응용프로그램의 경우 힙 크기를 늘려야 최적의 성능을 나타낼 수 있습니다.

7. 유형 4(또는 순수 Java) JDBC 드라이버 사용유형 4 JDBC 드라이버는 다중 행 Fetch 영역에서 빠르게 수행합니다.

8. WebSphere Application Server JDBC 데이터 소스 및 연관 연결 풀 조정JDBC 데이터 소스 구성은 성능에 중대한 영향을 줍니다. 예를 들어, 연결 풀 크기 및 준비된 명령문 캐시 크기는 처리되는 동시 요청 수와응용프로그램 설계에 따라 조정되어야 합니다.

9. 참조에 의한 전달 옵션 사용 가능매개변수를 스택에 복사하지 않으려면 참조에 의한 전달 옵션을 이용할 수 있는 응용프로그램을 사용.

10. 트랜잭션 로그가 고속 디스크에 지정되어 있는지 확인일부 응용프로그램은 WebSphere Application Server 트랜잭션 로그에 대한 고속 쓰기를 생성합니다. 고속 디스크 또는 디스크 배열에서 트랜잭션로그를 찾으면 응답 시간을 줄일 수 있습니다.

11. 조정 관련 컴포넌트많은 경우에 있어 일부 다른 컴포넌트(예제: 데이터베이스)를 조정해야 전체 구성의 처리량이 증가합니다.

12. 필요하지 않은 기능 사용 안 함예를 들어 응용프로그램에서 웹 서비스 주소 지정(WS-Addressing) 지원 기능을 사용하지 않을 때는 이 기능을 사용 안 함으로 설정하여 성능을향상시킬 수 있습니다.

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 3: IBM WAS enablement about tuning for BPs

3SoftwareGroup WebSphereConfidential - Do Not Distribute

1. WAS 기본 튜닝 대상

Web Server

WAS

(http-plugin)

Routing

HTTP/HTTPS

기본적인 WAS 의 표준 Architecture 를 기준

Web Server 와 WAS, 두 가지 대상이 기본 튜닝 대상

WAS 는 다시 실제 어플리케이션을 구동시키는 JVM (Java Virtual Machine) 과 요청을 받는 Thread 즉, System 대기열, 어플리케이션으로 대상이 나뉨

<그림1> 기본적인 WAS 의 표준 Architecture

※ WAS 튜닝과 함께 어플리케이션 튜닝도 상당히 중요한 부분이지만 상당히 범위가 커지므로 본 문서에서 전부 다루지는 않습니다.

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 4: IBM WAS enablement about tuning for BPs

4SoftwareGroup WebSphereConfidential - Do Not Distribute

Web Server 튜닝

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 5: IBM WAS enablement about tuning for BPs

5SoftwareGroup WebSphereConfidential - Do Not Distribute

2. Web Server 튜닝

Web Server 튜닝 (httpd.conf)

Web Server 는 정적 컨텐츠를 처리하고 클라이언트의 HTTP 요청을 WAS 로 routing 하는 역할을 담당

Web Server 튜닝 가능 Point (Web Server 설정 파일인 httpd.conf 파일에서 변경 가능)- MaxClients : Web Server에서 동시에 처리할 수 있는 최대 HTTP Request 수- KeepAlive 관련 항목 : Web Server 에서 WAS 사이의 Connection 을 맺은 다음

Request 를 보낸 후 연결을 끊지 않고 계속 유지할 지 여부에 대한 항목- KeepAlive, MaxKeepAliveRequests, KeepAliveTimeout

항 목 설 명 비고

MaxClientsWeb Server에서 동시에 처리할 수 있는최대 HTTP Request 수

Request 량을 기준으로 값을 설정

KeepAlive KeepAlive 모드 사용 여부On/Off 로 설정하며 On 으로 설정한 것이 Connection 을다시 맺기 위한 Overhead 가 매번 발생하지 않으므로 더나은 성능 결과를 보여준다.

MaxKeepAliveRequestsKeepAlive 모드를 사용한 상태에서 한 번의연결을 사용해서 보낼 수 있는 최대Request 수

KeepAlive 모드에서 연결을 맺은 후에 지정된 최대 Request 수 만큼의 Request 를 보내게 되면 연결을 다시 맺게 된다.

KeepAliveTimeOutKeepAlive 모드를 사용한 상태에서 연결을맺은 후 사용이 없을 경우 연결을 끊을 때까지 대기 시간

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 6: IBM WAS enablement about tuning for BPs

6SoftwareGroup WebSphereConfidential - Do Not Distribute

2. Web Server 튜닝

Web Server 튜닝 (httpd.conf)

Log Level 조정

- 운영 환경에서는 Log Level을 “error”로 조정함으로써, Logging으로 인한 Overhead를 줄일 수 있음

- 기본 설정되어 있는 Log Level은 “warn”

캐시 가능 여부 확인

- 자주 호출되는 페이지의 경우 캐시가 가능한지, 캐시를 할 경우에 득과 실 확인

불필요한 구성요소 삭제

- 성능에는 영향을 미치지 않으나, 관리상의 Issue가 있으므로, 불필요한 구성요소는 삭제

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 7: IBM WAS enablement about tuning for BPs

7SoftwareGroup WebSphereConfidential - Do Not Distribute

2. Web Server 튜닝

Web Server 튜닝 (plugin-cfg.xml)- http://www-01.ibm.com/support/docview.wss?rs=180&uid=swg21318463

LoadBalanceWeight

- 기본 ‘2’ 값의 경우는 너무 빨리 가중치가 ‘0’ 으로 소모될 수 있으므로 ’20’ 정도의 큰 수로 가중치를 시작하는 것이 좋음

- 하나의 clone 을 제외하고 동일한 값 설정 (예제: 20, 20, 19)을 권장

ConnectTimeout

-기본값이 ‘0’ 이라 OS 의 TCP/IP timeout 설정을 상속받게 됨 (일반적으로 너무 긺)

-5초 정도가 권장 설정

ServerIOTimeout

-어플리케이션에 따라 적정 값이 완전하게 다르나 일반적으로 60 ~ 180 정도를 권고

IgnoreAffinityRequests

-Session affinity 에 의한 로드 밸런싱이 깨지지 않기 위해 ‘false’ 사용 권고

Memory-to-Memory (M2M) 세션 복제방식을 사용할 경우

- GetDWLMTable="true“ 옵션을 추가 권장

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 8: IBM WAS enablement about tuning for BPs

8SoftwareGroup WebSphereConfidential - Do Not Distribute

운영체제 튜닝

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 9: IBM WAS enablement about tuning for BPs

9SoftwareGroup WebSphereConfidential - Do Not Distribute

3. 운영체제 튜닝

운영체제 별로 가이드에 따라서 기본 튜닝 필요(http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.nd.multiplatform.doc/info/ae/ae/tprf_tuneopsys.html

기본적으로 반드시 TCP/IP 관련 항목은 튜닝되어야 함

40150TCP 연결에 대한 초기 제한시간 값TCP_KEEPINIT

10150연결을 확인하기 위해 전송되는패킷 사이의 간격

TCP_KEEPINTVL

1440초

(2시간)

2000

Default

600초keepAlive 패킷은 연결이active/ESTABLISHED 상태에머무르도록 하는 설정

TCP_KEEPIDLE

응용프로그램에 종속적. ulimit 파일 설명자한계를 늘리면 성능이 향상됩니다.

unlimited사용자 계정의 자원 사용도에 대한다양한 제한사항을 지정

ulimit

이 항목의 값을 줄이면 TCP/IP가 닫힌연결을 더 빨리 해제할 수 있어서 새연결을 위해 더 많은 자원을 제공할 수있습니다. 실행 중인 응용프로그램에서빠른 해제와 새 연결의 작성이 필요하고TIME_WAIT 상태에 있는 많은 연결로 인해처리량이 낮은 경우 이 매개변수를 조정함.

1(=15s)TCP/IP가 닫힌 연결을 해제하고그의 자원을 다시 사용하기 전에경과해야 하는 시간

TCP_TIMEWAIT

권장 근거권장값역할항목

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 10: IBM WAS enablement about tuning for BPs

10SoftwareGroup WebSphereConfidential - Do Not Distribute

3. 운영체제 튜닝

운영체제 별로 가이드에 따라서 기본 튜닝 필요(http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.nd.multiplatform.doc/info/ae/ae/tprf_tuneopsys.html

추가 예제 – AIX 6.1 운영체제에서 IBM WAS 튜닝(https://www.ibm.com/developerworks/mydeveloperworks/blogs/timdp/entry/performance_tuning_websphere_application_server_7_on_aix_6_1179?lang=en)

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 11: IBM WAS enablement about tuning for BPs

11SoftwareGroup WebSphereConfidential - Do Not Distribute

IBM WAS 튜닝

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 12: IBM WAS enablement about tuning for BPs

12SoftwareGroup WebSphereConfidential - Do Not Distribute

4. JVM 튜닝

IBM WAS 를 튜닝한다는 의미는 실질적으로 서비스를 실제로 수행하는 JVM 을 튜닝한다는 의미와 동일 합니다.

JVM 튜닝

- WAS 에서 실질적으로 서비스를 하기 위해서 구동되는 하나의 Server instance 는 결국 하나의 JVM 임

- JVM 튜닝 가능 Point ( 관리 콘솔의 Application Servers > (Server) > Java > JVM)

- Heap 사이즈 : JVM 이 사용할 수 있는 Heap memory 의 크기

- GC (Gabage Collection) 방식 : 메모리를 해제하는 Gabage Collection 은 4가지 정책이 있으며업무와 목적에 맞게 선택

- GC 주기 : Java 에서 메모리를 할당 받은 객체들의 사용이 없을 경우 메모리를 다시 반환하기 위하여Collection 하는 주기 – 결국 Heap 사이즈와 연계

※ 현 문서에서 Memory 구조는 AIX 를 기준으로 설명됩니다.

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 13: IBM WAS enablement about tuning for BPs

13SoftwareGroup WebSphereConfidential - Do Not Distribute

5. Heap 메모리 영역

Java 에서는 JVM이 프로세스를 위해 메모리를 사용할 때 메모리에 Heap 구조를 만들어서 유연하게 활용

일정한 메모리 영역 내에서는 Java Heap(for java) 과 Native Heap(for C) 이 일정한 메모리 영역을 나누어 써야 하므로 둘 간의 상관 관계를 잘 따진 후에 튜닝을 해야 한다.( 예: Java Heap 이 늘어나면 Native Heap 이 줄어든다.)

• AIX에서 32-bit application 은 이론적으로 4GB 의 공간을가질 수 있습니다. (2**32=4G) 이 공간은 가상으로0x00000000 에서 0xFFFFFFFF 까지 있는데 AIX 는 이를 16 개의 독립적인 segment 로 나누고 따라서 각각 분리된segment 에는 256 MB 씩 할당됩니다.

• 첫 번째 segment 인 0x0 는 시스템에 의해 kernel text 와data 를 위해 예약되어집니다. 따라서, user process 접근이금지 됩니다. • 0x1 segment 는 user process text 를 포함합니다. 만약 여러 개의 process 가 같이 실행된다면 모든 process 는 같은segment 를 접근합니다. • 0x2 segment user data와 heap, stack 을 포함합니다. • 0xD segment 는 shared library text 를 포함합니다. 모든shared library module 은 이 segment 로 맵핑 됩니다.

• 0xF segment 는 per-process shared library data 를 포함합니다.

• Segment 0x3--0xC 와 0xE 는 user process 추가적으로 call 을 통하여 메모리 공간을 사용할 수 있도록 예약되어 있습니다. 따라서, 사용 가능한 최대 가능 공유 메모리는 11개의segment 이고 2.75 GB 입니다.

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 14: IBM WAS enablement about tuning for BPs

14SoftwareGroup WebSphereConfidential - Do Not Distribute

6. Heap 메모리 영역 튜닝

System 에서 process 를 위한 Memory 영역 조정 예제

1. maxdata = 0x00000000/dsa:- native heap 은 Segment 2 에 존재하며 256MB를

thread stack 과 모든 JVM의 non-object memory 할당, 로드된shared library code, data 와 공유한다.

- Java heap 을 위하여 Segments 3 에서 15 까지 예약 되며 (shmat/mmap 사용하여 할당 ), Java heap 을 13 segment 까지 지정할 수 있다. (3.25GB) 13개 모두를 지정하지 않았다면남은 것이 shared memory를 위해서 사용된다.

2. maxdata > 0xB0000000/dsa:- native heap 은 Segment 3 에 위치한다.

- Segments 4 에서 15 까지 java와 native heap 을 위한동적 할당으로 사용이 가능하다. Java heap 크기를 12 segment 까지 (3GB) 늘리는 것이 가능하고, 그렇지 않았다면남은 것은 다른 shared memory 나 native heap 으로 사용 가능하다.

3. maxdata < 0xA0000000/dsa:- native heap 은 Segment 3 에서 시작한다.- Segments 4 에서 12 까지 Java heap 을 위해서 사용

가능하다. (java heap 은 반드시 연속적이어야 하므로 segment 14 는 제외)Java heap 을 9 segment 까지 확장할 수 있다. (2.25 GB)

항 목 설 명 비고

MAXDATAHeap memory 와 native memory 영역 조정을위한 파라미터 값

Large Object 가 사용되거나 JNI 를 많이 사용해서 Native heap 이많이 필요한 경우가 아니면 변경 없이 디폴트 값을 추천한다.

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 15: IBM WAS enablement about tuning for BPs

15SoftwareGroup WebSphereConfidential - Do Not Distribute

7. Heap 튜닝

JVM 이 사용하는 Heap 의 사이즈를 테스트를 통해 적절히 튜닝 해야만 GC가 자주 발생하지 않으며 원하는성능을 얻을 수 있다.

Heap 튜닝

항 목 설 명 비고

Maximum Heap SizeJVM에서 사용되는 Heap memory 가최대로 커질 수 있는 크기

관리콘솔과 -Xmx 옵션으로도 설정 가능하며, 가능한page가 일어나지 않는 physical memory 이내로설정하는 것이 좋다. 여러 사람들의 경험상 추천되는 최적값은 2GB 이다.

Initial Heap SizeJVM 이 initialize 될 때 생성되는 초기Heap 크기

관리콘솔과 -Xms 옵션으로도 설정 가능하며, 시작 시생성되는 Heap 의 크기이므로 테스트를 통한 튜닝 필요. 권장되는 값은 평균적으로 512M 이다.

Allocating Page sizeHeap을 64 kilobyte page 크기로 할당(medium pages)

–Xlp64k 옵션으로 설정 가능하며, 가상 메모리 페이지를64KB로 사용하도록 하여 성능과 throughput을 향상시킴. 64bit 환경의 경우에는 보통 사용하는 것이 권장이다.

명시적 GC 여부

명시적인 GC란 System.gc() 명령에 의한사용자 GC를 의미하며, GC의 종류와무관하게 항상 Full GC를 발생하므로특별한 경우가 아니라면 일반적으로System.gc() 는 권장하지 않음

–Xdisableexplicitgc 옵션으로 설정 가능하며, 명시적 GC 를 작동하지 못하도록 함

※ 모든 문서의 튜닝 추천 값은 고객의 상황에 따라 변동 가능하므로 항상 Test 를 통해서 적정 값을 찾으시기를 추천 드립니다.

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 16: IBM WAS enablement about tuning for BPs

16SoftwareGroup WebSphereConfidential - Do Not Distribute

7. Heap 튜닝

Heap 의 Object 할당 구조

Heap base = Heap 이 시작하는 지점의 address Heap limit = Heap 이 확장과 수축을 통해 현재 사용되고 있는부분의 가장 상위 부분의 address Heap top = Heap 이 끝나는 지점의 address

allocbits : 2-bit 벡터로 heap 의 object 상태를 지시한다. Allocbits 는 heap 의 1/64 이다. Object 가 Java heap 에 할당 될경우 allocbits 의 bit 하나가 설정되며 object 의 시작점을 가르킨다. 이 bit 는 object 가 어디 위치하는 지는 나타내지만 object 가살아있는지 아닌지에 대해서는 알지 못한다.

markbits : 2-bit 벡터로 heap 의 object 상태를 지시한다. Markbits 는 heap 의 1/64 이다. 살아있는 object 의 시작에서markbits 의 한 bit 를 설정한다.

Heap 안에 두 개의 Object 가 할당 되어 있지만 하나의 Object 만이 살아있다.(markbits 가 하나만 설정) 즉, 하나의 Object만 사용되고 있다는 뜻이며 나머지 사용되지 않는 Object 는 GC 될 것이다.

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 17: IBM WAS enablement about tuning for BPs

17SoftwareGroup WebSphereConfidential - Do Not Distribute

8. GC 튜닝

Java 에서 사용하지 않는 메모리를 자동적으로 해제해주는 GC 를 튜닝을 통해서 적절하게 조절하여야 한다.

항 목 설 명 비고

Mark phase

Mark 단계에서는 thread stack 이나 static, interned string, JNI reference 에서 참조하는 모든 object 를 식별한다. 이 행위는JVM이 참조하는 object 의 root 집합을 생성한다.각 object 는 각각다른 것들을 하므로 결국, 프로세스의 두 번째 부분에서 그것이만든 다른 참조들을 위하여 각 object 를 스캔 한다. 이 두 가지프로세스가 함께 도달 할 수 있는 object의 시작을 정의하고 있는bit 벡터를 생성한다. (markbits)

Sweep phase

Sweep 단계에서는 다음 할당을 위해서 회수될 수 있는 heap storage 의 부분을 인식하기 위하여 mark 단계에서 만들어진 mark bit 을 사용한다. 그래서 이러한 부분들은 free 영역의 pool 에추가된다.

Mark 와 Sweep 단계는compaction 단계에 비해서아주 작은 시간을 소비한다.

Compaction phase

Garbage 가 heap 에서 회수될 때 GC 는 그들 사이의 공간을제거하기 위하여 object 의 결과 집합에 대하여 압축작업을 할지고려한다. compaction 과정은 오랜 시간이 걸릴 수 있기 때문에GC 는 절대적으로 그것이 필요할 때만 수행하며, 따라서compaction은 드문 이벤트이다.

실질적으로 가장 많은 시간을소비하므로 compaction 단계를줄이는 것이 tuning 의 대표기법이다.

GC 의 3 단계

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 18: IBM WAS enablement about tuning for BPs

18SoftwareGroup WebSphereConfidential - Do Not Distribute

8. GC 튜닝

IBM JVM에서는 4가지 방식의 GC 방법을 제공하므로 원하는 목적에 맞는 GC 방식을 선택해서 사용할 수 있습니다. (이 GC 방식의 변경에 따라서 Heap 의 구조도 변경됨)

GC 정책 (-Xgcpolicy 옵션 이용)

항 목 설 명 비고

Optthruput 정책처리량은 높지만 GC 중간시간이 길다. GC 중 compaction 이 필요하면 mark, sweep, compaction 을 하기위한 모든 어플리케이션 thread 는 중지된다.

WAS v7 까지 기본값이며, 대부분의 어플리케이션은 이옵션으로도 충분한 성능을 낼 수있음.

Optavgpause 정책어플리케이션 실행과 함께 GC의 mark, sweep 단계를실행시킴으로써 GC 중단 시간을 줄인다. 이런 동시실행은 전반적인처리량에 작은 성능 영향을 야기할 수 있다.

Gencon 정책

IBM JVM 을 위하여 세대가 있는 GC를 사용한다.

세대의 개념은 GC 중단시간을 줄임으로써 높은 처리량을 달성하기위해 사용된다. 이러한 목적을 이루기 위하여 heap 을 new 와 old 부분으로 나눈다. 짧게 살아있는 객체가 new영역에서 빠르게 GC 되는 반면에 오랫동안 살아있는 객체는 old 공간으로 이동한다.

Java 5.0 이후 새로 도입된정책으로 짧은 주기의 객체사용의경우 성능상에 많은 이점이있습니다. (WAS v8 기본값)

Subpool 정책

보통 8 개 이상의 프로세스를 사용할 경우에 멀티프로세서시스템에서 성능을 향상시킬 수 있다. 이 정책은 IBM pSeries 와zSeries 에서만 사용가능하며 향상된 확장성과 객체 할당을 제공하기위하여 heap이 subpool 들로 나누어져 있다는 것만 제외하고는optthruput 정책과 비슷하다.

-> WAS v8 부터는 Balanced 정책으로 변경

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 19: IBM WAS enablement about tuning for BPs

19SoftwareGroup WebSphereConfidential - Do Not Distribute

[참고] WAS GC Policy

을 피함

서버 시스템에 있는 추가 프로세서를 사용할 수 있게 함

환경에서의 성능을 높이기 위해 만들어진 것임

을 최적화하기 위함

유형의 애플리케이션에 가장 적합한 임

단일 으로 구성됨

평균적인 를 최적화하기 위함

내에서 걸리는 시간을 줄이고 일정하게 유지되도록 함

일반적으로 에서 정도로 줄임

애플리케이션이 수행되는 동안 작업이 같이 수행되도록 함

버전

버전

를 너무 크게 줄이게 되면 에 약간의 오버해드를 주게 됨

빠른 사용자 응답시간 기준을 가진 시스템에 이상적인 임

의 을 사용함

대량의 프로세서를 가진 시스템에서 오브젝트 할당을 가속화하기 위함

플랫폼에서만 지원됨

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 20: IBM WAS enablement about tuning for BPs

20SoftwareGroup WebSphereConfidential - Do Not Distribute

8. GC 튜닝

GC 튜닝 가이드

JVM Heap Size Tuning은 GC결과를 모니터링 하여 최적의 값을 설정하며, GC Cycle의 안정적인 적정치는아래와 같습니다.

GC Duration : 2초 이하

GC Interval : 10초 이상

GC 사이클이 정상 범위를 넘어갈 경우에는 Heap 사이즈를 조절하여 튜닝

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 21: IBM WAS enablement about tuning for BPs

21SoftwareGroup WebSphereConfidential - Do Not Distribute

그럼 튜닝이 완료된것인가요?

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 22: IBM WAS enablement about tuning for BPs

22SoftwareGroup WebSphereConfidential - Do Not Distribute

System 대기열 튜닝

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 23: IBM WAS enablement about tuning for BPs

23SoftwareGroup WebSphereConfidential - Do Not Distribute

9. System 대기열 튜닝

MaxClient 수

(200)

Web ServerWeb Server WASWAS

Web Container

최대 스레드

(50 ~ 100)

데이터 소스

최대 연결 풀

(10~50)

ORB

ORB 스레드 풀

(50 ~ 80)

대기열 구조

• WebSphere Application Server는 웹 서버와 함께 아래와 같이 일련의 대기열 조정이 필요합니다.

• 일반적으로 MaxClient > Web Container 최대 스레드 > ORB 스레드 풀 / DataSource Max Connection 의 형태를 갖추도록 하는 것이 좋습니다.

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 24: IBM WAS enablement about tuning for BPs

24SoftwareGroup WebSphereConfidential - Do Not Distribute

9. System 대기열 튜닝

항 목 설 명 비고

MaxClients

<MaxClients>

Web Server에서 동시에 처리할 수 있는최대 HTTP Request 수

Request 량을 기준으로 값을 설정

WebServer(IHS) Configuration File(httpd.conf)

Web Container 최대스레드

<Thread Pool –

Maximum Size>

웹컨테이너에서 HTTP request를처리하기위해 풀에 넣을 수 있는 최대스레드 수

앞 단에 있는 Web Server의 MaxClients 값보다는 작게설정

Application Servers > (Server) > Web Container > Thread Pool > Maximum Size

ORB 스레드 풀

<ORB>

다른 Application Server에서 EJB 클라이언트(servlet or 다른 EJB)가 EJB 메소드 요청을 처리하기 위해 풀에 넣을수 있는 스레드 수

EJB 클라이언트(servlet, 다른 EJB)가 서로 다른 JVM에서실행될 때에만 스레드 풀에 들어감.

(ex: KalApp의 servlet이 iKalApp의 EJB 호출시)

EJB 클라이언트에서 비교적 짧게 EJB를 호출하면웹컨테이너 최대 스레드 수보다 작게 설정하고(1/2정도), 그렇지 않으면 웹컨테이너 최대 스레드 수보다 크지않게 설정

Application Servers > (Server) > ORB Service > Thread Pool > Maximum Size

데이터소스 연결 풀

<Max Connections>

데이터베이스 사용 시 connection 재사용을 위한 connection pool의 수

웹컨테이너의 최대 스레드 수보다 작게 설정

자원 > JDBC 제공자 > (득정 JDBC 제공자) > 데이터소스 > (특정 데이터 소스) > 연결 풀링 > 최대 연결 수

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 25: IBM WAS enablement about tuning for BPs

25SoftwareGroup WebSphereConfidential - Do Not Distribute

9. System 대기열 튜닝

ORB Service 튜닝

EJB Method 호출방법 조정 (Local EJB 사용 시) Pass-by-value (Default) Pass-by reference

Pass-by-value(Default 설정)는 원격 메소드 호출 시마다 매개변수가 copy되기 때문에 Performance에 영향

Pass-by-reference로 변경 시, 원격 메소드에서 object를 변경하면 호출한 프로그램에서 변경된 값을 볼 수 있음

Pass-by-reference 의 경우, EJB Client와 EJB Container가 동일한 JVM에 있을 경우에만 사용 가능

항 목 설 명 비고

Pass-by-reference

Pass-by-value(Default 설정)는 원격 메소드 호출 시마다매개변수가 copy되기 때문에 Performance에 영향을 줄 수있습니다. 그러나 이 항목을 설정하여 Pass-by-reference로변경 시, 값을 복사할 필요 없이 바로 매개변수의 address 를참조할 수 있게 되므로 performance 향상 효과를 얻을 수있습니다.

Application servers > server1 > ORB Service 메뉴에서 설정가능

단, EJB Client와 EJB Container가 동일한 JVM에있을 경우에만 사용 가능합니다

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 26: IBM WAS enablement about tuning for BPs

26SoftwareGroup WebSphereConfidential - Do Not Distribute

9. System 대기열 튜닝

기타 튜닝에 도움이 될 만한 것들

Java 의 특성상 보통 먼저 IPv6 방식을 찾아본후에 IPV4 방식을 찾는데 불필요하게 IPv6 방식으로 lookup 하는 것을 제거하여 성능향상을 도모

TrueHostname 에 대하여 IPv4 방식의lookup 을 사용

java.net.preferIPv4Stack

Hostname 의 lookup 작업이 빈번하게이루어지는데 이를 매번 가지고 오는 것이아니라 캐시하여 가지고 오므로 성능 향상을도모할 수 있음

TrueHostname의 lookup 작업의반복을 피하기 위하여 캐시

com.ibm.cacheLocalHost

하위의 인스턴스가 많은 경우 1분마다 동기화를하는 것이 성능 저하의 하나의 요소가 될 수있으므로 동기화 시간을 Lab 에서 권장한시간으로 설정

37분1분설정 정보를 노드와 동기화 하는시간

파일 동기화 서비스 – 동기화간격

세션 쓰기 빈도, 세션풀 크기, 무효성 등 설정세션 관리 조정

10

Default

어플리케이션 마다 주기적으로 자기 클래스에변화가 없는지 매번 체크하는 작업은 불필요한CPU 작업이므로 운영에서는 disabled 권고

disabled클래스 리로딩 옵션

데이터 소스는 활성화된 연결에서 사용 중이지않은 명령문을 캐시하여 준비된 명령문 및 호출가능한 명령문의 처리를 최적화

명령문 캐시데이터 엑세스 자원 조정 -명령문 캐시 크기

권장 근거권장값역할항목

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 27: IBM WAS enablement about tuning for BPs

27SoftwareGroup WebSphereConfidential - Do Not Distribute

10. 기본 자동 튜닝 스크립트

IBM WAS 는 좀 더 쉽게 튜닝 방법을 제공하기 위하여 미리 만들어진 기본 튜닝 스크립트를 제공합니다.

Self-tuning 스크립트

applyPerfTuningTemplate.py 라는 jython 스크립트로 하단과 같이 실행하면 테이블에 표시된 Best Practice 값으로 자동 튜닝됩니다.

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 28: IBM WAS enablement about tuning for BPs

28SoftwareGroup WebSphereConfidential - Do Not Distribute

End of The Document.End of The Document.

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 29: IBM WAS enablement about tuning for BPs

29SoftwareGroup WebSphereConfidential - Do Not Distribute

참고 자료

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 30: IBM WAS enablement about tuning for BPs

30SoftwareGroup WebSphereConfidential - Do Not Distribute

[참고] OS Parameter

이나 에 대한 값 로 변경

시스템의 경우의 값을 로 설정할 것을 권고합니다 특히 이나 의 경우에는 의 가 상당히 크므로반드시 로 설정할 것을 권고합니다

로 변경경우 는 와 함께 장애발생시장애의 원인을 찾을 수 있는 중요한 정보가 되므로반드시 로 생성될 수 있도록 을 로 하여 운영하여야 합니다

확인 및 설정 방법

확인 설정

및 가 생성되는 의 공간을 항상 이상 유지 등은 에서 지정한 에 생성되며설정이 되어 있지 않을 경우에 생성됩니다

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 31: IBM WAS enablement about tuning for BPs

31SoftwareGroup WebSphereConfidential - Do Not Distribute

[참고] WAS Auto-Reload

기능 및 로 운영

의 의 는 에서 설정하며전체에 대한 여부를 결

정한다

의 해당 기능은 에 한정적으로 적용

로 설정할 경우내에 포함되어 있는 파일등이 변경되면 이를 반영하기 위해서 해당이 되며이 과정 중 서비스는 중단됩니다

운영 중로 설정할 경우파일의 변경여부를 하기 위한 추가적인 부하가 시스템에 가중되게 되므로에 영향을 줄 수 있습니다

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 32: IBM WAS enablement about tuning for BPs

32SoftwareGroup WebSphereConfidential - Do Not Distribute

기능 방법

[참고] WAS Auto-Reload (계속)

의 기능 삭제

단계에서 설정

설치 후에는 파일 직접 수정환경인 경우 파일

의 기능 삭제

에서 설정

해당 선택

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 33: IBM WAS enablement about tuning for BPs

33SoftwareGroup WebSphereConfidential - Do Not Distribute

[참고] WAS EJB 튜닝

를 활용함

는 의 성능을 개선하기 위한 특정 운영 모드임

에서 경감

에서 사용

는 의 메쏘드 내에서 호출됨

메쏘드는 세션빈에 의해서 엑세스되는 의 및 을 제공

은 를

에 이 정의되어 있지 않아야 함

과 이 같은 에 로드되어야 함

가 를 호출하지 않음

의 가 다음 를 사용

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 34: IBM WAS enablement about tuning for BPs

34SoftwareGroup WebSphereConfidential - Do Not Distribute

[참고] WAS Application Development

에서 명시적으로 을 하지 않는 것이 좋습니다 가 발생하는 경우

가 일어난 경우 에서 명시적으로 을 한 경우

에서 을 할 경우에 의한 이 길어질 수 있으며이로 인해 전체적인 저하를초래할 수 있습니다

형태 로 발생한 경우

를 하여 발생한 경우

어플리케이션 내용 확인 후특별한 경우가 아니라면 해당 부분을 삭제하는 것이 좋습니다

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 35: IBM WAS enablement about tuning for BPs

35SoftwareGroup WebSphereConfidential - Do Not Distribute

[참고] WAS WAS 시스템 현황 분석 샘플 (SO - GTS Service 예제)

설정값 취합기간 회수 총 회 약 시간 동안 가 발생하는 평균주기 약 초

일반적으로 총 응용프로그램 실행시간 중 를 위해 사용되는 시간은 총 응용프로그램 실행시간을 기준으로 를 소비하는 것이 적절한로 볼 수 있습니다의 를 보일 정도로 빈번한 가 발생되어 가 큰 상태이므로 현재으로 설정되어 있는 수치를 늘려서 부족한 확보를 통해 가 발생되는 회수를 줄이도록 합니다가 빈번하게발생하는 경우자원을 과도하게 사용하게 되며가 발생하는 순간에는 처리도 일시 정지되므로 서비스 지연 현상을 유발시킬 수 있습니다

분석 결과

의 사용에 있어서 가장 문제가 되는 과 에 대한 를 파악하기위하여 을 하여 분석한 결과는 정도이며빈번하고 지속적인 가 발생되고있는 상황입니다의 수치를 늘려서 적절하게 없이 요청을 처리할 수 있도록 하는 것이 필요합니다

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 36: IBM WAS enablement about tuning for BPs

36SoftwareGroup WebSphereConfidential - Do Not Distribute

튜닝시 문제점 해결

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 37: IBM WAS enablement about tuning for BPs

37SoftwareGroup WebSphereConfidential - Do Not Distribute

[참고] WAS NIO 설정

NIO (New Input/Output)

WAS v6.1 에서 새롭게 나오기 시작하는 AIO 방식에서 문제가 발생할 경우(CPU 사용률도 안 올라가고 속도도 나오지 않을 경우) 안정적인 NIO 개념을

대체해서 사용을 권장

• 채널(Channel) 인터페이스를 구현하는 SelectableChannel이라는 새로운 클래스를 Non-Blocking으로 설정함으로써 accept()에 대한 블러킹을 피할

수 있도록 했고, Buffer라는 새로운 클래스의 도입으로 입출력 작업에서 블러킹을 피하고 기존 IO에서의 Stream간의 데이터 복사에 의한 가비지 생성을

예방함으로써 효율적인 버퍼링이 가능해졌다.

• AIO 에서 NIO 로 변경하는 방법 (WASROOT/bin) – AIO 가 로드 되지 못하도록 SO 파일의 이름을 다른 것으로 변경하면 NIO 를 자동으로 사용한다.

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

Page 38: IBM WAS enablement about tuning for BPs

38SoftwareGroup WebSphereConfidential - Do Not Distribute

[참고] WAS HostName lookup 문제

HostName lookup problem

메소드가 호출 시에 너무 오랜 시간이 소요되거나 이 걸릴 경우

• 와 의 이슈로 인하여 을 하는 것이 될 수 있다• Thread dump 수행하여 stack 을 보면 java.net.Inet6AddressImpl.getLocalHostName(Native Method) 가 상위에서 호출됨

해결 방법

• 파일을 열어서 아래 사항을 추가

Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)