|
Abstract
This paper discusses best practices for maximizing the
performance of enterprise
Java workloads. First, we introduce the importance of
performance of enterprise
Java applications. We then describe our top-down,
data-driven, and closed-loop approach to characterize where the
problems are. We examine the performance of the
software/hardware stack, first from the system-level
perspective (topology, I/O, network), then from the top
software layer (application level), through the middle layer
(Java Virtual Machine), and down to the platform layer
(processor, memory). We conclude by summarizing our
recommendations for attaining the best performance on
enterprise
Java applications.
Introduction
Managed runtime environments such as
Java have proven to be a very attractive platform for
developing and deploying enterprise applications. Accessible
object orientation, programming safety, and automatic memory
management features deliver a highly productive foundation for
business application development. In addition, the platform
independence offered by managed runtime environments provides
unprecedented investment protection, which is appealing to
Information Technology (IT) managers, as enterprise
applications tend to have a long life span.
Advanced Just-In-Time (JIT) compilation, memory management,
and garbage collection technologies have effectively addressed
initial concerns raised about the poor performance of
Java-based applications. Today's
Java Virtual Machines (JVM) take full advantage of a
variety of target platforms, and keep up to date with the
performance of the latest hardware and operating system
advances as they evolve over time.
As Java[1] gained popularity in the development of
server-based applications, standardized, robust, and scalable
application support frameworks became a must. Enter
Java 2 Enterprise Edition (J2EE)[2], a comprehensive
specification for application servers, a class of system
software designed to relieve application developers from
creating and re-creating the "plumbing" necessary to support
enterprise applications, including component models and
life-cycles, object models, database access, security,
transactional integrity, and safe multi-threading.
Figure 1: Performance optimization considerations at the three
levels of the top-down stack: system-level, application-level,
and machine-level
Since the emergence of J2EE, application servers have grown
to become important IT infrastructure components of many
enterprises[3]. They support complex, multi-tier configurations
with well-defined separation of functions (user interface,
business processing, and database access), often including
multiple servers arranged in clustered configurations, as well
as back-end relational database management systems and legacy
applications, integrated in the overall design.
As applications move from development to production,
performance becomes a critical life-cycle requirement.
Applications must not only meet stringent performance
requirements upon deployment, but they must be able to
gracefully scale with varying usage patterns and increased
demand. Performance optimization and management in this
environment is a difficult task, as performance is affected by
many interrelated elements.
In this paper, we describe an iterative, data-driven,
top-down methodology and the tools needed to systematically
optimize the performance of application-server-based
applications. We also describe performance optimization
considerations at the three levels of the top-down stack:
system-level, application-level and machine-level (see Figure
1).
At the system level, we identify performance and scalability
barriers such as input/output (I/O), operating system and
database bottlenecks, and we discuss techniques to overcome
those barriers. At the application level, we discuss
application design considerations and application server
tuning. At the machine level, we discuss JVM implementations
and hardware-level performance considerations such as processor
frequency, cache sizes, and multi-processor scaling.
Throughout the paper, we introduce several case studies to
illustrate the application of the techniques presented.
More on this article can be found here.
 Printer friendly PDF |