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 7
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 Jakarta 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 Jakarta EE Application Model*
image:img/appmodel.png["Jakarta 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 Jakarta 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 7 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 7 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 7.

[[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.
