Server User Manual
Table Of Contents
- Sun GlassFish Enterprise Server 2.1 Performance Tuning Guide
- Preface
- Overview of Enterprise Server Performance Tuning
- Tuning Your Application
- Java Programming Guidelines
- Java Server Page and Servlet Tuning
- EJB Performance Tuning
- Goals
- Monitoring EJB Components
- General Guidelines
- Using Local and Remote Interfaces
- Improving Performance of EJB Transactions
- Use Container-Managed Transactions
- Don’t Encompass User Input Time
- Identify Non-Transactional Methods
- Use TX_REQUIRED for Long Transaction Chains
- Use Lowest Cost Database Locking
- Use XA-Capable Data Sources Only When Needed
- Configure JDBC Resources as One-Phase Commit Resources
- Use the Least Expensive Transaction Attribute
- Using Special Techniques
- Tuning Tips for Specific Types of EJB Components
- JDBC and Database Access
- Tuning Message-Driven Beans
- Tuning the Enterprise Server
- Deployment Settings
- Logger Settings
- Web Container Settings
- EJB Container Settings
- Java Message Service Settings
- Transaction Service Settings
- HTTP Service Settings
- ORB Settings
- Thread Pool Settings
- Resources
- Tuning the Java Runtime System
- Tuning the Operating System and Platform
- Tuning for High-Availability
- Index

Tuning HTTP Listener Settings
Change HTTP listener settings in the Admin Console under Congurations > cong-name >
HTTP Service > HTTP Listeners > listener-name.
Network Address
For machines with only one network interface card (NIC), set the network address to the IP
address of the machine (for example, 192.18.80.23 instead of default 0.0.0.0). If you specify an IP
address other than 0.0.0.0, the server will make one less system call per connection. Specify an
IP address other than 0.0.0.0 for best possible performance. If the server has multiple NIC cards
then create multiple listeners for each NIC.
AcceptorThreads
The Acceptor Threads setting species how many threads you want in accept mode on a listen
socket at any time. It is a good practice to set this to less than or equal to the number of CPUs in
your system.
In the Enterprise Server, acceptor threads on an HTTP Listener accept connections and put
them onto a connection queue. Session threads then pick up connections from the queue and
service the requests. The server posts more session threads if required at the end of the request.
The policy for adding new threads is based on the connection queue state:
■
Each time a new connection is returned, the number of connections waiting in the queue
(the backlog of connections) is compared to the number of session threads already created.
If it is greater than the number of threads, more threads are scheduled to be added the next
time a request completes.
■
The previous backlog is tracked, so that n threads are added (n is the HTTP Service’s Thread
Increment parameter) until one of the following is true:
■
The number of threads increases over time.
■
The increase is greater than n.
■
The number of session threads minus the backlog is less than n.
To avoid creating too many threads when the backlog increases suddenly (such as the
startup of benchmark loads), the server makes the decision whether more threads are
needed only once every 16 or 32 connections, based on how many session threads already
exist.
HTTP Service Settings
Chapter 3 • Tuning the Enterprise Server 69










