This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1SoftwareGroup WebSphereConfidential - Do Not Distribute
2011. 9.
IBM SoftwareGroup WebSphere CTP 이정운 과장 (JungWoon Lee, [email protected])
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
35SoftwareGroup WebSphereConfidential - Do Not Distribute
[참고] WAS WAS 시스템 현황 분석 샘플 (SO - GTS Service 예제)
설정값 취합기간 회수 총 회 약 시간 동안 가 발생하는 평균주기 약 초
일반적으로 총 응용프로그램 실행시간 중 를 위해 사용되는 시간은 총 응용프로그램 실행시간을 기준으로 를 소비하는 것이 적절한로 볼 수 있습니다의 를 보일 정도로 빈번한 가 발생되어 가 큰 상태이므로 현재으로 설정되어 있는 수치를 늘려서 부족한 확보를 통해 가 발생되는 회수를 줄이도록 합니다가 빈번하게발생하는 경우자원을 과도하게 사용하게 되며가 발생하는 순간에는 처리도 일시 정지되므로 서비스 지연 현상을 유발시킬 수 있습니다
분석 결과
의 사용에 있어서 가장 문제가 되는 과 에 대한 를 파악하기위하여 을 하여 분석한 결과는 정도이며빈번하고 지속적인 가 발생되고있는 상황입니다의 수치를 늘려서 적절하게 없이 요청을 처리할 수 있도록 하는 것이 필요합니다
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)