JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
Oracle GlassFish Server 3.1 Performance Tuning Guide
search filter icon
search icon

Document Information

Preface

1.  Overview of GlassFish Server Performance Tuning

2.  Tuning Your Application

3.  Tuning the GlassFish Server

4.  Tuning the Java Runtime System

5.  Tuning the Operating System and Platform

Server Scaling

Processors

Memory

Disk Space

Networking

UDP Buffer Sizes

To Determine an Optimal UDP Buffer Size

To Set the UDP Buffer Size on Linux Systems

Solaris 10 Platform-Specific Tuning Information

Tuning for the Solaris OS

Tuning Parameters

Sizing the Connection Hash Table

File Descriptor Setting

Tuning for Solaris on x86

File Descriptors

IP Stack Settings

Tuning for Linux platforms

Startup Files

File Descriptors

Virtual Memory

Network Interface

Disk I/O Settings

To tune disk I/O performance for non SCSI disks

TCP/IP Settings

To tune the TCP/IP settings

Tuning UltraSPARC CMT-Based Systems

Tuning Operating System and TCP Settings

Disk Configuration

Network Configuration

Index

Tuning for the Solaris OS

Tuning Parameters

Tuning Solaris TCP/IP settings benefits programs that open and close many sockets. Since the GlassFish Server operates with a small fixed set of connections, the performance gain might not be significant.

The following table shows Solaris tuning parameters that affect performance and scalability benchmarking. These values are examples of how to tune your system for best performance.

Table 5-1 Tuning Parameters for Solaris

Parameter
Scope
Default
Tuned Value
Comments
rlim_fd_max
/etc/system
65536
65536
Limit of process open file descriptors. Set to account for expected load (for associated sockets, files, and pipes if any).
rlim_fd_cur
/etc/system
1024
8192
sq_max_size
/etc/system
2
0
Controls streams driver queue size; setting to 0 makes it infinite so the performance runs won’t be hit by lack of buffer space. Set on clients too. Note that setting sq_max_size to 0 might not be optimal for production systems with high network traffic.
tcp_close_wait_interval
ndd /dev/tcp
240000
60000
Set on clients too.
tcp_time_wait_interval
ndd /dev/tcp
240000
60000
Set on clients too.
tcp_conn_req_max_q
ndd /dev/tcp
128
1024
tcp_conn_req_max_q0
ndd /dev/tcp
1024
4096
tcp_ip_abort_interval
ndd /dev/tcp
480000
60000
tcp_keepalive_interval
ndd /dev/tcp
7200000
900000
For high traffic web sites, lower this value.
tcp_rexmit_interval_initial
ndd /dev/tcp
3000
3000
If retransmission is greater than 30-40%, you should increase this value.
tcp_rexmit_interval_max
ndd /dev/tcp
240000
10000
tcp_rexmit_interval_min
ndd /dev/tcp
200
3000
tcp_smallest_anon_port
ndd /dev/tcp
32768
1024
Set on clients too.
tcp_slow_start_initial
ndd /dev/tcp
1
2
Slightly faster transmission of small amounts of data.
tcp_xmit_hiwat
ndd /dev/tcp
8129
32768
Size of transmit buffer.
tcp_recv_hiwat
ndd /dev/tcp
8129
32768
Size of receive buffer.
tcp_conn_hash_size
ndd /dev/tcp
512
8192
Size of connection hash table. See Sizing the Connection Hash Table.

Sizing the Connection Hash Table

The connection hash table keeps all the information for active TCP connections. Use the following command to get the size of the connection hash table:

ndd -get /dev/tcp tcp_conn_hash

This value does not limit the number of connections, but it can cause connection hashing to take longer. The default size is 512.

To make lookups more efficient, set the value to half of the number of concurrent TCP connections that are expected on the server. You can set this value only in /etc/system, and it becomes effective at boot time.

Use the following command to get the current number of TCP connections.

netstat -nP tcp|wc -l

File Descriptor Setting

On the Solaris OS, setting the maximum number of open files property using ulimit has the biggest impact on efforts to support the maximum number of RMI/IIOP clients.

To increase the hard limit, add the following command to /etc/system and reboot it once:

set rlim_fd_max = 8192

Verify this hard limit by using the following command:

ulimit -a -H

Once the above hard limit is set, increase the value of this property explicitly (up to this limit) using the following command:

ulimit -n 8192

Verify this limit by using the following command:

ulimit -a

For example, with the default ulimit of 64, a simple test driver can support only 25 concurrent clients, but with ulimit set to 8192, the same test driver can support 120 concurrent clients. The test driver spawned multiple threads, each of which performed a JNDI lookup and repeatedly called the same business method with a think (delay) time of 500 ms between business method calls, exchanging data of about 100 KB. These settings apply to RMI/IIOP clients on the Solaris OS.