WAS v8.5 > Tune performance > Tune the application serving environmentTune the application server using pre-defined tuning templates
We can use the Python-based tuning script, applyPerfTuning.py, along with one of its template files, to apply pre-defined performance tuning templates to the application server or cluster. The property-based template files are located in the WAS_HOME\bin directory. The path for the script files is wsadmin -f <WAS_HOME>\bin\applyPerfTuningTemplate.py.
Best practice: The configuration settings applied by this script and the associated tuning templates should be viewed as potential performance tuning options for you to explore or use as a starting point for additional tuning. The configuration settings that each of the pre-defined templates applies are geared towards optimizing common application server environments or scenarios.
Typically, these settings improve performance for many applications.
Because optimizing for performance often involves trade-offs with features, capabilities, or functional behavior, some of these settings might impact application correctness, while other settings might be inappropriate for the environment. Please review the documentation below and consider the impact of these settings to the application inventory and infrastructure.
As with any performance tuning exercise, the settings configured by the predefined templates should be evaluated in a controlled preproduction test environment. We can then create a customized template to refine the tuning settings to meet the specific needs of the applications and production environment. bprac
IBM recommends using the HPEL log and trace infrastructure. With HPEL, one views logs using the LogViewer command-line tool in PROFILE/bin.
Typically, when we run the applyPerfTuning.py script, you will specify either the peak.props template file or the development.props template file to apply against the target server or cluster.
- If we specify the peak.props template file when we run the applyPerfTuning.py script, the script applies configuration settings that are appropriate for a production environment where application changes are rare and optimal runtime performance is important.
- If we specify the development.props template file when we run the applyPerfTuning.py script, the script applies configuration settings that are appropriate for a development environment where frequent application updates are performed and system resources are at a minimum.
In addition to these two common templates, a third template file, default.props, is provided to enable you to revert the server configuration settings back to the out-of-the-box defaults settings.
We can create our own custom tuning template. To create a custom tuning template, copy one of the existing templates, modify the configuration settings to better fit the needs of the applications and environment, and then use the applyPerfTuning.py script to apply these customized settings. The script and properties files leverage the property file configuration management features that wsadmin provides, and can be augmented to tune additional server components. See the topic Using properties files to manage system configuration for more information.
Default, production and development templates
The table below show tuning parameters values for the default, production development templates. A blank cell indicates the listed parameter is not configured, or is configured back to the default settings for the server defaults.
Parameter Default
default.propsProduction
peak.propsDevelopment
development.propsJVM Heap Size (MB) 50 min / 256 max 512 min / 512 max 256 min / 512 max Verbose GC disabled enabled disabled JVM Diagnostic Trace
Generic JVM Arguments 1-Dcom.ibm.xml.xlxp.jaxb .opti.level=3 -Dcom.ibm.xml.xlxp.jaxb .opti.level=3 -Dcom.ibm.xml.xlxp.jaxb .opti.level=3 TCP Channel maxKeepAliveRequests 100 10000 10000 TCP Channel maxOpenConnections 20000 500 500 TCP Channel listenBacklog 511 128 128 Development Mode disabled
enabled Server Component Provisioning disabled enabled enabled PMI Statistic Set basic none none Authentication Cache Timeout 10 minutes 60 minutes 60 minutes Data Source Connection Pool Size 1 min / 10 max 10 min / 50 max
Data Source Prepared Statement Cache Size 10 50
ORB Pass-by-Reference 2 disabled enabled enabled Web Server Plug-in ServerIOTimeout 900 900 900 Thread Pools (Web Container, ORB, Default) 50 min / 50 max, 10 min / 50 max, 20 min / 20 max
5 min / 10 max 1: Generic JVM Arguments might cause issues when web services. If you experience issues, remove this parameter from the script, or set opti level to 0.
2: Enabling ORB Pass-By-Reference can cause incorrect application behavior in some cases, because the Java EE standard assumes pass-by-value semantics. However, enabling this option can improve performance up to 50% or more if the EJB client and server are installed in the same instance, and the application is written to take advantage of these feature. The topic Object Request Broker service settings can help you determine if this setting is appropriate for the environment.
Platform-specific tuning differences
- Solaris
- The following Generic JVM arguments are used for both the production and development environments:
- -XX:-UseAdaptiveSizePolicy
- -XX:+UseParallelGC
- -XX:+AggressiveOpts
- -XX:+UnlockDiagnosticVMOptions -server
- -Dcom.ibm.xml.xlxp.jaxb.opti.level=3
- HP-UX
- The following Generic JVM arguments are used for both the production and development environments:
- -XX:+AggressiveOpts
- -XX:+ForceMmapReserved
- -XX:SurvivorRatio=16
- -XX:+UseParallelGC
- -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.DevPollSelectorProvider
- -XX:-ExtraPollBeforeRead -XX:+UseSpinning
- -Dcom.ibm.xml.xlxp.jaxb.opti.level=3
- Start wsadmin if it is not already running, and then complete one of the following actions to tune an application server or all of the application servers in a cluster.
- Run the applyPerfTuning.py script to tune a specific server or cluster of servers running in a production environment.
wsadmin -f applyPerfTuningTemplate.py [-nodeName node_name -serverName server_name][clusterName cluster_name] -templateFile peak.props
- Run the applyPerfTuning.py script to tune a specific server or cluster of servers running in a development environment.
wsadmin -f applyPerfTuningTemplate.py [-nodeName node_name -serverName server_name][clusterName cluster_name] -templateFile development.props
- Run the applyPerfTuning.py script to change the settings for a server or a cluster back to the standard out-of-the-box default configuration settings.
wsadmin -f applyPerfTuningTemplate.py [-nodeName node_name -serverName server_name][clusterName cluster_name] -templateFile default.props
Conduct a performance evaluation, and tuning exercise to determine if you should further fine tune the server for the specific applications.
Related
Tune application servers
Tune the IBM virtual machine for Java
Enable PMI data page
Use properties files to manage system configuration
Enable PMI data page
Reference:
Java virtual machine custom properties
HTTP transport custom properties
Application server settings
Authentication cache settings
Connection pool properties
WAS data source properties
Thread pool settings
Object Request Broker service settings