type=page
status=published
title=Overview of GlassFish Server Performance Tuning
next=tuning-apps.html
prev=preface.html
~~~~~~

Overview of GlassFish Server Performance Tuning
===============================================

[[GSPTG00003]][[giekg]]


[[overview-of-glassfish-server-performance-tuning]]
1 Overview of GlassFish Server Performance Tuning
-------------------------------------------------

You can significantly improve performance of the Oracle GlassFish Server
and of applications deployed to it by adjusting a few deployment and
server configuration settings. However, it is important to understand
the environment and performance goals. An optimal configuration for a
production environment might not be optimal for a development
environment.

The following topics are addressed here:

* link:#abear[Process Overview]
* link:#abeat[Understanding Operational Requirements]
* link:#abeba[General Tuning Concepts]
* link:#abebd[Further Information]

[[abear]][[GSPTG00048]][[process-overview]]

Process Overview
~~~~~~~~~~~~~~~~

The following table outlines the overall GlassFish Server 4.0
administration process, and shows where performance tuning fits in the
sequence.

[[sthref4]][[gacmh]]

Table 1-1 Performance Tuning Roadmap

[options="header",]
|===
|Step |Description of Task |Location of Instructions
|1
|Design: Decide on the high-availability topology and set up GlassFish Server.
a|link:../deployment-planning-guide/toc.html#GSPLG[
GlassFish Server Open Source Edition Deployment Planning Guide]

|2
|Capacity Planning: Make sure the systems have sufficient resources to perform well.
a|link:../deployment-planning-guide/toc.html#GSPLG[
GlassFish Server Open Source Edition Deployment Planning Guide]

|3
|Installation: Configure your DAS, clusters, and clustered server instances.
a|link:../installation-guide/toc.html#GSING[
GlassFish Server Open Source Edition Installation Guide]

|4
|Deployment: Install and run your applications.
Familiarize yourself with how to configure and administer the GlassFish Server.
a|The following books:

* link:../application-deployment-guide/toc.html#GSDPG[
GlassFish Server Open Source Edition Application Deployment Guide]
* link:../administration-guide/toc.html#GSADG[
GlassFish Server Open Source Edition Administration Guide]

|5
|High Availability Configuration: Configuring your DAS, clusters, and
clustered server instances for high availability and failover
a|link:../ha-administration-guide/toc.html#GSHAG[
GlassFish Server Open Source Edition High Availability Administration Guide]

|6
a|Performance Tuning: Tune the following items:

* Applications
* GlassFish Server
* Java Runtime System
* Operating system and platform

a|The following chapters:

* link:tuning-apps.html#abebe[Tuning Your Application]
* link:tuning-glassfish.html#abedn[Tuning the GlassFish Server]
* link:tuning-java.html#abeia[Tuning the Java Runtime System]
* link:tuning-os.html#abeir[Tuning the Operating System and Platform]
|===


[[abeas]][[GSPTG00035]][[performance-tuning-sequence]]

Performance Tuning Sequence
^^^^^^^^^^^^^^^^^^^^^^^^^^^

Application developers should tune applications prior to production use.
Tuning applications often produces dramatic performance improvements.
System administrators perform the remaining steps in the following list
after tuning the application, or when application tuning has to wait and
you want to improve performance as much as possible in the meantime.

Ideally, follow this sequence of steps when you are tuning performance:

1. Tune your application, described in
link:tuning-apps.html#abebe[Tuning Your Application].
2. Tune the server, described in link:tuning-glassfish.html#abedn[Tuning
the GlassFish Server].
3. Tune the Java runtime system, described in
link:tuning-java.html#abeia[Tuning the Java Runtime System].
4. Tune the operating system, described in
link:tuning-os.html#abeir[Tuning the Operating System and Platform].

[[abeat]][[GSPTG00049]][[understanding-operational-requirements]]

Understanding Operational Requirements
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Before you begin to deploy and tune your application on the GlassFish
Server, it is important to clearly define the operational environment.
The operational environment is determined by high-level constraints and
requirements such as:

* link:#abeau[Application Architecture]
* link:#abeav[Security Requirements]
* link:#gkvjf[High Availability Clustering, Load Balancing, and Failover]
* link:#abeay[Hardware Resources]
* link:#abeaz[Administration]

[[abeau]][[GSPTG00154]][[application-architecture]]

Application Architecture
^^^^^^^^^^^^^^^^^^^^^^^^

The Java EE Application model, as shown in the following figure, is very
flexible; allowing the application architect to split application logic
functionally into many tiers. The presentation layer is typically
implemented using servlets and JSP technology and executes in the web
container.

[[GSPTG00001]][[gacmj]]


.*Figure 1-1 Java EE Application Model*
image:img/appmodel.png["Java EE Application Mode"]


Moderately complex enterprise applications can be developed entirely
using servlets and JSP technology. More complex business applications
often use Enterprise JavaBeans (EJB) components. The GlassFish Server
integrates the Web and EJB containers in a single process. Local access
to EJB components from servlets is very efficient. However, some
application deployments may require EJB components to execute in a
separate process; and be accessible from standalone client applications
as well as servlets. Based on the application architecture, the server
administrator can employ the GlassFish Server in multiple tiers, or
simply host both the presentation and business logic on a single tier.

It is important to understand the application architecture before
designing a new GlassFish Server deployment, and when deploying a new
business application to an existing application server deployment.

[[abeav]][[GSPTG00155]][[security-requirements]]

Security Requirements
^^^^^^^^^^^^^^^^^^^^^

Most business applications require security. This section discusses
security considerations and decisions.

[[abeaw]][[GSPTG00080]][[user-authentication-and-authorization]]

User Authentication and Authorization
+++++++++++++++++++++++++++++++++++++

Application users must be authenticated. The GlassFish Server provides a
number of choices for user authentication, including file-based,
administration, LDAP, certificate, JDBC, digest, PAM, Solaris, and
custom realms.

The default file based security realm is suitable for developer
environments, where new applications are developed and tested. At
deployment time, the server administrator can choose between the
Lighweight Directory Access Protocol (LDAP) or Solaris security realms.
Many large enterprises use LDAP-based directory servers to maintain
employee and customer profiles. Small to medium enterprises that do not
already use a directory server may find it advantageous to leverage
investment in Solaris security infrastructure.

For more information on security realms, see
"link:../security-guide/user-security.html#GSSCG00151[Administering Authentication Realms]" in GlassFish
Server Open Source Edition Security Guide.

The type of authentication mechanism chosen may require additional
hardware for the deployment. Typically a directory server executes on a
separate server, and may also require a backup for replication and high
availability. Refer to the
http://www.oracle.com/us/products/middleware/identity-management/oracle-directory-services/index.html[Oracle
Java System Directory Server]
(`http://www.oracle.com/us/products/middleware/identity-management/oracle-directory-services/index.html`)
documentation for more information on deployment, sizing, and
availability guidelines.

An authenticated user's access to application functions may also need
authorization checks. If the application uses the role-based Java EE
authorization checks, the application server performs some additional
checking, which incurs additional overheads. When you perform capacity
planning, you must take this additional overhead into account.

[[abeax]][[GSPTG00081]][[encryption]]

Encryption
++++++++++

For security reasons, sensitive user inputs and application output must
be encrypted. Most business-oriented web applications encrypt all or
some of the communication flow between the browser and GlassFish Server.
Online shopping applications encrypt traffic when the user is completing
a purchase or supplying private data. Portal applications such as news
and media typically do not employ encryption. Secure Sockets Layer (SSL)
is the most common security framework, and is supported by many browsers
and application servers.

The GlassFish Server supports SSL 2.0 and 3.0 and contains software
support for various cipher suites. It also supports integration of
hardware encryption cards for even higher performance. Security
considerations, particularly when using the integrated software
encryption, will impact hardware sizing and capacity planning.

Consider the following when assessing the encryption needs for a deployment:

* What is the nature of the applications with respect to security? Do
they encrypt all or only a part of the application inputs and output?
What percentage of the information needs to be securely transmitted?
* Are the applications going to be deployed on an application server
that is directly connected to the Internet? Will a web server exist in a
demilitarized zone (DMZ) separate from the application server tier and
backend enterprise systems?
+
A DMZ-style deployment is recommended for high security. It is also
useful when the application has a significant amount of static text and
image content and some business logic that executes on the GlassFish
Server, behind the most secure firewall. GlassFish Server provides
secure reverse proxy plugins to enable integration with popular web
servers. The GlassFish Server can also be deployed and used as a web
server in DMZ.

* Is encryption required between the web servers in the DMZ and
application servers in the next tier? The reverse proxy plugins supplied
with GlassFish Server support SSL encryption between the web server and
application server tier. If SSL is enabled, hardware capacity planning
must be take into account the encryption policy and mechanisms.

* If software encryption is to be employed:

** What is the expected performance overhead for every tier in the
system, given the security requirements?

** What are the performance and throughput characteristics of various
choices?

For information on how to encrypt the communication between web servers
and GlassFish Server, see "link:../security-guide/message-security.html#GSSCG00037[Administering Message
Security]" in GlassFish Server Open Source Edition Security Guide.

[[gkvjf]][[GSPTG00156]][[high-availability-clustering-load-balancing-and-failover]]

High Availability Clustering, Load Balancing, and Failover
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

GlassFish Server 4.0 enables multiple GlassFish Server instances to be
clustered to provide high availability through failure protection,
scalability, and load balancing.

High availability applications and services provide their functionality
continuously, regardless of hardware and software failures. To make such
reliability possible, GlassFish Server 4.0 provides mechanisms for
maintaining application state data between clustered GlassFish Server
instances. Application state data, such as HTTP session data, stateful
EJB sessions, and dynamic cache information, is replicated in real time
across server instances. If any one server instance goes down, the
session state is available to the next failover server, resulting in
minimum application downtime and enhanced transactional security.

GlassFish Server provides the following high availability features:

* High Availability Session Persistence
* High Availability Java Message Service
* RMI-IIOP Load Balancing and Failover

See link:tuning-java.html#glaat[Tuning High Availability Persistence] for
high availability persistence tuning recommendations.

See the link:../ha-administration-guide/toc.html#GSHAG[GlassFish Server Open Source Edition High
Availability Administration Guide] for complete information about
configuring high availability clustering, load balancing, and failover
features in GlassFish Server 4.0.

[[abeay]][[GSPTG00157]][[hardware-resources]]

Hardware Resources
^^^^^^^^^^^^^^^^^^

The type and quantity of hardware resources available greatly influence
performance tuning and site planning.

GlassFish Server provides excellent vertical scalability. It can scale
to efficiently utilize multiple high-performance CPUs, using just one
application server process. A smaller number of application server
instances makes maintenance easier and administration less expensive.
Also, deploying several related applications on fewer application
servers can improve performance, due to better data locality, and reuse
of cached data between co-located applications. Such servers must also
contain large amounts of memory, disk space, and network capacity to
cope with increased load.

GlassFish Server can also be deployed on large "farms" of relatively
modest hardware units. Business applications can be partitioned across
various server instances. Using one or more external load balancers can
efficiently spread user access across all the application server
instances. A horizontal scaling approach may improve availability, lower
hardware costs and is suitable for some types of applications. However,
this approach requires administration of more application server
instances and hardware nodes.

[[abeaz]][[GSPTG00158]][[administration]]

Administration
^^^^^^^^^^^^^^

A single GlassFish Server installation on a server can encompass
multiple instances. A group of one or more instances that are
administered by a single Administration Server is called a domain.
Grouping server instances into domains permits different people to
independently administer the groups.

You can use a single-instance domain to create a "sandbox" for a
particular developer and environment. In this scenario, each developer
administers his or her own application server, without interfering with
other application server domains. A small development group may choose
to create multiple instances in a shared administrative domain for
collaborative development.

In a deployment environment, an administrator can create domains based
on application and business function. For example, internal Human
Resources applications may be hosted on one or more servers in one
Administrative domain, while external customer applications are hosted
on several administrative domains in a server farm.

GlassFish Server supports virtual server capability for web
applications. For example, a web application hosting service provider
can host different URL domains on a single GlassFish Server process for
efficient administration.

For detailed information on administration, see the
link:../administration-guide/toc.html#GSADG[GlassFish Server Open Source Edition Administration Guide].

[[abeba]][[GSPTG00050]][[general-tuning-concepts]]

General Tuning Concepts
~~~~~~~~~~~~~~~~~~~~~~~

Some key concepts that affect performance tuning are:

* User load
* Application scalability
* Margins of safety

The following table describes these concepts, and how they are measured
in practice. The left most column describes the general concept, the
second column gives the practical ramifications of the concept, the
third column describes the measurements, and the right most column
describes the value sources.

[[sthref6]][[gacmp]]

Table 1-2 Factors That Affect Performance

[width="100%",cols="<14%,<13%,<26%,<47%",options="header",]
|===
|Concept |In practice |Measurement |Value sources

|User Load
|Concurrent sessions at peak load
a|Transactions Per Minute (TPM)

Web Interactions Per Second (WIPS)

a|(Max. number of concurrent users) * (expected response time) / (time
between clicks)

Example:

(100 users * 2 sec) / 10 sec = 20

|Application Scalability
|Transaction rate measured on one CPU
|TPM or WIPS
|Measured from workload benchmark. Perform at each tier.

|Vertical scalability
|Increase in performance from additional CPUs
|Percentage gain per additional CPU
|Based on curve fitting from benchmark.
Perform tests while gradually increasing the number of CPUs.
Identify the "knee" of the curve, where additional CPUs are providing
uneconomical gains in performance. Requires tuning as described in this
guide. Perform at each tier and iterate if necessary. Stop here if this
meets performance requirements.

|Horizontal scalability
|Increase in performance from additional servers
|Percentage gain per additional server process and/or hardware node.
|Use a well-tuned single application server instance, as in previous step.
Measure how much each additional server instance and hardware node
improves performance.

|Safety Margins
|High availability requirements
|If the system must cope with failures, size the system to meet
performance requirements assuming that one or more application server
instances are non functional
|Different equations used if high availability is required.

| +
|Excess capacity for unexpected peaks
|It is desirable to operate a
server at less than its benchmarked peak, for some safety margin
|80% system capacity utilization at peak loads may work for most installations.
Measure your deployment under real and simulated peak loads.
|===


[[abebb]][[GSPTG00159]][[capacity-planning]]

Capacity Planning
^^^^^^^^^^^^^^^^^

The previous discussion guides you towards defining a deployment
architecture. However, you determine the actual size of the deployment
by a process called capacity planning. Capacity planning enables you to
predict:

* The performance capacity of a particular hardware configuration.
* The hardware resources required to sustain specified application load
and performance.

You can estimate these values through careful performance benchmarking,
using an application with realistic data sets and workloads.

[[gacmz]][[GSPTG00036]][[to-determine-capacity]]

To Determine Capacity
+++++++++++++++++++++

1. Determine performance on a single CPU.
+
First determine the largest load that a single processor can sustain.
You can obtain this figure by measuring the performance of the
application on a single-processor machine. Either leverage the
performance numbers of an existing application with similar processing
characteristics or, ideally, use the actual application and workload in
a testing environment. Make sure that the application and data resources
are tiered exactly as they would be in the final deployment.
2. [[CEGHGCGI]]
Determine vertical scalability.

Determine how much additional performance you gain when you add
processors. That is, you are indirectly measuring the amount of shared
resource contention that occurs on the server for a specific workload.
Either obtain this information based on additional load testing of the
application on a multiprocessor system, or leverage existing information
from a similar application that has already been load tested.

Running a series of performance tests on one to eight CPUs, in
incremental steps, generally provides a sense of the vertical
scalability characteristics of the system. Be sure to properly tune the
application, GlassFish Server, backend database resources, and operating
system so that they do not skew the results.
3. Determine horizontal scalability.
+
If sufficiently powerful hardware resources are available, a single
hardware node may meet the performance requirements. However for better
availability, you can cluster two or more systems. Employing external
load balancers and workload simulation, determine the performance
benefits of replicating one well-tuned application server node, as
determined in step link:#CEGHGCGI[2].

[[abebc]][[GSPTG00160]][[user-expectations]]

User Expectations
^^^^^^^^^^^^^^^^^

Application end-users generally have some performance expectations.
Often you can numerically quantify them. To ensure that customer needs
are met, you must understand these expectations clearly, and use them in
capacity planning.

Consider the following questions regarding performance expectations:

* What do users expect the average response times to be for various
interactions with the application? What are the most frequent
interactions? Are there any extremely time-critical interactions? What
is the length of each transaction, including think time? In many cases,
you may need to perform empirical user studies to get good estimates.
* What are the anticipated steady-state and peak user loads? Are there
are any particular times of the day, week, or year when you observe or
expect to observe load peaks? While there may be several million
registered customers for an online business, at any one time only a
fraction of them are logged in and performing business transactions. A
common mistake during capacity planning is to use the total size of
customer population as the basis and not the average and peak numbers
for concurrent users. The number of concurrent users also may exhibit
patterns over time.
* What is the average and peak amount of data transferred per request?
This value is also application-specific. Good estimates for content
size, combined with other usage patterns, will help you anticipate
network capacity needs.
* What is the expected growth in user load over the next year? Planning
ahead for the future will help avoid crisis situations and system
downtimes for upgrades.

[[abebd]][[GSPTG00051]][[further-information]]

Further Information
~~~~~~~~~~~~~~~~~~~

* For more information on Java performance, see
http://java.sun.com/docs/performance[Java Performance Documentation]
(`http://java.sun.com/docs/performance`) and
http://java.sun.com/blueprints/performance/index.html[Java Performance
BluePrints] (`http://java.sun.com/blueprints/performance/index.html`).
* For more information about performance tuning for high availability
configurations, see the link:../ha-administration-guide/toc.html#GSHAG[GlassFish Server Open Source Edition
High Availability Administration Guide].
* For complete information about using the Performance Tuning features
available through the GlassFish Server Administration Console, refer to
the Administration Console online help.
* For details on optimizing EJB components, see
http://java.sun.com/developer/technicalArticles/ebeans/sevenrules/[Seven
Rules for Optimizing Entity Beans]
(`http://java.sun.com/developer/technicalArticles/ebeans/sevenrules/`)
* For details on profiling, see "link:../application-development-guide/setting-up-dev-env.html#GSDVG00341[Profiling Tools]" in
GlassFish Server Open Source Edition Application Development Guide.
* To view a demonstration video showing how to use the GlassFish Server
Performance Tuner, see the
http://www.youtube.com/watch?v=FavsE2pzAjc[Oracle GlassFish Server 3.1 -
Performance Tuner demo] (`http://www.youtube.com/watch?v=FavsE2pzAjc`).
* To find additional Performance Tuning development information, see the
http://blogs.oracle.com/jenblog/entry/performance_tuner_in_oracle_glassfish[Performance
Tuner in Oracle GlassFish Server 3.1]
(`http://blogs.oracle.com/jenblog/entry/performance_tuner_in_oracle_glassfish`)
blog.
