Tune application servers

The product contains interrelated components that must be harmoniously tuned to support the custom needs of the end-to-end e-business application.

This group of interrelated components is known as the queuing network. The queuing network helps the system achieve maximum throughput while maintaining the overall stability of the system.

The following steps describe various tuning tasks that may improve the application server performance. We can choose to implement any of these application server settings. These steps can be performed in any order.

  1. Run the applyPerfTuningTemplate.py, as the starting point for improving the performance of an application server.

    We can use the python-based tuning script, applyPerfTuningTemplate.py, along with one of its template files, to apply recommended performance tuning settings. The script, and these template files are located in the WAS_HOME/bin directory.

  2. Tune the object request broker.
    An Object Request Broker(ORB) manages the interaction between clients and servers, using the Internet InterORB Protocol (IIOP). It supports client requests and responses received from servers in a network-distributed environment. We can use the following parameters to tune the ORB:

    • Set Pass by reference (com.ibm.CORBA.iiop.noLocalCopies) as described in the information on Object Request Broker service settings.

    • Set the Connection cache minimum (com.ibm.CORBA.MaxOpenConnections) as described in the information about Object Request Broker service settings.

    • Set Maximum size as described in the topic about thread pool settings.

    • Set com.ibm.CORBA.ServerSocketQueueDepth as described in the information about Object Request Broker custom properties.

    • Set the com.ibm.CORBA.FragmentSize as described in the information about Object Request Broker custom properties.

    See the information about Object Request Broker tuning guidelines for tips on using these parameters to tune the ORB.

  3. Tune the XML parser definitions.

    • Description: Facilitates server startup by adding XML parser definitions to the jaxp.properties and xerces.properties files in the ${app_server_root}/jre/lib directory. The XMLParserConfiguration value might change as new versions of Xerces are provided.

    • How to view or set: Insert the following lines in both files:
      javax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl  javax.xml.parsers.DocumentBuildFactory=org.apache.xerces.jaxp.
                 DocumentBuilderFactoryImpl
      org.apache.xerces.xni.parser.XMLParserConfiguration=org.apache.xerces.parsers.
                 XIncludeAwareParserConfiguration
      We can also consult with the jre/lib/jaxp.properties and jre/lib/xerces.properties files that come with the JDK installation. These sample files always contain the recommended settings.

    • Default value: None

    • Recommended value: None

  4. Tune the dynamic cache service.

    Use the dynamic cache service can improve performance. See the information on using the dynamic cache server to improve performance for information about using the dynamic cache service and how it can affect the application server performance.

  5. Tune the web container.
    The product web container manages all HTTP requests to servlets, JSP and web services. Requests flow through a transport chain to the web container. The transport chain defines the important tuning parameters for performance for the web container. There is a transport chain for each TCP port that the product is listening on for HTTP requests. For example, the default HTTP port 9080 is defined in web container inbound channel chain. Use the following parameters to tune the web container:

    • HTTP requests are processed by a pool of server threads. The minimum and maximum thread pool size for the web container can be configured for optimal performance. Generally, 5 to 10 threads per server CPU provides the best throughput. The number of threads configured does not represent the number of requests that the product can process concurrently. Requests are queued in the transport chain when all threads are busy. To specify the thread pool settings:

      1. Click Servers > Server Types > WebSphere application servers >server_name Web container settings > Web container > Web container transport chains.

      2. Select the normal inbound chain for serving requests. This chain is typically called WCInboundDefault, and listens on port 9080.

      3. Click TCP Inbound Channel (TCP_2).

      4. Set Thread Pools under Related Items.

      5. Select WebContainer.

      6. Enter values for Minimum Size and Maximum Size.

    • The HTTP 1.1 protocol provides a keep-alive feature to enable the TCP connection between HTTP clients and the server to remain open between requests. By default the product closes a given client connection after a number of requests or a timeout period. After a connection is closed, it is recreated if the client issues another request. Early closure of connections can reduce performance. Enter a value for the maximum number of persistent requests to (keep-alive) to specify the number of requests allowed on a single HTTP connection. Enter a value for persistent timeouts to specify the amount of time, in seconds, that the HTTP transport channel allows a socket to remain idle between requests. To specify values for Maximum persistent requests and Persistent timeout:

      1. Click Servers > Server Types > WebSphere application servers >server_name. Then in the Container Settings section, click Web container > Web container transport chains.

      2. Select the normal inbound chain for serving requests. This chain is typically called WCInboundDefault, and listens on port 9080.

      3. Click HTTP Inbound Channel (HTTP_2).

      4. Enter values for Maximum persistent requests and Persistent timeout.

  6. Tune the EJB container.
    An EJB container is automatically created when creating an application server. After the EJB container is deployed, we can use the following parameters to make adjustments that improve performance.

    • Set the Cleanup interval and the Cache size. See the topic on EJB cache settings for more information.

    • Break CMP enterprise beans into several enterprise bean modules. See the topic on assembling EJB modules for more information.

    See the topic on EJB method invocation queuing for further information.

  7. Tune the session management.

    The installed default settings for session management are optimal for performance.

  8. Tune the data sources and associated connection pools.
    A data source is used to access data from the database; it is associated with a pool of connections to that database.

    • Review the topic on connection pooling to understand how the number of physical connections within a connection pool can change performance.

    • (dist)(zos) Use the topic on data access tuning parameters as a reference for the data source and connection pool properties that most affect performance.

  9. Tune the URL invocation cache.

    Each JavaServer Page is a unique URL. If we have more than 50 unique URLs that are actively being used, increase the value specified for the invocationCacheSize JVM custom property. This property controls the size of the URL invocation cache.

  10. (zos) Change how frequently the recovery log service attempts to compress any logstreams that application components are using.

    The Transaction Service RLS_LOGSTREAM_COMPRESS_INTERVAL custom property can be set to a value larger then the default value if the Transaction Service is the only application component using a logstream. If none of the components are configured to use a logstream, we can set this property to 0 (zero) to disable this function.


Subtopics


Related tasks

  • Tune the application server using pre-defined tuning templates
  • Tune URL invocation cache
  • Object Request Broker service settings

    Thread pool settings

    Object Request Broker custom properties

    Object Request Broker tuning guidelines

  • EJB cache settings
  • Assembling EJB modules
  • EJB method Invocation Queuing
  • Connection pooling

    (dist)(zos) Data access tuning parameters

  • Configure transport chains

    (zos) Transaction service custom properties