Front cover WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips Explore tuning tips for z/OS Investigate tuning tips for subsystems and resources Tune WebSphere Application Server run time H. Michael Everett ibm.com/redbooks Redpaper International Technical Support Organization WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips December 2009 REDP-4628-00 Note: Before using this information and the product it supports, read the information in “Notices” on page v. First Edition (December 2009) This edition applies to WebSphere Application Server for z/OS versions 6.1 and 7. © Copyright International Business Machines Corporation 2009. All rights reserved. Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. Contents Notices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .v Trademarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii The team who wrote this paper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii Now, you can become a published author, too . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii Chapter 1. WebSphere Application Server for z/OS Version 7 tuning tips . . . . . . . . . . 1 1.1 Tuning z/OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1.1 Tuning storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1.2 Tuning the operating system. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.3 Tuning Language Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2 Tuning the subsystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2.1 Tuning IBM HTTP Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2.2 Tuning DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2.3 Tuning Resource Access Control Facility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2.4 Tuning TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.2.5 Tuning MQ/Java Message Service (JMS). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.2.6 Tuning global resource serialization (GRS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2.7 Tuning the Java virtual machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2.8 Tuning CICS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3 Tuning the WebSphere Application Server run time . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3.1 Tuning application servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3.2 Tuning the run time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Chapter 2. WebSphere Application Server for z/OS Version 6.1.x tuning tips . . . . . . 2.1 Tuning z/OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Tuning storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 Tuning the operating system. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Tuning the subsystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Tuning IBM HTTP Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Tuning DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3 Tuning RACF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4 Tuning TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.5 Tuning MQ/Java Message Service (JMS) connections . . . . . . . . . . . . . . . . . . . . 2.2.6 Tuning global resource serialization (GRS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.7 Tuning the Java virtual machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.8 Tuning CICS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Tuning the WebSphere Application Server run time . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Tuning application servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2 Tuning the run time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 14 14 15 18 18 19 19 20 20 21 21 21 21 21 23 Chapter 3. One page performance overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Related publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IBM Redbooks publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Online resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How to get IBM Redbooks publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . © Copyright IBM Corp. 2009. All rights reserved. 29 29 29 30 iii Help from IBM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 iv WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips Notices This information was developed for products and services offered in the U.S.A. IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service. IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not give you any license to these patents. You can send license inquiries, in writing, to: IBM Director of Licensing, IBM Corporation, North Castle Drive, Armonk, NY 10504-1785 U.S.A. The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you. This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice. Any references in this information to non-IBM Web sites are provided for convenience only and do not in any manner serve as an endorsement of those Web sites. The materials at those Web sites are not part of the materials for this IBM product and use of those Web sites is at your own risk. IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you. Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental. COPYRIGHT LICENSE: This information contains sample application programs in source language, which illustrate programming techniques on various operating platforms. You may copy, modify, and distribute these sample programs in any form without payment to IBM, for the purposes of developing, using, marketing or distributing application programs conforming to the application programming interface for the operating platform for which the sample programs are written. These examples have not been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability, serviceability, or function of these programs. © Copyright IBM Corp. 2009. All rights reserved. v Trademarks IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. These and other IBM trademarked terms are marked on their first occurrence in this information with the appropriate symbol (® or ™), indicating US registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at http://www.ibm.com/legal/copytrade.shtml The following terms are trademarks of the International Business Machines Corporation in the United States, other countries, or both: CICS® DB2® IBM® IMS™ Language Environment® OS/390® RACF® Redbooks® Redbooks (logo) WebSphere® z/OS® zSeries® ® The following terms are trademarks of other companies: Java, and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both. Other company, product, or service names may be trademarks or service marks of others. vi WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips Preface This IBM® Redpaper™ publication provides a quick handy reference or “cheat sheet” for tuning WebSphere® Application Server for z/OS® V6.1 and V7. It focuses on three areas: Tuning z/OS Tuning the subsystems Tuning the WebSphere Application Server run time This “cheat sheet” is designed to guide you toward an appropriate item to investigate. It is not designed to cover all scenarios or provide detailed information. When possible, we include a link to the information center to take you directly to the designated topic: For Version 7.0.x, see Chapter 1, “WebSphere Application Server for z/OS Version 7 tuning tips” on page 1. For Version 6.1.x, see Chapter 2, “WebSphere Application Server for z/OS Version 6.1.x tuning tips” on page 13. For a quick summary to use as a handy reference, print Chapter 3, “One page performance overview” on page 25. This paper is intended for individuals who want to tune the performance of WebSphere Application Server for z/OS V6.1 or V7. The team who wrote this paper This paper was produced by scores of WebSphere on z/OS specialists from around the world. H. Michael Everett is a WebSphere Integration Team Lead for a geographically dispersed team that concentrates on WebSphere and its associated products on System z. Michael is based in Pittsburgh, Pennsylvania, and has held various positions around WebSphere, including SWAT Team Lead, WebSphere and Java Level2 Support, and System Verification Test. In addition to his duties as an IBM Advisory Software Engineer, Michael is an adjunct professor of Computer Science at Indiana University of PA. Thanks to the following IBM teams for their contributions to this project: Washington Systems Center Silicon Valley Lab Software Services for WebSphere WebSphere Development, Test, and Support Now, you can become a published author, too Here is an opportunity to spotlight your skills, grow your career, and become a published author - all at the same time. Join an ITSO residency project and help write a book in your area of expertise, while honing your experience using leading-edge technologies. Your efforts will help to increase product acceptance and client satisfaction, while you expand your network of technical contacts and relationships. Residencies run from two to six weeks in © Copyright IBM Corp. 2009. All rights reserved. vii length, and you can participate either in person or as a remote resident working from your home base. Find out more about the residency program, browse the residency index, and apply online at: ibm.com/redbooks/residencies.html Comments welcome Your comments are important to us. We want our papers to be as helpful as possible. Send us your comments about this paper or other IBM Redbooks® publications in one of the following ways: Use the online Contact us review Redbooks form found at: ibm.com/redbooks Send your comments in an e-mail to: redbooks@us.ibm.com Mail your comments to: IBM Corporation, International Technical Support Organization Dept. HYTD Mail Station P099 2455 South Road Poughkeepsie, NY 12601-5400 viii WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips 1 Chapter 1. WebSphere Application Server for z/OS Version 7 tuning tips This chapter provides a “cheat sheet” that helps you with the performance tuning of WebSphere Application Server V7.0 systems on z/OS. It provides three areas of concentration: “Tuning z/OS” on page 2 “Tuning the subsystems” on page 6 “Tuning the WebSphere Application Server run time” on page 9 You can obtain further details about performance tuning in the WebSphere Application Server Information Center at this Web site: http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/rprf_zostuneindex.html Search any WebSphere Information Center with the search term: tuning index. This cheat sheet is designed to guide you toward an appropriate item to investigate. It is not designed to cover all scenarios. Whenever possible, we include a link to the information center to take you directly to the designated topic. © Copyright IBM Corp. 2009. All rights reserved. 1 1.1 Tuning z/OS The following recommendations pertain to memory use by the z/OS operating system and Java™. 1.1.1 Tuning storage The following link takes you to the information center section pertaining to storage: http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/tprf_tunezstorage.html Virtual storage The following recommendations pertain to tuning z/OS virtual storage: 1. Use Resource Monitoring Facility (RMF) to determine if you need more paging space or auxiliary storage. Also, try CCVUTILP options to get the CPU utilization by second. 2. The following settings might limit virtual storage: a. The REGION setting in the JCL procedure. Recommendation: Set REGION to 0M, which takes all of the region needed. b. The IEFUSI exits limit virtual memory for running processes. Check for the exit to verify that you are receiving the expected memory. c. The MAXASSIZE setting in Unix Systems Services. Recommendation: MAXASSIZE = 2147483647 d. The MEMLIMIT setting in SMFPRMxx or in the JCL procedure. Real storage The following recommendations pertain to tuning z/OS real storage: 1. Use a minimum of 384 MB real storage for the smallest configuration. Storage utilization depends on the size of the Java virtual machine (JVM) heap. Having over 16 gigabytes of real storage on the machine is not uncommon for Java applications. 2. To reduce paging, configure with 64-bit real storage and give the logical partition (LPAR) more than 2 GB main storage. If 31-bit mode is your only option, dedicate more expanded storage to reduce paging. Java virtual machine (JVM) heap The following recommendations pertain to tuning the JVM executing on the z/OS operating system: 1. Set heap sizes using the administrative console by selecting these options: Servers → Server Types → Application Servers → server_name → Server Infrastructure → Java and Process Management → Process Definition → address_space_type → Java Virtual Machine 2 WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips 2. Garbage Collection (GC): It is normal to get allocation failures from the heap. When one occurs, the JVM invokes GC to reclaim unused space in the heap. GC takes control from your application; if it runs too often, you will see poor performance while your application waits for GC to complete. Recommendation: Adjust the heap size so that GC runs less than or equal to 5% of the time. We often recommend the following tool to analyze GC traces: IBM Pattern Modeling and Analysis Tool for Java Garbage Collector: http://www.alphaworks.ibm.com/tech/pmat You can obtain this tool and other tools for analyzing GC traces at the IBM Support Assistant Web site: http://www.ibm.com/software/support/isa/ 3. Use verbose GC tracing to determine how often GC runs and how much memory is being taken by your application. Click Servers → Server Types → Application Servers → server_name → Server Infrastructure → Java and Process Management → Process Definition → address_space_type → Java Virtual Machine. Select the Verbose GC check box. The output goes to SYSOUT in the Job Entry Subsystem (JES) spool for the address space. 4. If the initial heap size setting is too large, GC causes a long delay when it finally starts while it cleans the excessively large heap. 5. If you are already paging, increasing the heap size might worsen performance: – You can monitor the heap by using the following modify command on the console: F <control process name>,DISPLAY,JVMHEAP – To see if your page disk is full, issue the command: D ASM 6. By default, WebSphere Version 7 runs in 64-bit mode. 1.1.2 Tuning the operating system The following recommendations pertain to tuning components that are built within the z/OS operating system and those components executing on z/OS: http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/rprf_tunezopsys.html Tuning component trace (CTRACE) CTRACE is a low level trace within z/OS. Eliminate trace overhead by ensuring that all components are either set to MIN or OFF. Issue the following console command to display settings: D TRACE,COMP=ALL To change a component to its minimum tracing level, issue this command: TRACE CT,OFF,COMP=<component identifier> Chapter 1. WebSphere Application Server for z/OS Version 7 tuning tips 3 Tuning System Monitoring Facility System Monitoring Facility (SMF) allows you to capture the internal workings of the z/OS components and applications that execute on z/OS for analysis: 1. Review the SMFPRMxx member to ensure that you collect the minimum amount of data that is required. 2. Use SMF 92 or 120 only for diagnostics. If you choose to run with 120 records, use the server and container interval rather than server activity and container activity records. Important: Using 120 records can cause significant performance degradation (be careful). The new 120 subtype 9 records can alleviate the performance degradation. Refer to this Web site: http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.i bm.websphere.zseries.doc/info/zseries/ae/rtrb_SMFsubtype9.html 3. Ensure that the SMF data that is being gathered for other subsystems is minimal and that the SMF datasets are allocated optimally. Tuning Resource Recovery Services The following recommendations pertain to tuning Resource Recovery Services (RRS) within the z//OS operating system. The following link takes you to the RRS configuration in the information center: http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/rprf_tunezrrs.html We recommend these tuning tips: 1. Use the coupling facility (CF) logging rather than DASD logging. If you must use DASD logging, use the highest performing DASD possible and allocate logs with large control interval (CI) sizes. 2. Monitoring SMF 88 records allows you to determine optimal logging. 3. Table 1-1 shows the recommended default settings for the LOGR policy. Table 1-1 Recommended default settings for LOGR policy Log stream Initial size Size RM.DATA 1 MB 1 MB MAIN.UR 5 MB 50 MB DELAYED.UR 5 MB 50 MB RESTART 1 MB 5 MB ARCHIVE 5 MB 50 MB 4. Eliminate the ARCHIVE log by simply not creating an ARCHIVE log or deleting the existing log. The ARCHIVE log logs the successful transactions. Eliminating it can increase performance by decreasing I/O. 4 WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips Tuning z/OS UNIX System Services The following link takes you to the information center section that pertains to z/OS UNIX System Services: http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/rprf_tunezuss.html We recommend these tuning tips: 1. Mount shared file systems as read-only in a sysplex. 2. Determine candidates for hierarchical file system (HFS) file caching by reviewing SMF 92 records. The initial cache size is set in the BPXPRMxx parmlib member. 3. Consider zSeries file system (zFS), which offers improved file system access. A conversion tool converts existing HFS file systems to zFS file systems. See HFS to zFS Migration Tool, REDP-4328, at this Web site: http://www.redbooks.ibm.com/abstracts/REDP4328.html?Open You can also obtain tips for tuning zFS in z/OS Distributed File Service zSeries File System Implementation z/OS V1R10, SG24-6580, at this Web site: http://www.redbooks.ibm.com/abstracts/sg246580.html?Open 4. Use the filecache command. You can cache high activity read-only files. 5. Allow the VMAX BPX parm to default to half of the physical memory. Shell utilities run slowly if the VMAX BPX parm is too small. Tuning Workload Manager (minimum required) The following link takes you to the information center section that pertains to Workload Manager (WLM): http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/rprf_tunezwlm.html There is a general rule for WLM: WLM performs better with fewer service classes. Currently, the following service classes exist: 8 IMPORTANCE 1 Velocity 65 service classes 9 IMPORTANCE 1 Velocity 55 service classes 4 IMPORTANCE 2 Velocity 55 service classes 4 IMPORTANCE 3 Velocity 25 service classes 11 IMPORTANCE 3 Velocity 45 service classes 6 IMPORTANCE 3 Velocity 55 service classes 7 IMPORTANCE 4 Velocity 25 service classes 4 IMPORTANCE 5 Velocity 10 service classes Reducing the duplicates reduces the number of service classes, which improves WLM performance by reducing the number of items on which WLM has to decide, thus, reducing path length. Chapter 1. WebSphere Application Server for z/OS Version 7 tuning tips 5 Next, we summarize the general rules for WebSphere and WLM on z/OS. WebSphere has several types of work running in its address spaces. The work is classified by using the classification rules under three workloads: 1. For STC workloads, the WebSphere address spaces’ control regions and servant regions are given an aggressive Velocity goal equal to or slightly less than DB2®, IMS™, or MQ and a goal equal to or slightly higher than CICS®. 2. For OMVS workloads, the WebSphere address spaces’ control regions and servant regions are given an aggressive Velocity goal. Therefore, at startup, the BPXBATCH facility that is used to run our applyPTF.sh script does not slow the startup of the server. 3. For CB workloads, the WebSphere servant regions are given a response time with a percentile goal close to but not to exceed 90% of the work in .5 seconds. Even though WebSphere servers are long running tasks and, typically, Velocity goals are used for long running tasks, the actual transactions within WebSphere are extremely short-lived HTTP type transactions. Response time with percentile goals is used for these short-lived transactions. The report classes associated with the classification rule for each workload are unique. 1.1.3 Tuning Language Environment The following link takes you to the information center section pertaining to Language Environment: http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/tprf_tunezleheap.html We recommend these tuning tips: 1. For LPALSTxx, make sure that the Language Environment and C++ run times are in the link pack area (LPA). 2. Do not use the following options in production: RPTSTG(ON), RPTOPTS(ON), or HEAPCHK(ON). 1.2 Tuning the subsystems The following information pertains to resources that run on z/OS but that are not necessarily tied to the operating system itself. 1.2.1 Tuning IBM HTTP Server The following link takes you to OS/390 e-business Infrastructure: IBM HTTP Server V5.1 for OS/390, SG24-5603, which contains information pertaining to the HTTP server: http://www.redbooks.ibm.com/abstracts/SG245603.html?Open Check the HTTP Server plug-in properties to see which properties might affect workload distribution and performance. For information, refer to this Web site: http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/uwsv_plugin_props.html 6 WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips 1.2.2 Tuning DB2 The following recommendations can help you tune the database management system: 1. Run the Runstats utility periodically to gather the correct statistics.If you think that the database is important to the business or that the database is large, this document stops at 150,000 rows (you can define the size). Run the utility at least once a week. 2. Ensure that the DB2 logs are large enough and that they are allocated on your fastest volumes. 3. Develop a DB2 buffer pool strategy for your own data and application mix, and monitor it regularly. 4. Monitor and adjust memory usage of the EDM pool, record identifier (RID) pool, and sort pools for your workload. 5. Ensure a good physical database design by assigning tablespaces to tables based on the size and usage of the tables. Avoid simple tablespaces. 6. Properly index tables to avoid table space scans and sorts. 7. Reorganize tables to maintain clustering and free space. 8. Use the latest Java Database Connectivity (JDBC) maintenance level. The JDBC level is in the address space output. 9. Enable dynamic statement caching. 10.Turn off JDBC tracing. 11. Develop an SQL monitoring and tuning strategy to identify poorly performing SQL statements. 1.2.3 Tuning Resource Access Control Facility The following link takes you to the information center section that pertains to security: http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/tsec_tune.html The following recommendations can help you tune Resource Access Control Facility (RACF®): 1. If you do not use EJBROLES, do not enable the class in RACF. 2. If you do not need Java2 security, disable it. 3. RACLIST CBIND, EJBROLE, SERVER, and STARTED. 4. Use Peripheral Component Interconnect (PCI) Crypto cards to speed up the Secure Sockets Layer (SSL). 5. Use virtual lookaside facility (VLF) to cache user identifiers (UIDs)/group identifiers (GIDs) in the COFVLFxx parmlib member. Chapter 1. WebSphere Application Server for z/OS Version 7 tuning tips 7 1.2.4 Tuning TCP/IP The following recommendations can help you tune items that pertain to network communication: 1. Set MAXSOCKETS and MAXFILEPROC high enough. Set both MAXSOCKETS and MAXFILEPROC to 5000 for low throughput, 10000 for medium throughput, and 35000 for high throughput environments. The D OMVS,L,PID=XXX command shows the limit, current value, and high mark. 2. Specify NODELAYACKS for ports in the TCP/IP profile (especially for SSL ports). 3. Cache frequent lookups in the Domain Name System (DNS). 4. Increase send and receive buffers from 16 KB to 64 KB (it is reasonable for them to be 256 KB). 5. Increase the default listening backlog from 10 to 100 connections. 6. Reduce the finwait2 time from 600 to 60 seconds. 1.2.5 Tuning MQ/Java Message Service (JMS) The following recommendations can help you tune the messaging system: 1. Turn off all tracing. 2. Use long-lived queue manager connections as opposed to create/destroy on every message. 3. Use the bindings mode if the queue manager and the client are on the same z/OS image. 4. Use automated acknowledgments to reduce the message delay. 5. Use the same coded character set identifier (CCSID) to eliminate the translation between the client and the queue manager. 6. Small messages are best. When a message must be larger than 1 MB, send it as one message rather than breaking it into several messages. 7. Persistent transacted messages perform better than persisted non-transacted messages, because the commit happens at the end of the transaction. 8. Nonpersistent, non-transactional messages perform best; use them whenever possible. 9. MQ application support filter (ASF) adds more overhead than non-ASF messaging. 10.Local queues that are defined as shared generally perform better than non-shared queues. 11.Message-driven beans (MDBs) are asynchronous. Do not force serial mode (maxsession=1). Set maxsession realistically to the number of concurrent sessions. 12.The timeout setting for the JMS server is the control_region_jms_request_timeout default of 60 and a range from 0 - 2147040. 13.For full WebSphere MQ, optimize the number of concurrent queue manager connections: CTHREAD is the maximum number of connections. CTHREAD must be greater than or equal to the sum of IDBACK and IDFORE. It is normal for these values to be in the hundreds. 14.Adjust the checkpoint interval and active log buffers. LOGLOAD controls the number of records before a checkpoint. It is often 900000 to avoid frequent log switching. A checkpoint must occur no more than every 5 or 6 minutes. WRTHRSH is the number of active log buffers. We often use 200; if you see high I/O, you might want to increase it. 8 WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips 1.2.6 Tuning global resource serialization (GRS) The following tip can help you tune the sysplex communication. If you are not in a sysplex, configure GRS=NONE. If you are in a sysplex, configure GRS=STAR. 1.2.7 Tuning the Java virtual machine The following tips can help you tune the Java virtual machine (JVM): 1. Use the just-in-time (JIT) compiler; do not turn it off. 2. Do not use the debug dynamic link libraries (DLLs) in your libpath. 3. Point the classpath at only those classes that you need, with the most frequently referenced classes near the beginning of the classpath. 4. Investigate the generic JVM arguments: -Xquickstart and –Xverify:none. There must be a serious concern about server startup time to use these JVM arguments. The -Xquickstart argument can cause degradation during run time in favor of a faster startup time (be careful with these arguments). 5. Searching for missing classes can result in significant I/O and wasted time. 6. Review the Java 6.0 SDK Diagnostic Guide for WebSphere Application Server Version 7.0 at this Web site: http://download.boulder.ibm.com/ibmdl/pub/software/dw/jdk/diagnosis/diag60.pdf 1.2.8 Tuning CICS Use these tips to tune your existing transaction management system: 1. Set LGDFINT=5. The log defer interval of 5 milliseconds is the proven best interval in our tests. Set it dynamically: CEMT SET SYSTEM[LOGDEFER(value)] 2. Set RECEIVECOUNT to handle all concurrent external CICS interface (EXCI) pipes. The default is 4. 1.3 Tuning the WebSphere Application Server run time Next, we discuss tuning tips that pertain to the application server run time. 1.3.1 Tuning application servers The following link takes you to the information center section that pertains to the application server: http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/tprf_tunezconfig.html Chapter 1. WebSphere Application Server for z/OS Version 7 tuning tips 9 Object Request Broker The Object Request Broker (ORB) is internal to the application server: 1. Use pass by reference by setting the following variable. Click Servers → Server Types → Application Servers → server_name → Container Services → ORB Service. Select the pass by reference check box. 2. Investigate com.ibm.CORBA.FragmentSize in the information center. XML parser definitions You can add an XML parser to the run time, and it is not necessarily created by IBM. Refer to the options for your XML parser to obtain tuning guidance. The following links might help: Improve performance in your XML applications, Part 1 http://www.ibm.com/developerworks/xml/library/x-perfap1.html Improve performance in your XML applications, Part 2 http://www.ibm.com/developerworks/xml/library/x-perfap2.html XML parsers have properties. Investigate the properties for the parser that you choose. Dynamic cache service The dynamic cache service is internal to the application server. The following link takes you to the information center topic that discusses the dynamic cache service: http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae To use the dynamic cache service: 1. Use the dynamic cache service. Look for cachespec.xml in the information center. 2. The dynamic cache service is located in the administrative console. Click Servers → Server Types → Application Servers → server_name → Container Services → Dynamic Cache Service. Enterprise JavaBeans container cache The Enterprise JavaBeans (EJB) container is internal to the application server. The following link takes you to the information center topic that pertains to the EJB container: http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/rprf_ejbcontainer.html Follow these recommendations: 1. Set the cleanup interval to clean up unused items. The default is 3,000 milliseconds. Increase the cleanup interval as the cache size increases. 2. Set the cache size to the maximum number of active instances during a typical workload. 3. Break container-managed persistence (CMPs) into several EJB modules during assembly. 4. The EJB container settings are located in the administrative console. Click Servers → Server Types → Application Servers → server_name → EJB Container Settings. 10 WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips Session management The following link takes you to the information center topic that pertains to application session management: http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/rprs_sest.html To use session management: 1. The session management settings are already set at the optimal settings when you begin. 2. Session management is located in the administrative console. Click Servers → Server types → Application Servers → server_name → Container Settings → Web Container Settings → session management. Data sources You define data sources when you want to access data that is outside of your application server: 1. Review the information about connection pooling in the information center: http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm. websphere.zseries.doc/info/zseries/ae/tdat_conpoolman.html 2. Set the maximum connection pool value lower than the value of the Web container thread pool size. Lower settings of 10 - 30 perform better than settings of 100. 3. Set the minimum connection pool. 4. Set the statement cache size (unique + callable statements for each application that uses this data source). 5. The data sources can be located in the administrative console. Click Resources → JDBC → JDBC providers → your_jdbc_provider → Data sources. 1.3.2 Tuning the run time The following topics pertain to the environment but not necessarily to the internal components of the application server. Tracing The following link takes you to the information center topic that pertains to the runtime trace: http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/rprf_tuneztrace.html Follow these steps: 1. Ensure that you are not tracing more information than necessary. In the administrative console, go to Environment → WebSphere Variables. 2. Check that ras_trace_defaultTracingLevel = 0 or 1. Increasing this value higher than 1 affects the performance. 3. Verify that ras_trace_basic and ras_trace_detail are not set. The less information that you trace, the better your performance. 4. Set ras_trace_outputLocation to BUFFER only. 5. Set ras_traceBufferCount=4 and ras_trace_BufferSize=128. Chapter 1. WebSphere Application Server for z/OS Version 7 tuning tips 11 6. Disable JRas tracing. The settings are in the administrative console. Select Troubleshooting → Logs and trace → server_name → Change Log Detail Levels. Set the following trace specs: *=all=disable Security The following link takes you to the information center topic that pertains to runtime security: http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/rprf_tunezsec.html Follow these steps to tune security: 1. Use the minimum number of EJBROLES on methods. 2. Disable Java2 security. 3. Use the lowest level of authorization that is consistent with your security needs. 4. If using SSL, use the lowest level of encryption that is consistent with your security needs. Auto reload Auto reload pertains to JavaServer Pages (JSPs) and how often they are compiled. Consider performance when reloading JSPs. For more information, refer to this Web site: http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/uweb_jspreload.html SOAP SOAP is a means of sending and receiving messages. Follow these recommendations: 1. Specify no local copies in the servant.jvm.properties file. 2. Specify TX_NOT_SUPPORTED and select local transaction. 3. Avoid passing empty attributes or elements. 4. SOAP and XML tend to require larger heap sizes. Tune the heap accordingly. 5. Ensure that TCP/IP send/receive buffers can handle the bulk of the XML messages. 6. Choose a Document model rather than Remote Procedure Call (RPC), which gives you more control over the XML format. If using RPC, pass Strings if possible. 7. Consider writing your own serializers and deserializers, avoiding reflection. Application considerations The following link takes you to the information center topic that pertains to applications: http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/cprf_appdesign.html Also, read the top 10 Java 2 Platform, Enterprise Edition (J2EE) best practices at “The top 10 (more or less) J2EE best practices” by Kyle Brown, Keys Botzum, and Ruth Willenborg in IBM WebSphere Developer Technical Journal, May 12 2004: http://www.ibm.com/developerworks/websphere/techjournal/0405_brown/0405_brown.html 12 WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips 2 Chapter 2. WebSphere Application Server for z/OS Version 6.1.x tuning tips This chapter provides a “cheat sheet” to help you with the performance tuning of WebSphere Application Server V6.1 systems on z/OS. It provides three areas of concentration: “Tuning z/OS” on page 14 “Tuning the subsystems” on page 18 “Tuning the WebSphere Application Server run time” on page 21 The WebSphere Application Server Information Center explains all of the information that is referenced here in greater detail: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/rprf_zostuneindex.html Search any WebSphere Information Center with the search term: “tuning index”. This handy reference is designed to guide you toward an appropriate item to investigate. It is not designed to cover all scenarios. Whenever possible, we include a link to the information center to take you directly to the designated topic. © Copyright IBM Corp. 2009. All rights reserved. 13 2.1 Tuning z/OS The following recommendations pertain to components of the z/OS operating system. 2.1.1 Tuning storage The following link takes you to the information center section that pertains to storage: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/tprf_tunezstorage.html Virtual storage The following recommendations pertain to tuning z/OS virtual storage: 1. If using STEPLIB to the load modules, minimum REGION=512 MB. Previously recommended: Move the runtime load modules to the link pack area (LPA) (common storage) if possible in your environment. This situation is not as much of a concern in Version 6.1.x. The number and the size of load modules have decreased. For more information, refer to this Web site: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm. websphere.zseries.doc/info/zseries/ae/rprf_tunezprogloc.html 2. Use Resource Monitoring Facility (RMF) to determine if you need more paging space or auxiliary storage. Also, try the CCVUTILP options to get CPU utilization by second. 3. The following settings might limit virtual storage: a. Set the REGION in the JCL procedure. Recommendation: Set to 0M, which means take all of the REGION that is needed. b. IEFUSI exits limit virtual memory for running processes. Check for the exit to verify that you receive the expected memory. c. Use the MAXASSIZE setting in Unix System Services. Recommendation: Set MAXASSIZE = 2147483647. d. Use the MEMLIMIT setting in SMFPRMxx or in the JCL procedure. Real storage The following recommendations pertain to tuning z/OS real storage: 1. Set a minimum of 384 MB real storage for the smallest configuration. Storage utilization depends on the size of the Java virtual machine (JVM) heap. Having over 16 gigabytes of real storage on the machine is not uncommon for Java applications. 2. To reduce paging, configure with 64-bit real storage and give the logical partition (LPAR) more than 2 GB main storage. If the 31-bit mode is your only option, dedicate more expanded storage to reduce paging. 14 WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips Java virtual machine heap size The following recommendations pertain to tuning the Java virtual machine that is executing on the z/OS operating system: 1. To set the heap size in the administrative console, click Servers → Application Servers → server_name → Server Infrastructure → Process Definition → address_space_type → Java Virtual Machine. 2. Garbage Collection (GC): It is normal to get allocation failures from the heap. When an allocation failure occurs, the JVM invokes GC to reclaim unused space in the heap. GC takes control from your application. If GC runs too often, you will see poor performance while your application waits for GC to complete. Recommendation: Adjust the heap size so that GC runs less than or equal to 5% of the time. We often recommend the following tool to analyze GC traces: IBM Pattern Modeling and Analysis Tool for Java Garbage Collector: http://www.alphaworks.ibm.com/tech/pmat You can obtain this tool and other tools for analyzing GC traces at the IBM Support Assistant Web site: http://www.ibm.com/software/support/isa/ 3. Use verbose GC tracing to investigate how often GC runs and how much memory is being taken by your application. Click Servers → Application Servers → server_name → Server Infrastructure → Process Definition → address_space_type → Java Virtual Machine. Select the Verbose GC check box. The output goes to SYSOUT in the Job Entry Subsystem (JES) spool for the address space. 4. If the initial heap size is too large when GC finally starts, GC causes a long delay while it cleans the excessively large heap. 5. If you are paging already, increasing the heap can worsen the performance. You can monitor the heap by using the following modify command on the console: F <control process name>,DISPLAY,JVMHEAP To see if your page disk is full, issue the command: D ASM 2.1.2 Tuning the operating system The following recommendations pertain to tuning components that are built within the z/OS operating system. Refer to this link: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/rprf_tunezopsys.html Tuning component trace (CTRACE) CTRACE is a low level trace within z/OS. Eliminate overhead by ensuring that all components are either set to MIN or OFF. Issue the following console command to display settings: D TRACE, COMP=ALL Chapter 2. WebSphere Application Server for z/OS Version 6.1.x tuning tips 15 To change a component to its minimum tracing level, issue this command: TRACE CT , OFF , COMP=<component identifier> Tuning System Monitoring Facility System Monitoring Facility (SMF) allows you to capture the internal workings of z/OS components and the applications that execute on z/OS. Follow these steps: 1. Review the SMFPRMxx member to ensure that you collect the minimum data. 2. Use SMF 92 or 120 records only for diagnostics. If you choose to run with 120 records, use server and container interval rather than server activity and container activity records. Important: Using 120 records can cause significant performance degradation (be careful). 3. Ensure that SMF data that is being gathered for other subsystems is minimal and that the SMF datasets are allocated optimally. Tuning Resource Recovery Services The following recommendations pertain to tuning Resource Recovery Services (RRS) within the z/OS operating system. The following link takes you to the RRS configuration in the information center: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/rprf_tunezrrs.html Follow these steps: 1. Use the coupling facility (CF) logging rather than the DASD logging. If you must use DASD logging, use the highest performing DASD possible and allocate logs with large control interval (CI) sizes. 2. Monitoring SMF 88 records allows you to determine the optimal logging. 3. Table 2-1 shows the recommended default settings for the LOGR policy. Table 2-1 Recommended default settings for LOGR policy Log stream Initial size Size RM.DATA 1 MB 1 MB MAIN.UR 5 MB 50 MB DELAYED.UR 5 MB 50 MB RESTART 1 MB 5 MB ARCHIVE 5 MB 50 MB 4. Eliminate the ARCHIVE log by either not creating the ARCHIVE log or deleting the existing ARCHIVE log. The ARCHIVE log logs successful transactions; therefore, eliminating it can increase performance by decreasing I/O. 16 WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips Tuning UNIX System Services The following link takes you to the information center section that pertains to UNIX System Services: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/rprf_tunezuss.html Follow these steps: 1. Mount shared file systems as read-only in a sysplex. 2. Determine candidates for hierarchical file system (HFS) file caching by reviewing SMF 92 records. The initial cache size is set in the BPXPRMxx parmlib member. 3. Consider zSeries file system (zFS), which offers improved file system access. There is a conversion tool to convert existing HFS file systems to zFS file systems. Refer to the HFS to zFS Migration Tool, REDP-4328, at this Web site: http://www.redbooks.ibm.com/abstracts/REDP4328.html?Open You can obtain tips for tuning zFS in z/OS Distributed File Service zSeries File System Implementation z/OS V1R10, SG24-6580, at this Web site: http://www.redbooks.ibm.com/abstracts/sg246580.html?Open 4. Use the filecache command. You can cache high activity read-only files. 5. Allow the VMAX BPX parm to default to half of the physical memory. Shell utilities run slowly if the VMAX BPX parm is too small. Tuning Workload Manager (minimum required) The following link takes you to the information center section that pertains to Workload Manager (WLM): http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/rprf_tunezwlm.html A general rule for WLM is that it performs better with fewer service classes. Currently, the following service classes exist: 8 IMPORTANCE 1 Velocity 65 service classes 9 IMPORTANCE 1 Velocity 55 service classes 4 IMPORTANCE 2 Velocity 55 service classes 4 IMPORTANCE 3 Velocity 25 service classes 11 IMPORTANCE 3 Velocity 45 service classes 6 IMPORTANCE 3 Velocity 55 service classes 7 IMPORTANCE 4 Velocity 25 service classes 4 IMPORTANCE 5 Velocity 10 service classes Reducing the duplicates reduces the number of service classes, which improves WLM performance by reducing the number of decisions, thus, reducing the path length. We summarize the general rule for WebSphere and WLM on z/OS next. Chapter 2. WebSphere Application Server for z/OS Version 6.1.x tuning tips 17 WebSphere has several types of work running in its address spaces, so it is classified using classification rules under three types of workloads: 1. For STC workloads, the WebSphere address spaces’ control regions and servant regions are given an aggressive Velocity goal equal to or slightly less than DB2, IMS, or MQ and a goal equal to or slightly higher than CICS. 2. For OMVS workloads, the WebSphere address spaces’ control regions and servant regions are given an aggressive Velocity goal. Therefore, at startup, the BPXBATCH facility that is used to run the applyPTF.sh script does not slow the startup of the server. 3. For CB workloads, the WebSphere servant regions are given a response time with a percentile goal close to but not to exceed 90% of the work in .5 seconds. Even though WebSphere servers are long running tasks, typically, Velocity goals are used for long running tasks. The actual transactions within WebSphere are very short-lived HTTP type transactions. Response time with percentile goals is used for these short-lived transactions. The report classes that are associated with the classification rule for each workload are unique. Tuning Language Environment The following link takes you to the information center section that pertains to the Language Environment: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/tprf_tunezleheap.html Follow these steps: 1. For LPALSTxx, make sure that the Language Environment and C++ run times are in the LPA. 2. Do not use the following options in production: RPTSTG(ON), RPTOPTS(ON), or HEAPCHK(ON). 2.2 Tuning the subsystems The following information pertains to resources that run on z/OS but that are not necessarily tied to the operating system. 2.2.1 Tuning IBM HTTP Server The following link takes you to OS/390 e-business Infrastructure: IBM HTTP Server V5.1 for OS/390, SG24-5603: http://www.redbooks.ibm.com/abstracts/SG245603.html?Open Check the HTTP Server plug-in properties to see which properties might affect workload distribution and performance: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/uwsv_plugin_props.html 18 WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips 2.2.2 Tuning DB2 The following actions can help you tune the database management system: 1. Run the Runstats utility periodically to gather the correct statistics. If you think that the database is important to the business or that the database is large, this document stops at 150,000 rows (you can define the size). Run the utility at least once per week. 2. Ensure that the DB2 logs are large enough and that they are allocated on your fastest volumes. 3. Develop a DB2 buffer pool strategy for your data and application mix. Monitor the buffer pools regularly. 4. Monitor and adjust the memory usage of the EDM pool, record identifier (RID) pool, and sort pools for your workload. 5. Ensure a good physical database design by assigning tablespaces to tables that are based on the size and usage of the tables. Avoid simple tablespaces. 6. Properly index tables to avoid table space scans and sorts. 7. Reorganize tables to maintain clustering and free space. 8. Use the latest Java Database Connectivity (JDBC) maintenance level. The JDBC level is in the address space output. 9. Enable dynamic statement caching. 10.Turn off JDBC tracing. 11. Develop an SQL monitoring and tuning strategy to identify poorly performing SQL statements. 2.2.3 Tuning RACF The following link takes you to the information center section that pertains to security: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/tsec_tune.html Follow these steps: 1. If you do not use EJBROLES, do not enable the class in RACF. 2. If you do not need Java2 Security, disable it. 3. RACLIST CBIND, EJBROLE, SERVER, and STARTED. 4. Use Peripheral Component Interconnect (PCI) Crypto cards to speed up the Secure Sockets Layer (SSL). 5. Use virtual lookaside facility (VLF) to cache user identifiers (UIDs)/group identifiers (GIDs) in the COFVLFxx parmlib member. Chapter 2. WebSphere Application Server for z/OS Version 6.1.x tuning tips 19 2.2.4 Tuning TCP/IP The following steps help you tune items that pertain to the network: 1. Set MAXSOCKETS and MAXFILEPROC high enough. Set both MAXSOCKETS and MAXFILEPROC to 5000 for low throughput, 10000 for medium throughput, and 35000 for high throughput environments. The D OMVS,L,PID=XXX command shows the limit, current value, and high mark. 2. Specify NODELAYACKS for ports in the TCP/IP profile (especially for SSL ports). Example definitions are generated inside the customization jobs and directions when building a WebSphere Application Server cell. 3. Cache frequent lookups in the Domain Name System (DNS). 4. Increase send and receive buffers from 16 KB to 64 KB (it is reasonable for the buffers to be 256 KB). 5. Increase the default listening backlog from 10 to 100 connections. 6. Reduce the finwait2 time setting from 600 to 60 seconds. 2.2.5 Tuning MQ/Java Message Service (JMS) connections The following steps can help you tune the messaging system: 1. Turn off all tracing. 2. Use long-lived queue manager connections as opposed to create/destroy on every message. 3. Use the bindings mode if the queue manager and the client are on the same z/OS image. 4. Use automated acknowledgments to reduce the message delay. 5. Use the same coded character set identifier (CCSID) to eliminate translation between the client and the queue manager. 6. Small messages are best. If a message must be over 1 MB, send it as one message rather than breaking it into several smaller messages. 7. Persistent transacted messages perform better than persisted non-transacted messages, because the commit happens at the end of the transaction. 8. Nonpersistent, non-transactional messages perform best. Use them whenever possible. 9. MQ application support filter (ASF) adds more overhead than non-ASF messaging. 10.Local queues that are defined as shared generally perform better than non-shared queues. 11. Message-driven beans (MDBs) are asynchronous. Do not force serial mode (maxsession=1). Set maxsession realistically to the number of concurrent sessions. 12. The timeout setting for the JMS server is the control_region_jms_request_timeout default of 60 and a range from 0 - 2147040. 13.For full WebSphere MQ, optimize the number of concurrent queue manager connections: CTHREAD is the maximum number of connections. It must be greater than or equal to the sum of IDBACK and IDFORE. It is normal for these values to be in the hundreds. 14.Adjust the checkpoint interval and active log buffers. LOGLOAD controls the number of records before a checkpoint. LOGLOAD is often 900000 to avoid frequent log switching. A checkpoint needs to occur no more than every 5 or 6 minutes. WRTHRSH is the number of active log buffers. We often use 200; if you see high I/O, you might want to increase it. 20 WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips 2.2.6 Tuning global resource serialization (GRS) The following tip can help you tune the sysplex communication. If you are not in a sysplex, configure GRS=NONE. If you are in a sysplex, configure GRS=STAR. 2.2.7 Tuning the Java virtual machine The following steps can help you tune the Java virtual machine (JVM): 1. Use the just-in-time (JIT) compiler; do not turn it off. 2. Do not use the debug dynamic link libraries (DLLs) in your libpath. 3. Point the classpath at only those classes that you need, with the most frequently referenced classes near the beginning of the classpath. 4. Investigate the generic JVM arguments: -Xquickstart and –Xverify:none. There must be a serious concern about server startup time to use these JVM arguments. The -Xquickstart argument can cause degradation during run time in favor of a faster startup time (be careful with these arguments). 5. Searching for missing classes can result in significant I/O and wasted time. 6. Review the IBM Education Assistant presentation that describes the Java 5.0 Software Developer Kit (SDK) that is included in WebSphere Application Server for z/OS Version 6.1: http://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/index.jsp?topic=/com.i bm.iea.was_v6/was/6.1/ProgrammingModels/WASv61_Java5/player.html 2.2.8 Tuning CICS The following tips can help you tune your existing transaction management system: 1. Set LGDFINT=5. Setting the log defer interval to 5 milliseconds proves to be best value in our tests. You can set the log defer interval dynamically: CEMT SET SYSTEM [LOGDEFER(value)] 2. Set RECEIVECOUNT to handle all concurrent external CICS interface (EXCI) pipes. The default is 4. 2.3 Tuning the WebSphere Application Server run time In the following section, we provide tuning tips that pertain to the application server run time. 2.3.1 Tuning application servers The following link takes you to the information center section that pertains to the application server: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/tprf_tunezconfig.html Chapter 2. WebSphere Application Server for z/OS Version 6.1.x tuning tips 21 Object Request Broker (ORB) The object request broker is internal to the application server: 1. Use pass by reference by setting the following variable. Click Servers → Application Servers → server_name → Container Services → ORB Service. Select the pass by reference check box. 2. Investigate com.ibm.CORBA.FragmentSize in the information center. XML parser definitions You can add an XML parser to the run time, and it is not necessarily created by IBM. Refer to the options for your XML parser to obtain tuning guidance. The following links might help: Improve performance in your XML applications, Part 1 http://www.ibm.com/developerworks/xml/library/x-perfap1.html Improve performance in your XML applications, Part 2 http://www.ibm.com/developerworks/xml/library/x-perfap2.html XML parsers have properties. Investigate the properties for the parser that you choose. Dynamic cache service The dynamic cache service is internal to the application server. The following link takes you to the information center topic that discusses the dynamic cache service: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.web sphere.zs Follow these steps: 1. Use the dynamic cache service. Look for cachespec.xml in the information center. 2. The dynamic cache service is located in the administrative console. Click Servers → Application Servers → server_name → Container Services → Dynamic Cache Service. EJB container The Enterprise Java Bean (EJB) container is internal to the application server. The following link takes you to the information center topic that pertains to the EJB container: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/rprf_ejbcontainer.html Follow these steps: 1. Set the cleanup interval to clean up unused items. The default is 3000 milliseconds. Increase the interval as the cache size increases. 2. Set the cache size to the maximum number of active instances during a typical workload. 3. Break container-managed persistence (CMPs) into several EJB modules during assembly. 4. The EJB container settings are located in the administrative console at Servers → Application Servers → server_name. 22 WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips Session management The following link takes you to the information center topic that pertains to application session management: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/rprs_sest.html These tips can help you tune session management: 1. The session management settings are already set at the optimal settings when you begin. 2. Session Management is located in the administrative console. Click Servers → Application Servers → server_name → Container Settings → Web Container Settings → session management. Data sources Data sources are defined when you want to access data outside of your application server. Use these tips to tune your data sources: 1. Review information about connection pooling in the information center. 2. Set the maximum connection pool lower than the value of the Web container thread pool size. Lower settings of 10 - 30 perform better than settings of 100. 3. Set the minimum connection pool. 4. Set the statement cache size (unique + callable statements for each application that uses this data source). 5. Data sources can be located in the administrative console. Click Resources → JDBC providers → your_jdbc_provider → Data Sources. 2.3.2 Tuning the run time The following topics pertain to the environment but not necessarily to the internal components of the application server. Tracing The following link takes you to the information center topic that pertains to the runtime trace: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/rprf_tuneztrace.html Follow these steps: 1. Ensure that you are not tracing more information than necessary. In the administrative console, click Environment → WebSphere Variables. 2. Check that ras_trace_defaultTracingLevel = 0 or 1. Increasing this value higher than 1 affects the performance. 3. Verify that ras_trace_basic and ras_trace_detail are not set. The less information that you trace, the better your performance. 4. Set ras_trace_outputLocation to BUFFER only. 5. Set ras_traceBufferCount=4 and ras_trace_BufferSize=128. 6. Disable JRas tracing in the administrative console. Click Troubleshooting → Logs and trace → server_name → Change Log Detail Levels. 7. Set the following trace specs: *=all=disable Chapter 2. WebSphere Application Server for z/OS Version 6.1.x tuning tips 23 Security The following link takes you to the information center topic that pertains to runtime security: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/rprf_tunezsec.html Follow these steps to tune security: 1. Use the minimum number of EJBROLES on methods. 2. Disable Java2 security. 3. Use the lowest level of authorization that is consistent with your security needs. 4. If using SSL, use the lowest level of encryption that is consistent with your security needs. Auto reload Auto reload pertains to JavaServer Pages (JSPs) and how often they are compiled. Consider performance when reloading JSPs. For more information, refer to this Web site: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/uweb_jspreload.html SOAP SOAP is a means of sending and receiving messages. When using SOAP, follow these steps: 1. Specify no local copies in the servant.jvm.properties file. 2. Specify TX_NOT_SUPPORTED and select local transaction. 3. Avoid passing empty attributes or elements. 4. SOAP and XML tend to require larger heap sizes. Tune the heap accordingly. 5. Ensure that the TCP/IP send/receive buffers can handle the bulk of the XML messages. 6. Choose a Document model rather than Remote Procedure Call (RPC), which gives you more control over the XML format. If using RPC, pass Strings if possible. 7. Consider writing your own serializers and deserializers, thus, avoiding reflection. Application considerations The following link takes you to the information center topic that pertains to applications: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.web sphere.zseries.doc/info/zseries/ae/cprf_appdesign.html Also, read the top 10 Java 2 Platform, Enterprise Edition (J2EE) best practices at “The top 10 (more or less) J2EE best practices” by Kyle Brown, Keys Botzum, and Ruth Willenborg in IBM WebSphere Developer Technical Journal, May 12 2004: http://www.ibm.com/developerworks/websphere/techjournal/0405_brown/0405_brown.html 24 WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips 3 Chapter 3. One page performance overview We designed this one page performance overview for you to print separately and keep with you as a handy reminder of the options that are discussed in this paper. © Copyright IBM Corp. 2009. All rights reserved. 25 26 WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips Tuning z/OS Virtual storage Determine paging with RMF Use CCVUTILP to get CPU utilization by second Do not limit virtual storage Region=0 IEFUSI exits MAXASSIZE MEMLIMIT Real storage Memory for the LPAR in the teens 16 GB or more is good 64 bit is the default for Version 7 WLM MQ/JMS Limit number of service classes to minimum Classify WebSphere address spaces under STC, CB, and OMVS workloads Slightly less aggressive or equal to DB2, IMS, or MQ More aggressive CICS Language Environment Language Environment and C++ modules in LPA Use RPTSTG, RPTOPTS, and HEAPCHK only in test JVM Check garbage collection often Adjust heap size, GC <5% Do not increase heap if paging already Use the JIT, do not turn off No debug dlls Minimal classpath, with frequently referenced classes in the beginning No searching for missing classes, which consumes much I/O DB2 Run the runstats utility regularly Adequate size for DB2 logs Monitor buffer pools regularly Monitor EDM, RID, and sort pools for your application regularly Stay away from simple table spaces Index tables Re-org tables regularly Apply latest JDBC maintenance Monitor performance of SQL statements regularly Tuning the operating system and resource managers RACF CTRACE Set components to min/off SMF Type 92 or 120 are for diagnostics only Try subtype9 (new to Version 7) Allocate SMF datasets optimally RRS Use CF rather than DASD Delete the archive log or do not create the archive log UNIX System Services Mount shared file systems read-only Use SMF92 set cache size Consider zFS over HFS Filecache command hit rate Use VMAX BPX parameter default value Only enable used classes Disable Java2 security if not used RACLIST (CBIND, EJBROLE, SERVER, and STARTED) Use PCI Crypto cards for SSL COFVLFxx parmlib member to cache UIDs/GIDs CICS MAXSOCKETS at higher levels, as high as 35000 MAXFILEPROC at higher levels, as high as 35000 NODELAYACKS for ports Cache frequent DNS lookups Increase buffers (send/receive) Increase default listen backlog Reduce finwait2 time LGDFINT=5 is best setting RECEIVECOUNT must handle all concurrent EXCI pipes Tuning the application server run time ORB Use pass by reference Investigate FragmentSize parm XML parser Whatever parser you choose will have properties; investigate them Dynamic cache TCP/IP Turn off all tracing Use long-lived qmgr connections Use bindings mode when possible Use auto acknowledgements Use the same CCSID Small messages are best If over 1 MB, send in 1 message Persist transacted perform better than persist non-transacted Non-ASF messaging performs better than ASF messaging Local queues shared perform better than non-shared queues Do not force serial mode for MDBs (maxsession=1) CTHREAD>=IDBACK+ IDFORE Checkpoints every 5 or 6 minutes – adjust log buffers Use the dynamic cache service Code the cachespec.xml EJB container The cleanup interval increases as cache size increases Set the cache size to the max number of active instances Session management Optimal setting as shipped Data sources Max connection pool < Web container thread pool Chapter 3. One page performance overview 27 28 WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips Related publications The publications listed in this section are considered particularly suitable for a more detailed discussion of the topics covered in this paper. IBM Redbooks publications For information about ordering these publications, see “How to get IBM Redbooks publications” on page 30. Note that several of the documents that are referenced here might be available in softcopy only. HFS to zFS Migration Tool, REDP-4328 z/OS Distributed File Service zSeries File System Implementation z/OS V1R10, SG24-6580 OS/390 e-business Infrastructure: IBM HTTP Server V5.1 for OS/390, SG24-5603 Online resources These Web sites are also relevant as further information sources: WebSphere Application Server V7 Information Center http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp WebSphere Application Server V6.1 Information Center http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp IBM Pattern Modeling and Analysis Tool for Java Garbage Collector http://www.alphaworks.ibm.com/tech/pmat IBM Support Assistant http://www.ibm.com/software/support/isa/ Improve performance in your XML applications, Part 1 http://www.ibm.com/developerworks/xml/library/x-perfap1.html Improve performance in your XML applications, Part 2 http://www.ibm.com/developerworks/xml/library/x-perfap2.html “The top 10 (more or less) J2EE best practices” by Kyle Brown, Keys Botzum, and Ruth Willenborg in IBM WebSphere Developer Technical Journal, May 12 2004 http://www.ibm.com/developerworks/websphere/techjournal/0405_brown/0405_brown.h tml IBM Education Assistant: IBM Java 50 SDK http://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/index.jsp?topic=/com.i bm.iea.was_v6/was/6.1/ProgrammingModels/WASv61_Java5/player.html © Copyright IBM Corp. 2009. All rights reserved. 29 How to get IBM Redbooks publications You can search for, view, or download IBM Redbooks publications, Redpapers, Technotes, draft publications and Additional materials, as well as order hardcopy IBM Redbooks publications, at this Web site: ibm.com/redbooks Help from IBM IBM Support and downloads ibm.com/support IBM Global Services ibm.com/services 30 WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips Back cover WebSphere Application Server for z/OS V6.1 and V7 Tuning Tips Explore tuning tips for z/OS This IBM Redpaper publication provides a quick handy reference or “cheat sheet” for tuning WebSphere Application Server for z/OS V6.1 and V7. It focuses on three areas: Investigate tuning tips for subsystems and resources Tuning z/OS Tuning the subsystems Tuning the WebSphere Application Server run time Tune WebSphere Application Server run time This “cheat sheet” is designed to guide you toward an appropriate item to investigate. It is not designed to cover all scenarios or provide detailed information. When possible, we include a link to the information center to take you directly to the designated topic: For Version 7.0.x, see Chapter 1, “WebSphere Application Server for z/OS Version 7 tuning tips” on page 1. For Version 6.1.x, see Chapter 2, “WebSphere Application Server for z/OS Version 6.1.x tuning tips” on page 13. For a quick summary to use as a handy reference, print Chapter 3, “One page performance overview” on page 25. This paper is intended for individuals who want to tune the performance of WebSphere Application Server for z/OS V6.1 or V7. ® Redpaper INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment. For more information: ibm.com/redbooks REDP-4628-00 ™