bea.com | products | dev2dev | support | askBEA

Download Docs | Site Map | Glossary
Search

WebLogic Server Performance and Tuning

Tuning Hardware, Operating System, and Network Performance

The following sections describe issues related to optimizing hardware, operating system, and network performance:

- Hardware Tuning

- Operating System Tuning

- Network Performance

Hardware Tuning

When you examine performance, a number of factors influence how much capacity a given hardware configuration will need in order to support WebLogic Server and a given application. The hardware capacity required to support your application depends on the specifics of the application and configuration. You should consider how each factor applies to your configuration and application.

Before continuing with this section, you may want to review the Standard Performance Evaluation Corporation which provides a set of standardized benchmarks and metrics for evaluating computer system performance.

Supported Platforms

The following table provides selected links to the information on the Supported Configurations pages, which contains a complete listing of the latest certification information on the hardware/operating system platforms that are supported for each release of WebLogic Server.

Table 1-1 Platform-Specific Tuning Information

Platform | For more information
--- | ---
Bull/IBM pSeries with AIX | See the Bull/IBM links on the Supported Configurations pages. Bull/IBM pSeries with AIX 4.3.3 Bull/IBM pSeries with AIX 5L v5.1 Bull/IBM pSeries with AIX 5L v5.2
Hewlett-Packard with HP-UX | See Hewlett-Packard HP/9000 with HP-UX 11.0 and 11i on the Supported Configurations pages. See also Hewlett-Packard Company Information.
Intel Pentium-compatible with Windows | See the Intel/Windows links on the Supported Configurations pages. Windows 2000 Server or Windows 2000 Advanced Server Windows 2000 Professional Windows NT Windows XP See also Microsoft Information.
Intel 32-bit-compatible with Red Hat Advanced Server | See the Red Hat links on the Supported Configurations pages. Red Hat Enterprise Linux AS 2.1 and ES 2.1 for IA-32 Red Hat Enterprise Linux WS 2.1 for IA-32 See also Linux OS Information.
Sun Microsystems SPARC with Solaris | See the Sun Microsystems SPARC Solaris links on the Supported Configurations pages. SPARC with Solaris 2.7 SPARC with Solaris 8 SPARC with Solaris 9 See also Sun Microsystems Information.

Operating System Tuning

Tune your operating system according to your operating system documentation. BEA certifies WebLogic Server on multiple operating systems on the Supported Configurations pages.

For Windows platforms, the default settings are usually sufficient. However, the Solaris and Linux platforms usually need to be tuned appropriately.

Setting TCP Parameters With the ndd Command

Set the following TCP-related tuning parameters using the ndd command, as demonstrated in the following example:

ndd -set /dev/tcp tcp_conn_req_max_q 16384

Table 1-2 Suggested TCP-Related Parameter Values

Parameter | Suggested Value
--- | ---
/dev/tcp tcp_time_wait_interval | 60000
/dev/tcp tcp_conn_req_max_q | 16384
/dev/tcp tcp_conn_req_max_q0 | 16384
/dev/tcp tcp_ip_abort_interval | 60000
/dev/tcp tcp_keepalive_interval | 7200000
/dev/tcp tcp_rexmit_interval_initial | 4000
/dev/tcp tcp_rexmit_interval_max | 10000
/dev/tcp tcp_rexmit_interval_min | 3000
/dev/tcp tcp_smallest_anon_port | 32768
/dev/tcp tcp_xmit_hiwat | 131072
/dev/tcp tcp_recv_hiwat | 131072
/dev/tcp tcp_naglim_def | 1
/dev/ce instance | 0
/dev/ce rx_intr_time | 32

Note: Prior to Solaris 2.7, the tcp_time_wait_interval parameter was called tcp_close_wait_interval. This parameter determines the time interval that a TCP socket is kept alive after issuing a close call. The default value of this parameter on Solaris is four minutes. When many clients connect for a short period of time, holding these socket resources can have a significant negative impact on performance. Setting this parameter to a value of 60000 (60 seconds) has shown a significant throughput enhancement when running benchmark JSP tests on Solaris. You might want to reduce this setting further if the server gets backed up with a queue of half-opened connections.

Tip: Use the netstat -s -P tcp command to view all available TCP parameters.

Setting Parameters In the /etc/system File

Each socket connection to the server consumes a file descriptor. To optimize socket performance, you 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, to the recommended values in the following table.

Note: You must reboot your machine anytime you modify /etc/system parameters.

Table 1-3 Suggested /etc/system Values

Parameter | Suggested Value
--- | ---
set rlim_fd_cur | 8192
set rlim_fd_max | 8192
set tcp:tcp_conn_hash_size | 32768
set shmsys:shminfo_shmmax Note: This should only be set for machines that have at least 4 GB RAM or higher. | 4294967295
set autoup | 900
set tune_t_fsflushr | 1

CE Gigabit Network Card Settings

If you are using CE gigabit cards, we recommend using the following settings.

Table 1-4 Suggested CE Gigabit Card Values

Parameter | Suggested Value
--- | ---
set ce:ce_bcopy_thresh | 256
set ce:ce_dvma_thresh | 256
set ce:ce_taskq_disable | 1
set ce:ce_ring_size | 256
set ce:ce_comp_ring_size | 1024
set ce:ce_tx_ring_size | 4096

For more information about Solaris tuning options, see:

- Solaris Tunable Parameters Reference Manual (Solaris 8)

- Solaris Tunable Parameters Reference Manual (Solaris 9)

Linux Tuning Parameters

For Linux operating systems, the following settings are recommended for optimal performance.

Table 1-5 Suggested Linux Values

Parameter | Suggested Value
--- | ---
/sbin/ifconfig lo mtu | 1500
kernel.msgmni | 1024
kernel.sem | 1000 32000 32 512
fs.file-max | 65535
kernel.shmmax | 2147483648
net.ipv4.tcp_max_syn_backlog | 8192

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.

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 HP-UX tuning information, see the Tunable Kernel Parameters reference documentation.

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

Network Performance

Network performance is affected when the supply of resources is unable to keep up with the demand for resources. Today's enterprise-level networks are very fast and are now rarely the direct cause of performance in well-designed applications. However, if you find that you have a problem with one or more network components (hardware or software), work with your network administrator to isolate and eliminate the problem. You should also verify that you have an appropriate amount of network bandwidth available for WebLogic Server and the connections it makes to other tiers in your architecture, such as client and database connections. Therefore, it is important to continually monitor your network performance to troubleshoot potential performance bottlenecks.

Determining Network Bandwidth

A common definition of bandwidth is "the rate of the data communications transmission, usually measured in bits-per-second, which is the capacity of the link to send and receive communications." A machine running WebLogic Server requires enough network bandwidth to handle all WebLogic Server client connections. In the case of programmatic clients, each client JVM has a single socket to the server, and each socket requires dedicated bandwidth. A WebLogic Server instance handling programmatic clients should have 125-150 percent of the bandwidth that a similar Web server would handle. If you are handling only HTTP clients, expect a bandwidth requirement similar to a Web server serving static pages.

To determine whether you have enough bandwidth in a given deployment, you can use the network monitoring tools provided by your network operating system vendor to see what the load is on the network system. You can also use common operating system tools, such as the netstat command for Solaris or the System Monitor (perfmon) for Windows, to monitor your network utilization. If the load is very high, bandwidth may be a bottleneck for your system.

Also monitor the amount of data being transferred across the your network by checking the data transferred between the application and the application server, and between the application server and the database server. This amount should not exceed your network bandwidth; otherwise, your network becomes the bottleneck. To verify this, monitor the network statistics for retransmission and duplicate packets, as follows:

netstat -s -P tcp

For instructions on viewing other TCP parameters using the netstat -s -P command, see Setting TCP Parameters With the ndd Command.

LAN Infrastructure

Your local area network must be fast enough to handle your application's peak capacity. If your network is fully utilized, in that the amount of traffic consistently exceeds its bandwidth capacity, yet your WebLogic Server machine is not fully utilized, do one of the following:

- Redesign the network and redistribute the load.

- Reduce the number of network clients.

- Increase the number of systems handling the network load.