Tuning Solaris systems

The following tuning parameters are specific to the Solaris operating system. Because the Solaris operating system is not WebSphere Application Server product, be aware that it can change and results vary.

 

Overview

On the Solaris operating system, WAS runs on the Sun Hotspot Java virtual machine (JVM). It is important to use the correct tuning parameters with the Sun JVM to utilize its performance optimizing features. Refer to the Tuning Java virtual machines topic for more information about tuning the JVM. Also, consider the following parameters that are specific to the Solaris operating system to ensure that WAS has enough resources.

 

Steps for this task (dependent on configuration)

  • Solaris file descriptors (ulimit)

    • Description: Specifies the maximum number of open files supported. If the value of this parameter is too low, a Too many files open error is displayed in the WAS stderr.log file.

    • How to view or set: Check the UNIX reference pages on the ulimit command for the syntax of different shells. For the KornShell (ksh) shell use the ulimit -n 1024 command. Use the ulimit -a command to display the current settings. Use the ulimit -n 2000 command to set the values.

    • Default value: None

    • Recommended value: 8000

  • Solaris TCP_TIME_WAIT_INTERVAL

    • Description: Notifies TCP/IP on how long to keep the connection control blocks closed. After the applications complete the TCP/IP connection, the control blocks are kept for the specified time. When high connection rates occur, a large backlog of the TCP/IP connections accumulate and can slow server performance. The server can stall during certain peak periods. If the server stalls, the netstat command shows that many of the sockets that are opened to the HTTP server are in the CLOSE_WAIT or FIN_WAIT_2 state. Visible delays can occur for up to four minutes, during which time the server does not send any responses, but CPU utilization stays high, with all of the activities in system processes.

    • How to view or set: Use the get command to determine the current interval and the set command to specify an interval of 30 seconds. For example:

      ndd -get /dev/tcp tcp_time_wait_interval     
      ndd -set /dev/tcp tcp_time_wait_interval 30000
      

    • Default value: The default time wait interval for a Solaris operating system is 240000 milliseconds, which is equal to 4 minutes.

    • Recommended value: 60000 milliseconds

  • Solaris TCP_FIN_WAIT_2_FLUSH_INTERVAL

    • Description: Specifies the timer interval prohibiting a connection in the FIN_WAIT_2 state to remain in that state. When high connection rates occur, a large backlog of TCP/IP connections accumulate and can slow server performance. The server can stall during peak periods. If the server stalls, using the netstat command shows that many of the sockets opened to the HTTP server are in the CLOSE_WAIT or FIN_WAIT_2 state. Visible delays can occur for up to four minutes, during which time the server does not send any responses, but CPU utilization stays high, with all of the activity in system processes.

    • How to view and set: Use the get command to determine the current interval and the set command to specify an interval of 67.5 seconds. For example

      ndd -get /dev/tcp tcp_fin_wait_2_flush_interval
      ndd -set /dev/tcp tcp_fin_wait_2_flush_interval 67500
      

    • Default value: 675000 milliseconds

    • Recommended value: 67500 milliseconds

  • Solaris TCP_KEEPALIVE_INTERVAL

    • Description: The keepAlive packet ensures that a connection stays in an active and established state.

    • How to view or set: Use the ndd command to determine the current value or to set the value. For example:

      ndd -set /dev/tcp tcp_keepalive_interval 300000

    • Default value: 72000 milliseconds

    • Recommended value: 15000 milliseconds

  • Solaris TCP_KEEPALIVE_PROBES

    • Description: Specifies the kernel how many TCP keepalive probes to send out before it decides if a specific connection is broken.

    • How to view or set: Use the ndd command to determine the current value or to set the value. For example:

      ndd -set /dev/tcp tcp_keepalive_probes 5000

    • Default value: 9000 milliseconds

    • Recommended value: 5000 milliseconds

  • Solaris kernel semsys:seminfo_semume

    • Description: Limits the maximum semaphore undo entries per process. Because this setting specifies a maximum value, the parameter does not cause the use of additional memory unless it is needed.

    • How to view or set: This value is displayed as the semume parameter if the /usr/sbin/sysdef command is run. There can be an entry in the /etc/system file for this tuning parameter. Set this parameter through the /etc/system entry:

      set semsys:seminfo_semume = 200
      

    • Default value: 10

    • Recommended value: 200

  • Solaris kernel semsys:seminfo_semopm

    • Description: Displays as the semume parameter if the /usr/sbin/sysdef command is run. An entry in the /etc/system file can exist for this tuning parameter. This number is the maximum value of System V semaphore operations per semop call. The default value for this option is too low for highly concurrent systems.

    • How to view or set: Set this parameter through the /etc/system entry:

      semsys:seminfo_semopm = 16384 
      

    • Default value: None

    • Recommended value: 16384

  • Connection backlog

    • Description: Change the following parameter when a high rate of incoming connection requests result in connection failures

      ndd -get /dev/tcp tcp_conn_req_max_q 
      ndd -set /dev/tcp tcp_conn_req_max_q 8000
      

    • Default value: For Solaris 8, the default value is 128.

    • Recommended value: 8000

    :

  • Large page support

    Using large pages can reduce the CPU overhead of managing a large JVM heap.

    With Solaris 9, large page support is provided by default. No operating system or JVM parameters are necessary to make use of large pages for the JVM heap.

    With Solaris 8, the Intimate Shared Memory (ISM) feature must be utilized to provide large page support. See the http://java.sun.com/docs/hotspot/ism.html Web site for instructions to enable large page support.

 

Result

This tuning procedure improves the performance of WebSphere Application Server on the Solaris operating system.

 

What to do next

After tuning your operating system for performance, consult other tuning topics for various tuning tips.


 

Related Tasks


Tuning Windows systems
Tuning Linux systems
Tuning AIX systems
Tuning HP-UX systems