PERFORMANCE MODELING AND EVALUATION OF LARGE SCALE J2EE APPLICATIONS
Modern J2EE applications are typically based on highly distributed architectures comprising multiple components deployed in a clustered environment. This makes it difﬁcult for deployers to estimate the capacity of the deployment environment needed to guarantee that Service Level Agreements are met. This paper looks at the different approaches to this problem and discusses the difﬁculties that arise when one tries to apply them to large, realworld systems. The authors study a realistic J2EE application (the SPECjAppServer2002 benchmark) and show how analytical models can be exploited for capacity planning.
Over the past couple of years, the Java 2 Enterprise Edition Platform (J2EE) has established itself as major technology for developing modern e-business solutions. This success is largely due to the fact that J2EE is not a proprietary product, but rather an industry standard, developed as the result of a large industry initiative led by Sun Microsystems, Inc. The goal of this initiative was to establish a standard middleware framework for developing enterprise-class distributed applications in Java. Over 30 software vendors have participated in this effort and have come up with their own implementations of J2EE, the latter being commonly referred to as J2EE Application Servers. The aim of J2EE is to enable developers to quickly and easily build scalable, reliable and secure applications without having to develop their own complex middleware services. Developers can concentrate on the business and application logic and rely on the J2EE Application Server to provide the infrastructure needed for scalability and performance. One of the key services within this infrastructure, provided by most J2EE application servers, is clustering. A cluster is a group of servers that act in a coordinated fashion to provide access to a set of applications in a scalable manner. This work was partially funded by BEA Systems, Inc. as part of the project “Capacity Planning and Performance Analysis of J2EE Applications and Web Services” and the Deutsche Forschungsgemeinschaft (DFG) as part of the PhD program “Enabling Technologies for E-Commerce” at Darmstadt University of Technology. When a J2EE application is deployed in a clustered environment, its components are transparently replicated on the servers participating in the cluster. Client requests are then load-balanced across cluster nodes and in this way scalability can be achieved. Modern J2EE applications are typically based on highly distributed, multi-tiered architectures comprising multiple components deployed in a clustered environment. The inherent complexity of the latter makes it difﬁcult for system deployers to estimate the size and capacity of the deployment environment needed to guarantee that Service Level Agreements (SLAs) are met. Deployers are often faced with questions such as the follo
What hardware and software resources are needed
to guarantee that SLAs are met? More speciﬁcally,
how many application servers need to be included
the clusters used and how fast should they be?
What are the maximum load levels that the system will be able to handle in the production environment?
What would the average response time, throughput and resource utilization be under the expected
Which components have the largest effect on the
overall system performance and are they potential