WebSphere Application Server 성능향상을위한가이드 J2EE WG PlatSIG 의 WAS 성능요소에대한질의응답 Final Version 1.0 2002.11.20
목차 1. EJB Container 2. Deployment Descriptor 설정 3. JAR/WAR/EAR Packaging and Packaging size 4. 트랜잭션유형 (CMT/BMT) 5. JDBC Connection Pool 6. 기타 (JVM/OS/NW Tuning Doc) Appendix. Performance Theory
이슈 1 : EJB Container 설정
1-Q1. EJB Container 설정 - 개수산정 Q1. Container 의적정개수산정과관련된고려사항 A1. 2 가지관점에서볼수있다. 관련 EJB s 를여러개의 container 에분산시켜서전개 성능적 / 비용적측면에서볼때, 성능적잇점은없이 JVM 에대한프로세스 overhead 만존재할뿐이다. 모든 EJB s 를하나의 container 에전개시키고 container 를복수개로 cloning EJB Container 에만해당되는특별한고려사항은없다. Web Container clustering 시개수산정과관련된고려사항과같다.
1-Q2. EJB Container 설정 최대수용가능 Txn Q2. 하나의 Container 가수용가능한단위시간당트랜잭션수 A2. EJB 종류별 /Transaction Attribute 별 /Isolation 수준 /Entity Bean 관련한 DBMS 등가변요소가많기때문에이를수치화한자료는없다. 존재한다고해도실제로어플리케이션을구현함에있어서이모든것이복합되어이루어지므로자료에근거한계산이이루어지지않는다.
1-Q3. EJB Container 설정 EJS WLM Q3. 복수의 Container 로작업시상호간의연동을위해지원하는메커니즘에는어떤것들이있는가? 있다면이를위해설정되어질설정값들은어떤것이있는가? A3. Enterprise Java Services WorkLoad Management 를제공한다. Server Group 을생성하고워크로드관리방침을설정한다. ( 라운드로빙 / 무작위 / 로컬우선라운드로빙 / 로컬우선무작위 )
1-Q4. EJB Container 설정 WLM 고려사항 Q4. 필요에의해복수의 Container 를운용해야할경우개수의정확한정의를위해사용자에게제시하고있는가이드라인에는어떤것이있는가? A4. 복수개의 Container 운용목적중에는성능, 확장성, 신뢰성등의향상을들수있다. 한개의머신에서복수개의 Container 를운용하는것에대해선대용량시스템이어야한다는대전제를필요로한다. 특히, 필요에의한복수의 Container 운용은업무별로 Application Server 를분리운영하고자하는운영적인측면에서생각해볼수있는데, 이는그다지바람직하지않다. Application Server 단위 -> EAR 단위업무분리
1-Q5. EJB Container 설정 위치 / 방법 Q5. Container 의설정항목, 설정값의저장위치와항목별로설정값변경시발생할수있는성능에의영향에는어떤것이있는가? A5. 관리콘솔을통해서설정할수있고, 그값은 repository DB 에저장된다. 캐시크기 캐시할수있는인스턴스수를지정한다. 총 EJB 개수 X 동시사용자수지정된값이너무작을경우성능저하의원인이된다. 캐시정리간격 컨테이너가캐시크기를초과하지않도록캐시에서사용되지않은항목을제거하려고시도하는간격 일반적으로캐시크기를증가시킨것만큼간격도증가시켜준다. 워크로드관리방침 로컬우선라운드로빙방침이라운드로빙보다성능이더좋다. 로컬우선이란 EJB Client 에서 EJB 를 call 할때동일한 Application Server 에있는 EJB Container 내의 EJB 를우선적으로 call 한다는방침이다.
이슈 2 : Deployment Descriptor 설정
2-a. J2EE 표준 Deployment Descriptor
2-b. WebSphere Deployment Descriptor
2-c. WebSphere DD 종류 IBM Bindings ibm-web-bnd.xmi, ibm-ejb-jar-bnd.xmi, ibm-application-bnd.xmi global JNDI name의 EJB와 resource reference를 local name으로연결 IBM Extensions ibm-web-ext.xmi,, ibm-ejb-jar-ext.xmi, ibm-application-ext.xmi J2EE spec 이외의것들을지정 Transaction Isolation Attributes Web Application Reloading Internal Servlet 사용유무 (File Serving, Servlet Invoker) Database related files Map.mapxmi EJB filed와 schema field를매핑 Schema.rdbxmi 데이터베이스 schema filed attribute를지정 Table.ddl 데이터베이스테이블작성명령
2-Q1. Deployment Descriptor Guide? Q1. 상황에따른여러가지종류 (IHS + WebSphere Application Server + DB2, IHS + WebLogic Server + Oracle 등의 ) 의 Deployment Descriptor 관련따라하기 ( 가이드 ) 를제시할수있는가?
2-Q1a.Tools & Tutorials Tools WebSphere 는텍스트에디터를통한 DD 직접편집이가능하지만권장하지는않습니다. WSAD 를사용해서개발할경우, 개발과동시에 WebSphere 에최적화된 DD 가자동으로생성됩니다. 별도로 DD 를편집해야할경우에도 GUI 를통해서구조화된방법으로접근하기때문에쉽고빠르게작업할수있고실수를줄일수있습니다. WSAD 이외의개발툴을사용할경우에는, WebSphere 에서제공하는 AAT(Application Assembly Tool) 을사용해서역시 GUI 로작업할수있습니다. Tutorials DD 는 HTTP Svr 나 DB Svr 의종류에독립적입니다. Web Application(WAR), EJB(JAR), Enterprise Application(EAR) 의 DD 설정에대해쉽게따라할수있는 Tutorial 이웹으로제공됩니다. http://www.ibm.com/software/webservers/appserv/doc/v40/ae/infocenter/was /0607.html
2-Q2. Deployment Descriptor Q2. Deployment Descriptor 파일을기술할때각종설정값 ( 설정항목 ) 들이 Performance 에미치는영향과이유를구체적으로제시해줄수있는지?
2-Q2a. ibm-web-ext.xmi File serving Servlet File serving servlet 사용시 WebSphere 에내장된 HTTP Svr 에서 HTML/image 등의정적인 file 까지서비스할수있습니다. 단점 : 외부에별도의 HTTP Svr( 예를들어 IHS) 를두는것이 performance 측면에서는더유리합니다. 장점 : Web Application 에정적인파일들까지하나의아카이브로저장할수있고, WebSphere 의보안기능을정적인파일들까지적용할수있습니다. fileservingenabled="true"
2-Q2b. ibm-web-ext.xmi-continued Web Application Auto Reload Web Applicatoin 의 classpath 에있는자원 (jar, class files) 에변경이있을시, 해당 classloader 가재시작되면서경로상의모든자원을다시 load 하게됩니다. 단점 : 모든자원이 reload 되므로순간적으로 performance 가느려질수있습니다. 장점 : Application Server 프로세스를종료하지않고도 application component 의 update 가가능합니다. Default 는 3 초간격으로동작하지만운영환경에서는훨씬큰값으로놓거나 false 로사용할것을권장합니다. reloadinterval="0" reloadingenabled="false"
2-Q2c. ibm-ejb-jar-ext.xmi Entity Bean Caching Option <beancache xmi:id="beancache_1" activateat="once" loadat="activation"/> Option Activate at Load at Option A Once Activation Option B Once Transaction Option C(default) Transaction Transaction
2-Q2d. ibm-ejb-jar-ext.xmi - continued Stateful Session Bean Caching Option <beancache xmi:id="beancache_1" activateat="once" Once(default) Bean 이최초로호출될때 activate 되고, cache 가다차거나했을때 container 가 passivate 시킵니다. Transaction Transaction 이시작될때 activate 되고, Transaction 이끝날때 passivate 됩니다.
2-Q2e. ibm-ejb-jar-ext.xmi - continued Stateful EJB timeout option Bean 이 METHOD_READY 또는 PASSIVATED 상태일때 timeout 값을초단위로지정할수있습니다. Timeout 된 bean 은 container 가필요에의해 remove 시키고메모리를확보할수있습니다. <ejbextensions xmi:type="ejbext:sessionextension xmi:id="session_1_ext" timeout="120">
2-Q2f. ibm-ejb-jar-ext.xmi - continued Read-Only Method Read-only 표시가된 method 에대해서는 transaction 이끝날때에 container 가 persistency 를위한 ejbstore() 를수행하지않습니다. Lock 발생위험을줄이고 performance 를높일수있습니다. <accessintents xmi:id="accessintent_2" intenttype="read"><methodelements xmi:id="methodelement_3"name="getbalance" parms="" type="remote"><enterprisebean xmi:type="ejb:containermanagedentity"href="meta-inf/ejbjar.xml#containermanagedentity_1"/></methodelements></accessintents>
2-Q3. Deployment Descriptor Runtime Update Q3. 실제로서비스가이루어지고있는 WAS 상의 Application 을 Update 된 Application 으로교체하고자할경우 Deployment Descriptor 작성시에고려되어져야할사항들은어떤것들이있는가?
2-Q3a. Hot Deployment & Dynamic Reloading Application Server 를재시작하지않고도 Application 추가 / 변경가능 Web Module JSP : DD 의설정과관계없이추가 / 변경가능 Servlet : Web Application Auto Reloading 이 true 인경우추가 / 변경가능 Servlet 에서참조하는 class 나 Jar : Servlet 의경우와동일 web.xml : Servlet 의경우와동일. 단, 다음의경우는해당모듈재시작필요 <security-constraints> <security-role> <login-config> Web.xml 에서 servlet mapping 추가 / 변경시 HTTP Plugin configuration file 재생성필요 ibm-web-ext.xmi : Servlet 의경우와동일 ibm-web-bnd.xmi : 해당모듈재시작필요
2-Q3b. Hot Deployment & Dynamic Reloading EJB Module ejb-jar.xml, ibm-ejb-jar-ext.xmi, ibm-ejb-jar-bnd.xmi : 변경시모듈재시작필요 Table.ddl : 변경시 DB 서버에서재수행필요 Map.mapxmi, Schema.dbxmi : 변경시 EJB re-deploy, 모듈재시작필요 EJB 가참조하는 class 나 Jar : 변경시모듈재시작필요 Home/Remote Interface class : 변경시 EJB re-deploy, 모듈재시작필요
2-Q3c. Hot Deployment & Dynamic Reloading Application application.xml, ibm-app-ext.xmi, ibm-app-bnd.xmi : 변경시 Application 재시작필요 application.xml 에서 WAR 의 contextroot 변경시에는 HTTP plugin configuration file 재생성필요 EAR 에포함된 non-module Jar : 변경시 Application 재시작필요 수행중인 application 에 WAR/EJB 모듈추가 : App Server 재시작필요 수행중인 Server 에 application 추가 : App Server 재시작필요
이슈 3 : JAR/WAR/EAR Packaging and Packaging size
3-Q1. JAR/WAR/EAR Packaging & size - Recommentation Q1 Packaging 단위설정에대한 Recommendations? Web Module 의경우 HttpSession 의공유를고려해야합니다. J2EE 환경에서 HttpSession 의범위는각 Web Application 으로제한되기때문에, HttpSession 을공유해야할 servlet/jsp 들은동일한 Web Module 안에있어야합니다.
3-Q2. JAR/WAR/EAR Packaging & size - 제약사항 Q2. Packaging 의기술적제약사항및기본요건은? 특별한제약사항은없습니다. Common code(common/utility class or Jar) 의위치는다음 2 가지중에서상황에맞는것으로선택 Common classpath 에놓는다 (Runtime Sharing) 소스관리가용이 약간의시스템자원절약 각각의 EAR 마다하나씩포함시킨다 Application 이서로에대해독립적
3-Q3. JAR/WAR/EAR Packaging & size 영향 / 근거 Q3. Packaging size 에따른성능에의영향과근거는? JDK 1.3.X 에서효율적으로사용할수있는 application heap size 의한계는대략 1.2GB 입니다. Application 이이 heap size 안에서과도한 garbage collection 없이도잘수행된다면 packaging size 는성능과직접적인관계가없습니다. Packaging size 보다는 application 의 design 과 coding 기법이성능에미치는영향이훨씬큽니다. WebSphere Developers Domain 에서성능향상을위한다양한 Best Practice 들을찾아볼수있습니다.(http://www7b.software.ibm.com/wsdd/zones/bp/)
3-Q4. JAR/WAR/EAR Packaging & size Q4. WAS 간호환문제를해결하기위한 Packaging 방안은? 기본적으로 J2EE 표준 DD 만사용해서 packaging 한 application 은 WAS vendor 에비종속적으로 deploy 할수있습니다. WAS vendor 의확장 DD 를사용할경우에는타 vendor 와호환되지않기때문에 deploy 하기전에확장 DD 를편집해주어야합니다. WAS 간호환을위해서는 vendor 확장 DD 를사용하지않는방법이최선입니다.
이슈 4 : 트랜잭션 (CMT/BMT) 의선택및적용기준
4-Q1. Transaction 선택및적용 속성 / 디폴트 Q1. CMT 의경우트랜잭션속성값은어떻게부여되고있는가? 디폴트값이있는가? 있다면어떤값인가? A1. WebSphere Application Server 에서제공하는 GUI Tool 인 AAT(Application Assembly Tool) 나텍스트편집기를통해서 Deployment Descriptor file 에빈의 assembly-descriptor 의 container-transaction 섹션의 trans-attribute 엘리먼트에메소드별로부여할수있으며디폴트는 Required 이다.
4-Q2. Transaction 선택및적용 속성오류? Q2. 세션빈과엔터티빈의트랜잭션속성이다를때발생하는오류상황은없는가? A2. J2EE 에서정의한 6 개의트랜잭션속성은빈의종류에따른의존성을가지고있지않다. 다만, 트랜잭션속성의특성에따른오류는발생할수있다. CMP : Required (O), RequiredNew(X)
4-Q3. Transaction 선택및적용 TxIso. Q3. Transaction isolation 에대한 Recommendations? A3. 대부분 Transaction isolation 레벨은데이터베이스기본 isolation 레벨인 Read Committed 를그대로따른다. 데이터일관성의문제는성능의문제보다더심각하기때문에불확실할경우 Serializable 을선택한다. 만약성능이문제가된다면나중에당황하지않도록낮은 isolation 레벨도견딜수있는트랜잭션을작성하도록개발할때신중하게생각해봐야한다.
4-Q4/Q5. Transaction 선택및적용 Bad/Best Q4. 기술지원에참여했던 Bad Cases and Solutions? Q5. 기술지원에참여했던 Best Cases and Solutions?
이슈 5 : JDBC Connection Pool
5-Q1a. JDBC Connection Pool - Properties Q1. Connection Pooling 관련 Properties 설정 Guide 및설정근거와성능에의영향은? (min/max/idle/orphan/preparedstatement cache) max PreparedStatement Cache App Orphan timeout min DB max conn. OS TCP idle timeout F/W idle timeout Idle timeout Database OS TCP idle timeout
5-Q1b. JDBC Connection Pool min/max Max - Burstness factor 0 - 부족하지않으면충분 (50 보 100 보 ) -Active 유저의개수에근접 Clients Min - 첫접속시에만이슈 Arrival rate(tpm) max max min Database DB max conn.
5-Q1c. JDBC Connection Pool - PreparedStatement PreparedStatement cache 빈번히사용되는 pstmt # x ActiveUser PreparedStatement Cache App App App PreparedStatement Cache PreparedStatement Cache OS TCP idle timeout Database
5-Q2. JDBC Connection Pool Bad Cases Q2. 기술지원에참여했던 Bad Cases and Solutions? A2. 상대적으로 max 값을 100,300,500,1000 등, 불필요하게높게책정하는경향이있음. 권장사항, Active 유저의개수근방에서조정 동시단말사용자수 r = 1,409 평균응답시간 (sec) Active 유저수 (n) = 동시단말사용자수 (n) x ------------------------------------------------ 평균응답시간 (sec) + ThinkTime(sec) t-r = 8,591 Worker-Thread Connection Pool t = 10,000 Active # Database DB max conn.
이슈 6 : 기타고려사항
6-Q1. 기타고려사항 OS, N/W Q1. 플렛폼별 OS 및 N/W 파라메터설정가이드? A1. WebSphere Performance Tuning Guide WebSphere Application Server 4.0 InfoCenter http://www-3.ibm.com/software/webservers/appserv/infocenter.html IBM WebSphere Redbooks http://www.redbooks.ibm.com 468 WebSphere 추천문서모음 http://www.javaservice.com/~java/bbs/read.cgi?m=appserver&b=was&c=r_p&n=1010952419 WebSphere 4.0.2 Performance Tuning Guide http://www.javaservice.net/~java/bbs/read.cgi?m=appserver&b=was&c=r_p&n=1033169083 140 WebSphere V3 Performance Tunning Guide http://www.javaservice.net/~java/bbs/read.cgi?m=appserver&b=was&c=r_p&n=959577074 301 Performance Tuning QuickGuide for BenchmarkTest http://www.javaservice.net/~java/bbs/read.cgi?m=appserver&b=was&c=r_p&n=985764595 335 WebSphere BMT 최적파라메터셋팅방법론 http://www.javaservice.net/~java/bbs/read.cgi?m=appserver&b=was&c=r_p&n=989760940 [ 강좌 ] 웹기반시스템하에서의성능에대한이론적고찰 http://www.javaservice.net/~java/bbs/read.cgi?m=resource&b=consult&c=r_p&n=1008701211 [ 프로젝트실무, 30 여고객사이트성능 / 장애진단컨설팅보고서모음 ] http://www.javaservice.net/~java/bbs/search.cgi?m=resource&b=consult&c=search&k=%ba%b8%b0%ed& o=t&sb=consult 405 웹사이트분석방법및용량산정팁 http://www.javaservice.net/~java/bbs/read.cgi?m=qna&b=consult&c=r_p&n=1015965697
6-Q2a. 기타고려사항 JVM/GC -1 Q2. Garbage Collection 관련파라메터설정가이드? A2. 과거 JDK 1.1 이하에서의 GC 의중요성
6-Q2a. 기타고려사항 JVM/GC -2 과거 JDK 1.1 이하에서의 min/max heap & GC 의연관성 NOTE: JDK 1.2 < JDK 1.3 이상에서는 GC 의영향도는없음 NOTE: Xms 및 Xmx 값이중요하며, 128-256-512m 정도설정
6-Q3. 기타고려사항 JVM/GC Q3. Thread 관련파라메터설정가이드? A3. Xss(native stack size) 값이작아야더욱많은 thread 를생성할수있음
Appendix. Performance Theory -Definition
Appendix. Performance Theory Axiom/Lemma
Appendix. Performance Theory Throughput Equation 27.33 x (3sec + 27sec) = 820 명 최대동시단말사용자수 ( 명 ) = Throughput(req/sec) x { 평균응답시간 ( sec) + ThinkTime(sec)}
Appendix. Performance Theory 동시단말사용자및비례관계 TPS 50 TPS Graph Saturation Point Response Time Response Time Saturation Point 20 Graph 1 Active Threads 20 Active Threads Graph 2 Stress Test Environment Real Web Environment req/sec 50 Active Threads 20 For 50 Hit/sec Response Time For 50 Hit/sec 동시단말사용자 Graph 3 동시단말사용자 동시단말사용자 Graph 4 Graph 5
Appendix. Performance Theory -3 T 3 z n-applictions Proformance Issue App. T i TPS max x 400 r i req/sec r i / T i 48.2 0.12 y 9 1.2 0.13 Q z 50 22.7 0.45 T 1 x T 1 T 2 y z + + = 1 T 2 T 3 y 0.12 + 0.13 + 0.45 = 0.70 { r i / T i } x 100 = 70 % x
Appendix. Performance Theory -3 z n-applications, multiple bottleneck queue Arrival rate line Bottleneck surface x r 1 = y r 2 = z r 3 r 3 Q P (r 1, r 2, r 3 ) bottleneck saturation flat O (0, 0) r 2 x
Q&A