Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test
-
Upload
softwarecentral -
Category
Documents
-
view
1.190 -
download
0
description
Transcript of Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test
![Page 1: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/1.jpg)
BOF-1303, EJB™ Scalability/Load Test1
Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test
Ted [email protected] Software, Inc.www.rswsoftware.com
![Page 2: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/2.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/2
Agenda
• The Current Landscape: Performance Testing & EJBs
• Example Case Study using EJB-test• Survey EJB Performance Test
Strategies & Techniques
![Page 3: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/3.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/3
Performance Testing & EJBs
Presentation tier Data tierMiddle tier
: web client
: webclient
: client
: EJB server
: webclient
: EJB
: web server
: EJB
:Internet
: database server
: client
: client
![Page 4: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/4.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/4
Our "OrderEntry" Example
WebLogic 5.1.0 : EJB server
Cloudscape : database
server
orderentry.jar: Session EJB
product.jar: Entity EJB
vendor.jar: Entity EJB
customer.jar: Entity EJB
<<requests>>
<<responses>>
![Page 5: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/5.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/5
EJB-test
Strategy:1. Create Java driver "client" for EJB under test
• Goal: time method requests on EJB's interface (business methods)
• Automate code generation through Java Reflection API & EJB code patterns
2. Simulate load using that client• Run the client in multithreaded load generator• Map in data from tables (or use generated data)
3. Aggregate log data• Response times• Exceptions• Data: actual vs. expected
![Page 6: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/6.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/6
Select the EJB to be tested from the
Jars in your classpath
![Page 7: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/7.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/7
EJB-test automatically
generates a Java Test Client specific to the
selected EJB and optimized for WebLogic or WebSphere
![Page 8: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/8.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/8
The automatically generated Java Test
Client times the method calls to the
selected EJB
![Page 9: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/9.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/9
Define the load to execute and run the
test.
![Page 10: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/10.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/10
Select the results to view
![Page 11: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/11.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/11
Select the response time data to view
![Page 12: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/12.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/12
Compare 2 test executions
![Page 13: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/13.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/13
OEVendor vs. OELoad
• A simple response time comparison reveals which bean is the bottleneck
• Potential sources of bottleneck:– Design– Deployment– Environment
![Page 14: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/14.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/14
Comparing EJB Deployments
OEProduct
ejb-jar.xml:37 <trans-attribute>Supports
OEVendor
ejb-jar.xml:37 <trans-attribute>Required
weblogic-cmp-rdbms-jar.xml:29 <transaction-isolation>TRANSACTION_SERIALIZABLE
![Page 15: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/15.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/15
Strategies & Techniques
• Load Testing• Data-driven Load Testing• Multithreaded & Multi-JVM Loads• Distributed Load Testing• Scenario (Multi-bean) Testing• Other Interesting EJB Tests
![Page 16: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/16.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/16
EJB Load Testing
• Objective – Measure EJB's ability to server increasing
number of client requests– Most Common Metrics
• Transactions per Second (TPS)—throughput• Response time—client-side
– Other Interesting Metrics• Error rate (exceptions)• Correctness (expected vs. actual values)• Method-level response times
![Page 17: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/17.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/17
Data-driven EJB Load Testing
• Objective – Test EJBs with realistic data sets
• Approach– Particular data combinations often comprise a
"use-case"– Data set triggers business rules or call graphs
of interest– Automation Leverage: Data from CSV "maps"
into a static client driver• Hurdles
– Marrying clients to data sets
![Page 18: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/18.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/18
EJB Load Testing System Topology
: client host
B : test client
Data tierMiddle tier
: EJB server
A : EJB
: database server
Test client threads each
time their calls to the EJB's
methods
B : client thread
B : EJB
![Page 19: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/19.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/19
Multithreaded & Multi-JVM Load Generation
• Objective– Better simulation of load
• Approach– Multithreaded load generation simulates a
multi-client load (concurrent requests)– Dividing load across JVMs creates multiple
socket connections to server
• Hurdles– Thread safety & execution coordination
![Page 20: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/20.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/20
Distributed Load Testing
• Objective– Generate a load simulation that is large
enough• Approach
– Distribute client JVMs across multiple machines
• Hurdles– Still have thread safety and client coordination– Aggregating result logs– Client execution environment
![Page 21: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/21.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/21
Distributed Load Testing Nirvana
: EJB-test server
EJB Servers
: EJB server
: EJB
: EJB
Client Hosts
: client host
: test client
: test client
: test client
: client host
: test client
: test client
: test client
: client host
: test client
: test client
: test client
: EJB server
: EJB
: EJB
EJB-test
Servlet engine
AutoGen™ code
generator
SyncLoad ™
Desktops
: NT host
: browser
: Solaris host
: browser
: NT host
: browser
![Page 22: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/22.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/22
Other Interesting EJB Tests
• Stress Testing• Mixed/Randomized Loads• Scenario Testing• Security Testing• Configuration Testing
![Page 23: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/23.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/23
Anatomy of an EJB Test Client Driver
2 Lookup Home Interface in JNDI Tree
java.lang.Object homeObject = jndi.lookup("OECustomer");com.testmybeans.customer.CustomerHome home = (com.testmybeans.customer.CustomerHome) javax.rmi.PortableRemoteObject.narrow((org.omg.CORBA.Object) homeObject, com.testmybeans.customer.CustomerHome.class);
java.lang.Object homeObject = jndi.lookup("OECustomer");com.testmybeans.customer.CustomerHome home = (com.testmybeans.customer.CustomerHome) javax.rmi.PortableRemoteObject.narrow((org.omg.CORBA.Object) homeObject, com.testmybeans.customer.CustomerHome.class);
1
Get JNDI InitialContext
//[WebSphere302 getInitialContext] public static Context getInitialContext(String urlName) throws javax.naming.NamingException { Hashtable env = new Hashtable(); env.put(Context.PROVIDER_URL, "iiop://" + urlName); env.put("java.naming.factory.initial", "com.ibm.ejs.ns.jndi.CNInitialContextFactory"); env.put("javax.naming.Context.INITIAL_CONTEXT_FACTORY", "com.ibm.ejs.ns.jndi.CNInitialContextFactory"); InitialContext ctx = new InitialContext(env); return ctx; }
//[WebSphere302 getInitialContext] public static Context getInitialContext(String urlName) throws javax.naming.NamingException { Hashtable env = new Hashtable(); env.put(Context.PROVIDER_URL, "iiop://" + urlName); env.put("java.naming.factory.initial", "com.ibm.ejs.ns.jndi.CNInitialContextFactory"); env.put("javax.naming.Context.INITIAL_CONTEXT_FACTORY", "com.ibm.ejs.ns.jndi.CNInitialContextFactory"); InitialContext ctx = new InitialContext(env); return ctx; }
![Page 24: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/24.jpg)
BOF-1303, EJB™ Scalability/Load Test [email protected] http://www.ejbtest.com/24
Anatomy of an EJB Test Client Driver
3
Get a Bean Instance
if (m_ds.getRule().equals("Data table")) h = home.findByPrimaryKey(pkey0);else h = home.create(arg0);
if (m_ds.getRule().equals("Data table")) h = home.findByPrimaryKey(pkey0);else h = home.create(arg0);
5
Log Results
timer.start (m_cSetters, "setCustomerAddress", sValue);h.setCustomerAddress(sValue);timer.stopAndLog();
timer.start (m_cSetters, "setCustomerAddress", sValue);h.setCustomerAddress(sValue);timer.stopAndLog();4
timer.start(m_cSetters, "setCustomerAddress", sValue);h.setCustomerAddress(sValue);timer.stopAndLog();
timer.start(m_cSetters, "setCustomerAddress", sValue);h.setCustomerAddress(sValue);timer.stopAndLog();
Exercise Bean's Business Methods
![Page 25: Enterprise JavaBeans™ (EJB™) Architecture Scalability/Load Test](https://reader033.fdocuments.us/reader033/viewer/2022061205/54809bb4b37959a22b8b5b04/html5/thumbnails/25.jpg)
BOF-1303, EJB™ Scalability/Load Test25