Performance and Tuning
Operating System Tuning
Tune your operating system according to your operating system documentation. For Windows platforms, the default settings are usually sufficient. However, the Solaris and Linux platforms usually need to be tuned appropriately. The following sections describe issues related to operating system performance:
- Basic OS Tuning Concepts
- Solaris Tuning Parameters
- Linux Tuning Parameters
- HP-UX Tuning Parameters
- Windows Tuning Parameters
- Other Operating System Tuning Information
Basic OS Tuning Concepts
Proper OS tuning improves system performance by preventing the occurrence of error conditions. Operating system error conditions always degrade performance. Typically most error conditions are TCP tuning parameter related and are caused by the operating system's failure to release old sockets from a close_wait call. Common errors are “connection refused”, “too many open files” on the server-side, and “address in use: connect” on the client-side.
In most cases, these errors can be prevented by adjusting the TCP wait_time value and the TCP queue size. Although users often find the need to make adjustments when using tunnelling, OS tuning may be necessary for any protocol under sufficiently heavy loads. The following sections provide information on tuning parameters for various operating systems.
Although the following sections provide information on tuning parameters that Oracle has determined can enhance application performance, Oracle recommends following your OS vendor's tuning documentation for tuning parameter values and monitoring performance changes when changing tuning parameters in your local environment.
Note: Another resource which may provide helpful tuning information is the All SPEC jAppServer2004 Results Published by SPEC web page. It provides the OS tuning parameters used for each reported WebLogic Server benchmark.
Solaris Tuning Parameters
The following sections provide information on tuning Solaris operating systems:
- Setting TCP Parameters With the ndd Command
- Setting Parameters In the /etc/system File
- CE Gigabit Network Card Settings
- Additional Solaris Tuning Information
The following sections list common parameters that can enhance performance. These lists are not all inclusive and parameters may be different, have different defaults, or be out of date for different Solaris operating systems. For more information, see Additional Solaris Tuning Information.
Setting TCP Parameters With the ndd Command
This section lists important TCP tuning parameters that when tuned, can enhance application performance:
- /dev/tcp tcp_time_wait_interval
- /dev/tcp tcp_conn_req_max_q
- /dev/tcp tcp_conn_req_max_q0
- /dev/tcp tcp_ip_abort_interval
- /dev/tcp tcp_keepalive_interval
- /dev/tcp tcp_rexmit_interval_initial
- /dev/tcp tcp_rexmit_interval_max
- /dev/tcp tcp_rexmit_interval_min
- /dev/tcp tcp_smallest_anon_port
- /dev/tcp tcp_xmit_hiwat
- /dev/tcp tcp_recv_hiwat
- /dev/ce instance
- /dev/ce rx_intr_time
Tip: Use the netstat -s -P tcp command to view all available TCP parameters.
Set TCP-related tuning parameters using the ndd command, as demonstrated in the following example:
Note: ndd -set /dev/tcp tcp_conn_req_max_q 16384
Setting Parameters In the /etc/system File
This section lists important /etc/system file tuning parameters that when tuned, can enhance application performance. Each socket connection to the server consumes a file descriptor. To optimize socket performance, you may need to configure your operating system to have the appropriate number of file descriptors. Therefore, you should change the default file descriptor limits, as well as the hash table size and other tuning parameters in the /etc/system file.
You must reboot your machine anytime you modify /etc/system parameters.
- set rlim_fd_cur
- set rlim_fd_max
- set tcp:tcp_conn_hash_size (Solaris 8 and 9)
- set ip:ipcl_conn_hash_size (Solaris 10)
- set shmsys:shminfo_shmmax Note: This should only be set for machines that have at least 4 GB RAM or higher.
- set autoup
- set tune_t_fsflushr
CE Gigabit Network Card Settings
This section lists important CE Gigabit Network Card tuning parameters that when tuned, can enhance application performance:
- set ce:ce_bcopy_thresh
- set ce:ce_dvma_thresh
- set ce:ce_taskq_disable
- set ce:ce_ring_size
- set ce:ce_comp_ring_size
- set ce:ce_tx_ring_size
Additional Solaris Tuning Information
For more information about Solaris tuning options, see:
- Solaris Tunable Parameters Reference Manual (Solaris 8)
- Solaris Tunable Parameters Reference Manual (Solaris 9)
- Solaris Tunable Parameters Reference Manual (Solaris 10)
Linux Tuning Parameters
This section lists important Linux tuning parameters that when adjusted, can enhance application performance:
- /sbin/ifconfig lo mtu
- kernel.msgmni
- kernel.sem
- fs.file-max
- kernel.shmmax
- net.ipv4.tcp_max_syn_backlog
For more information about Linux tuning, you should consult your Linux vendor's documentation. Also, the Ipsysctl Tutorial 1.0.4 describes all of the IP options provided by Linux.
HP-UX Tuning Parameters
This section lists important HP-UX operating system tuning parameters that when adjusted, can enhance application performance:
- tcp_conn_req_max
- tcp_xmit_hiwater_def
- tcp_ip_abort_interval
- tcp_rexmit_interval_initial
- tcp_keepalive_interval
For more HP-UX tuning information, see the Tunable Kernel Parameters reference documentation.
Windows Tuning Parameters
For Windows platforms, the default settings are usually sufficient. However, under sufficiently heavy loads it may be necessary to adjust the MaxUserPort and TcpTimedWaitDelay. These parameters determine the availability of user ports requested by an application.
By default, ephemeral (that is, short-lived) ports are allocated between the values of 1024 and 5000 inclusive using the MaxUserPort parameter. The TcpTimedWaitDelay parameter, which controls the amount of time the OS waits to reclaim a port after an application closes a TCP connection, has a default value of 4 minutes. During a heavy loads, these limits may be exceeded resulting in an address in use: connect exception. If you experience address in use: connect exceptions try setting the MaxUserPort and TcpTimedWaitDelay registry values under the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters key:
MaxUserPort = dword:00004e20 (20,000 decimal)
TcpTimedWaitDelay = dword:0000001e (30 decimal)Increase the value of the MaxUserPort parameter if the exception persists.
For more information about Windows 2000 tuning options, see:
- The Microsoft Windows 2000 TCP/IP Implementation Details.
- The Windows 2000 Performance Tuning white paper.
Other Operating System Tuning Information
For more information about Windows, HP-UX, and AIX tuning options, refer to the following Web sites:
- For Windows tuning information, see the Microsoft Windows 2000 TCP/IP Implementation Details.
- For AIX tuning information, see the AIX 5L Version 5.2 Performance Management Guide.
- Maximum memory for a user process — Check your operating system documentation for the maximum memory available for a user process. In some operating systems, this value is as low as 128 MB. Also, refer to your operating system documentation.For more information about memory management, see Tuning Java Virtual Machines (JVMs).