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:
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.
Note: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. Another resource which may provide helpful tuning information is the "All SPEC jAppServer2004 Results Published by SPEC" in
http://www.spec.org/jAppServer2004/results/jAppServer2004.htmlweb page. It provides the OS tuning parameters used for each reported WebLogic Server benchmark.
The following sections provide information on tuning Solaris operating systems:
Note: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.
This section lists important TCP tuning parameters that when tuned, can enhance application performance:
netstat -s -P tcpcommand to view all available TCP parameters.
Set TCP-related tuning parameters using the
ndd command, as demonstrated in the following example:
ndd -set /dev/tcp tcp_conn_req_max_q 16384
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
Note:You must reboot your machine anytime you modify
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.
This section lists important CE Gigabit Network Card tuning parameters that when tuned, can enhance application performance:
For more information about Solaris tuning options, see:
Solaris Tunable Parameters Reference Manual (Solaris 8), at
Solaris Tunable Parameters Reference Manual (Solaris 9), at
Solaris Tunable Parameters Reference Manual (Solaris 10), at
This section lists important Linux tuning parameters that when adjusted, can enhance application performance:
/sbin/ifconfig lo mtu
For more information about Linux tuning, you should consult your Linux vendor's documentation. Also, the "Ipsysctl Tutorial 1.0.4", at
http://ipsysctl-tutorial.frozentux.net/ipsysctl-tutorial.html, describes all of the IP options provided by Linux.
This section lists important HP-UX operating system tuning parameters that when adjusted, can enhance application performance:
For more HP-UX tuning information, see "Tunable Kernel Parameters" reference documentation at
For Windows platforms, the default settings are usually sufficient. However, under sufficiently heavy loads it may be necessary to adjust the
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
TcpTimedWaitDelay registry values under the
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 white paper" at
The "Windows 2000 Performance Tuning white paper" at
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 white paper" at
For AIX tuning information, see the "AIX 5L Version 5.2 Performance Management Guide" at
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 Chapter 5, "Tuning Java Virtual Machines (JVMs)".