IBM WebSphere Portal 7.0 Performance Tuning Guide

Size: px
Start display at page:

Download "IBM WebSphere Portal 7.0 Performance Tuning Guide"

Transcription

1 IBM WebSphere Portal software family Your world. Your way. IBM WebSphere Portal 7.0 Performance Tuning Guide IBM Collaboration Solutions Performance Team December 2010 Document version 1

2 Contents PERFORMANCE TUNING OVERVIEW... 1 Environment Considerations bit and 64-bit Considerations... 2 Hardware Multithreading (Hyper-Threading)... 3 Portal Topologies... 3 BASE PORTAL TUNING... 6 Application Server Tuning... 7 JVM Initial and Maximum Heap Size... 7 JVM Heap Large Pages... 9 JVM Heap New Area Size Shared Class Cache Size Additional JVM Arguments Additional SUN JVM Arguments Additional Z/OS JVM Arguments JVM Heap Compressed References Option on z/os JDK fixes Session Timeout Web Container Thread Pool Size DataSource Tuning Security Attribute Propagation Internationalization Service Tuning Disabling Tagging And Rating Disabling Friendly URLs LTPA Tuning Enabling Base URLs in themes Disabling Search VMM Tuning ORB Service Tuning For z/os WebSphere Portal Services Navigator Service Registry Service Cache Manager Service Database Tuning DB2 Database Server Tuning Oracle Database Server Tuning Other Database Considerations Directory Server Tuning Web Server Tuning ii

3 Plug-in Tuning Operating System Tuning AIX Linux Windows Solaris Z/OS Page Builder Theme Tuning CacheManagerService Properties Ensuring Browser Cache Works Properly for Internet Explorer Reducing Redirects Serving WebDAV resources Mashup Multipart tuning in Server Side Mode Disabling Personalization visibility rules on pages and portlets Using a Caching Proxy Web Server Tuning MANY PAGES TUNING DB2 Database Tuning Cache Manager Service WEB CONTENT MANAGEMENT TUNING Application Server Tuning WebSphere Portal Service Properties Cache Manager Service Access control data management Service Navigation Service Personalization service WCM Object Cache WCM Configuration Service Web Content Viewer portlet caching JCR Text Search DB2 Tuning (Authoring Environment) Multiplatform (LUW) Z/OS Oracle Tuning (Rendering and Authoring) CLUSTER TUNING Application Server Tuning Dynacache Custom Properties Dynamic Cache Replication VMM Context Pooling Session Persistence To Memory-Memory Tuning iii

4 JVM Heap Session Persistence Tuning WAS FixPack AIX Network Plugin Session Persistence To Database Tuning Vertical Cluster Tuning OTHER PERFORMANCE TUNING OPTIONS Nested Group Cache Recording Last Login Time for Users Optimizing Retrieval of Permissions in Access Control Improving Portal Startup Performance WebSphere Portal Development Mode WebSphere Portal Light Mode Managing the Retrieval of User Attributes Identifying a Full Fetch of User Attributes Minimum Attribute Set Use of Dynamic Content Features Personalization Best Practices Compress Content on the HTTP Server Enabling Client-Side Caching Portlet Caching Setting the Login Page to Cacheable WEBSPHERE PORTAL CACHES General Information Cache Configuration Properties Cache Usage Patterns Cache Instances Access Control Portal User Management Datastore Model URL Mappings Virtual Portals WSRP Dynamic Assembly / Process Integration Policy Collaboration Services Miscellaneous Example Scenarios iv

5 General Comments Small Number of Pages and Small Number of Users Small Number of Pages and Large Number of Users Portals with Long Session Timeouts Portals with Many Pages WEB CONTENT MANAGEMENT CACHES WCM Cache Instances WCM Item caching WCM Summary WCM Basic Caching Advanced and Resources Session Cache Menu Navigator Absolute path Missed Items Library Library Parent Draft Summary User cache Appendix A. References Appendix B. Credits Figures Figure 1 Portlet Settings Screenshot Figure 2 Portal Access Control Cache Hierarchy Figure 3 Portal Model Cache Hierarchy Tables Table 1: Additional Sun JVM Settings Table 2: Database Domains Table 3: WebSphere Security Attribute Propagation Settings Table 4: Tagging and Rating Setting Table 5: Friendly URL s Setting Table 6: WebSphere Security LPTA2 Settings v

6 Table 7: VMM Context Pool Setting Table 8: VMM Cache Setting Table 9: Navigation Service Settings Table 10: Registry Service Settings Table 11: Cache Manager Service Settings Table 12: Oracle Database Tuning Table 13: IDS Tuning Table 14: Web Server Tuning Table 15: AIX Network Settings Table 16: Linux Network Settings Table 17: Windows Network Settings Table 18: Solaris Network Settings Table 19: z/os System Tuning Table 20: CacheManager Service Settings for default portal 7 Page Builder Theme Table 21: Mashup Multipart Mode Setting Table 22: HTTP server settings for use with HTTP caching Table 23: Reverse Proxy Settings Table 24: DB2 Database Settings for Many Pages Table 25: Cache Manager Service Settings for Many Pages Table 26: Cache Manager Service Settings for WCM Table 27: Access Control Data Management Service Settings for WCM Table 28: Navigation Service Settings for WCM Table 29: Personalization Service Setting for WCM Complex Rendering Table 30: WCM Object Cache Settings Table 31: DB2 z/os Bufferpool Settings Table 32: WebSphere Mem-Mem Session Persistence Tuning Table 33: WebSphere Session Persistence Tuning vi

7 1 ABOUT THIS DOCUMENT This white paper provides a basis for parameter and application tuning for IBM WebSphere Portal for Multiplatform, for Linux on System Z, and z/os V7.0. Remember that both tuning and capacity are affected by many factors, including the workload scenario and the performance measurement environment. For tuning, the objective of this paper is not to recommend that you use the values we used when measuring our scenarios, but to make you aware of those parameters used in our configuration. When tuning your individual systems, it is important to begin with a baseline, monitor the performance metrics to determine if any parameters should be changed and, when a change is made, monitor the performance metrics to determine the effectiveness of the change. PERFORMANCE TUNING OVERVIEW Tuning a WebSphere Portal environment involves tuning and configuring the various systems and components of the environment. This chapter discusses some general concepts and details the specifics of the configuration used in our measurement environments. These specifics entail: Configuring the application server and the resources defined for that application server Tuning the database(s) and database server Tuning the directory server and its database Tuning the web server and/or proxy server Tuning the operating system and network Tuning the WebSphere Portal services When tuning your individual systems, it is important to begin with a baseline, monitor the performance metrics to determine if any parameters should be changed and, when a change is made, monitor the performance metrics to determine the effectiveness of the change. 1

8 In addition to the tuning changes we made in our measurement environments, there are some additional tuning options available which can improve performance in certain circumstances; these will be discussed in a separate section. Environment Considerations Before beginning your install of WebSphere Portal you should consider how to use the environment in order to achieve ideal performance. Topics to consider include: Choosing between 32-bit and 64-bit JVMs Use of hardware multithreading, also known as Simultaneous Multithreading or Hyper-Threading. Choosing server topology to support user and system load 32- B I T A N D B I T C O N S I D E R A T I O N S The choice of a 32-bit or 64-bit JVM involves some trade-offs. The key advantage of a 64-bit JVM is its vastly larger address space. Heap sizes of 2.5GB or larger can be practical on modern server systems. This can be a significant benefit for applications with high memory demands. A 64-bit JVM does have disadvantages as well. Machine instructions and memory references in a 64-bit JVM are larger than in a 32-bit JVM. This means that Java objects, which typically contain multiple memory references, are larger in a 64-bit JVM than compared to a 32-bit JVM. Therefore a 64-bit JVM will need a larger heap than a 32-bit JVM for the same population of objects. The increased size of instructions and memory references imposes a second performance penalty. They increase the demand on the memory subsystem of the system, causing more cache misses and a higher demand for memory bandwidth. As a result, executing a set of operations in a 64-bit JVM can be slower than executing the same operations in a 32-bit JVM. When considering a deployment of WebSphere Portal 7.0, consider the memory demands your applications will have. If you expect a high demand for memory, the best performance will probably come from a 64-bit JVM. On the other hand, if the memory demand is lower, a 32-bit JVM is likely to give superior performance. For some newer hardware, Power6 running AIX 64-bit JVM, for example, 64-bit outperformed the 32-bit JVM. Take this into account when considering 32-bit versus 64-bit JVMs. 2

9 H A R D W A R E M U L T I T H R E A D I N G ( H Y P E R - T H R E A D I N G ) Many modern processor architectures support hardware multithreading. For example, this is known as Hyper-Threading (HT) on Intel processors and Simultaneous Multithreading (SMT) on Power-series processors. Our experience is that using hardware multithreading provides an improvement in capacity in all of the scenarios and platforms we have measured, so we would recommend its use on platforms where this is an option. P O R T A L T O P O L O G I E S WebSphere Portal supports a variety of deployment topologies. Typical deployments will use a three-tier configuration: HTTP server(s). Application server(s) Database and directory server(s) The primary benefit of having a multi-tiered configuration is to avoid resource contention brought on from multiple databases and applications residing on a single server. For example, if the database server shares a node with the application server, the combined resource contention would negatively impact the amount of throughput achievable. On the other hand, a small deployment may have sufficiently small resource requirements that some of these servers could be deployed on a single node. S I N G L E - S E R V E R T O P O L O G Y For smaller deployments, some of these tiers may be run on a single system. For example, a common configuration for smaller environments is to use a single node to run the HTTP server and the application server, while the database and directory servers are still on separate systems. This is the configuration we have used for our single-server configuration. C L U S T E R T O P O L O G Y A cluster deployment has one or more nodes in each tier. The cluster configuration we used in our lab, as follows: The first tier is a web server. We used the WebSphere plugin for load balancing. The incoming client HTTP requests are routed by the plugin to a cluster of Portal servers using the default Round Robin load balancing algorithm. 3

10 Many clustered deployments will use multiple HTTP servers with a load balancer directing traffic to those servers. This will provide additional capacity at the HTTP servers as well as server failover support at the HTTP server layer. The second tier consisted of the Portal servers and the Deployment Manager. The Portal servers execute portlets and other application logic to handle the client requests. The Deployment Manager coordinates all Portal server processes through a node agent process running on each node. Incoming HTTP requests from the web server (first tier) were routed to one of the three Portal server nodes using the WebSphere plugin. With session affinity, the plugin will attempt to route all requests associated with a particular session to the same node. The third tier included all the databases: LDAP, and Portal databases. These servers received requests from the Portal servers in the cluster. The following diagram depicts the three-tiered cluster topology we used in our lab for LUW. Figure 1: Portal Cluster Topology for LUW. 4

11 The following diagram depicts the two-tiered cluster topology we used in our lab for System Z. Figure 1: Portal Cluster Topology for System Z. 5

12 2 BASE PORTAL TUNING The Base Portal Scenario covers user login, page navigation, and interaction with simple portlets. Users can see a small set of pages, some of which are visible to all authenticated users, with access to others based on their group membership. We have also benchmarked a number of other scenarios, which focus on different functions or use cases for WebSphere Portal. For example, there are scenarios which make use of Web Content Management (WCM), and a scenario where users have access to thousands of pages. While we have used different tuning to optimize performance for some of those scenarios, the tuning is all based on the tuning done in the Base Portal Scenario. The tuning covered in this section applies to all portal themes. For the default Page Builder theme on Portal 7, additional tuning can be found in the Page Builder tuning section. In all of our measurement environments, we use a separate database server and directory server, in addition to the WebSphere Portal server. We run these servers on separate systems to avoid resource contention on the system running the WebSphere Portal server. This helps improve the maximum capacity achievable. 6

13 Application Server Tuning There are many aspects to configuring and tuning an application server in WebSphere Application Server. We found that those aspects presented here were critical to a correctly functioning and optimally performing WebSphere Portal in our laboratory environment. For more details on tuning a WebSphere Application Server, see the Tuning Section of the information center located at: How to get to Admin Console There are two methods to get to WebSphere Administrative Console. Start Server1 and use port In <WAS_root>/profiles/wp_profile/bin 2../startServer.sh server Start Portal and use port In <WAS_Root>/profile/wp_profile/bin 2../startServer.sh WebSphere_Portal 3. The port numbers given above (10001 and 10027) are the port numbers in our lab deployments, but other deployments may use different ports. To find out the ports in use for your installation, look for adminhost in <wp_profile root>/config/cells/<cell_name>/ nodes/<node_name>/serverindex.xml. The following are settings based on our experience with the Base Portal workloads described above: J V M I N I T I A L A N D M A X I M U M H E A P S I Z E Java Virtual Machine heap size: The value of the JVM Heap size is directly related to the amount of physical memory on the system. Never set the JVM heap size larger than the physical memory on the system. How-To Set: In the WebSphere Administrative Console: Servers Application Servers WebSphere Portal Server Infrastructure: Java and Process ManagementProcess Definition Java Virtual Machine - Initial Heap Size - Maximum Heap Size See JVM Max Heap Size Limits for further discussion. 7

14 See instruction on How to get to Admin Console J V M M A X I M U M H E A P S I Z E L I M I T S When setting the heap size for an application server, keep the following in mind: Make sure that the system has enough physical memory for all of the processes to fit into physical memory, plus enough for the operating system. When more memory is allocated than the physical memory in the system, paging will occur, and this can result in very poor performance. We set the minimum and maximum heap sizes to the same values since we re using the generational concurrent (or gencon ) garbage collection policy available since 1.5 IBM JDK which policy helps avoid heap fragmentation. After doing any tuning of heap sizes, monitor the system to make sure that paging is not occurring. As mentioned above, paging can cause poor performance. 32-bit operating systems have an address space limit of 4GBytes, regardless of the amount of physical memory in the system. This space limits the maximum size of each individual process in the system. In addition, some operating systems restrict the size of processes to be even less than this limit. Many versions of Windows limit processes to 2GBytes in size; you can find more information at The address space limit further restricts the size of the JVM process. If the process grows larger than the limit imposed by the operating system, it may terminate unexpectedly. After doing any heap size tuning, monitor the verbose garbage collection output to determine if the selected heap size is appropriate. Ideally, the system should spend no more than 5-10% of its time in garbage collection. On z/os systems, make sure to monitor the control region as well as the servant region(s). To understand verbose garbage collection output, refer to Memory Analysis in IBM WebSphere Portal Performance Troubleshooting Guide. Due to the demands on native memory by WebSphere Portal V7.0 and its underlying components, we chose a maximum heap size of 1408MB in our Windows environments. There is a balance between JVM heap and native memory, all of which must fit within the 2GB restriction in 32-bit Windows. 1408MB was the largest value we could use to successfully measure all of our Windows configurations and workloads. If your application has additional native memory requirements then you may need to choose a smaller maximum heap size. For more information, see the WebSphere Application Server information center. 8

15 Parameter AIX Linux Solaris Initial and Maximum heap size (Mbytes) 32 bit 64 bit Note: N/M means Not measured Window s 2003 z/linux z/os N/M 1408 N/M Not supported 3072 N/M J V M H E A P L A R G E P A G E S Large pages can reduce the CPU overhead needed to keep track of heap. With this setting we have seen 10% throughput improvement in our measurements. This setting does improve performance on Windows, we did not set it for our measurements because Portal doesn t start reliably when Xlp is set, sometimes it may require a system reboot before starting or restarting a jvm. How-to Set: In the WebSphere Administrative Console: Servers Application Servers WebSphere Portal Server Infrastructure: Java and Process Management Process Definition Java Virtual Machine Generic JVM Argument. Add Xlp. Large pages are supported by systems running Linux kernels V2.6 or higher. See JVM Large Page Tuning for AIX Operation System. J V M L A R G E P A G E T U N I N G O N A I X O P E R A T I N G S Y S T E M To use JVM Large Page, AIX operating system must be configured to support large pages. How-To Set: 1. We use the following steps to allocate 4GB of RAM as large pages (16MB). We chose this amount based on having 8GB of physical memory in these systems. These values may need to be adjusted on systems with different amounts of physical memory. vmo -r -o lgpg_regions=256 -o lgpg_size= bosboot -ad /dev/ipldevice reboot -q vmo -p -o v_pinshm=1 chuser capabilities=cap_bypass_rac_vmm,cap_propagate $USER 2. Add: -Xlp command-line option as described above. 3. In the WebSphere Administrative Console: Servers Application Servers WebSphere Portal Server Infrastructure: Java and Process ManagementProcess Definition 9

16 Environment Entries New EXTSHM=OFF (note: When EXTSHM is on it prevents use of large page). 4. Restart Portal Server. To verify if large pages are being used, run the AIX command vmstat -l 1 5 and check the alp column, which is the active large page used. It should be a non-zero value if large pages are being used. J V M L A R G E P A G E T U N I N G O N Z L I N U X O P E R A T I N G S Y S T E M To use JVM Large Page, the zlinux operating system must be configured to support huge pages. How-To Set: 1. We use the following steps to allocate 6GB of RAM as huge pages using the default huge page size of 2MB. We chose this amount based on having 16GB of physical memory available on this system. These values may need to be adjusted on systems with different amounts of physical memory. 2. Add: -Xlp command-line option as described above. 3. In the WebSphere Administrative Console: Servers Application Servers WebSphere Portal Server Infrastructure: Java and Process ManagementProcess Definition Environment Entries New EXTSHM=OFF (note: When EXTSHM is on it prevents use of huge page). 4. To dynamically allocate the number of huge pages that are available issue command: echo 3072 > /proc/sys/vm/nr_hugepages (this must be set across reboots) 5. To permanently set the reboot value across reboots edit /etc/sysctl.conf and add line: vm.nr_hugepages= To verify if large pages are being used issue command: grep Huge /proc/meminfo The following information should be displayed: HugePages_Total: 3072 HugePages_Free: 3072 HugePages_Rsvd: 0 Hugepagesize: 2048 KB 7. Restart Portal Server Parameter AIX Linux Solaris JVM Heap Large page -Xlp -Xlp Not Applicable Windows 2003 Not Applicable z/linux -Xlp z/os Not Applicable 10

17 J V M H E A P N E W A R E A S I ZE The IBM Java 5 JVM introduced a new garbage collector, the generational concurrent garbage collector. In our measurements, we found that this garbage collector gave superior performance, and this is enabled by default on new WebSphere Portal 7.0 installations. It is enabled with the JVM command-line argument -Xgcpolicy:gencon. This garbage collector can be fine-tuned by setting the size of the nursery (the space where new objects are allocated). This is done with the Xmn command-line option. In our scenarios, we observed that the JVM was under-sizing the new area (Nursery) size and increasing the size to the values recommended below increased throughput. In Solaris, a generational garbage collector is the default, so the option -Xgcpolicy:gencon does not apply. How To Set: In the WebSphere Administrative Console: Servers Application Servers WebSphere Portal Server Infrastructure: Java and Process ManagementProcess Definition Java Virtual Machine Generic JVM Arguments: Xmnxxxm Parameter AIX Linux Solaris Windows 2003 z/linux z/os New Area Size 32 bit 64 bit N/M 256 N/M Not supported 1024 N/M Note: on Solaris, the nursery size can also be specified with the option XX:NewSize. N/M means Not measured. S H A R E D C L A S S C A C H E S I Z E Class sharing in the IBM JVM offers a transparent and dynamic means of sharing all loaded classes, both application classes and system classes. More information about this feature is given in the IBM Java Diagnostics Guide. From the point of performance, this can reduce the startup time for a JVM after the cache has been created. It can also reduce the virtual storage required when more than one JVM shares the cache. WebSphere Application Server enables class data sharing by default, and sets the size of this cache to 50MB. Many WebSphere Portal applications will have more than 50MB of shared class data, so an additional benefit can be achieved by increasing this cache size. We found that about 75MB was in use after starting the portal, so we used a shared class cache size of 120MB to allow room for additional applications. We also saw that by 11

18 increasing the size of the shared class cache, our performance results were more repeatable across multiple measurements, particularly on AIX. The shared class cache persists until it is destroyed, thus you must destroy it first if you are to change its size. How to Set: 1. In the WebSphere Administrative Console: Servers Application Servers WebSphere Portal Server Infrastructure: Java and Process ManagementProcess Definition Java Virtual Machine Generic JVM Arguments: Xscmxnnnm Parameter AIX Linux Solaris Windows 2003 z/linux z/os Cache size 32 bit 64 bit 120 Not used Not used Not used N/M Not used 150 Not used Delete the cache a. Stop Portal server, and WAS server1. Then go under <AppServer root>/java/bin b. Run the following command, For aix: java -Xshareclasses:name=webspherev70_%g,groupAccess,destroy For windows: java -Xshareclasses:name=webspherev70,groupAccess,destroy You will see this message: JVMSHRC010I Shared cache "webspherev70_system" is destroyed. Could not create the Java virtual machine. 3. Start Portal Server 4. Check cache size in use, java -Xshareclasses:name=webspherev70_%g,groupAccess,printStats 12

19 A D D I T I O N A L J V M A R G U M E N T S On all 64 bit platforms we recommend the use of -XX:MaxDirectMemorySize= to avoid excessive garbage collections. Please note that this JVM argument must be specified exactly as shown above. A D D I T I O N A L S U N J V M A R G U M E N T S On the Solaris platform, we use the following Java HotSpot parameters to achieve optimum performance. Table 1: Additional Sun JVM Settings Parameter Value Additional Information -server Offers higher throughput than the "client" mode. -XX:MaxPermSize 768m -XX:+UseConcMarkSweepGC -XX:SurvivorRatio 6 -XX:+UseParNewGC Use concurrent mark-sweep collection for the tenured generation. The application is paused for short periods during the collection; we found this collector works best in Portal. By default concurrent low pause collector uses the default, single threaded young generation copying collector. Set this parameter to use parallel young generation collector for new area. -XX:ParallelGCThreads 5 Reduces the number of garbage threads. On the Chip multithreading processor based system, we set the threads no higher than one quarter of the hardware threads. We also distribute the threads for 6 JVMs. Our system has 128 virtual processors, we set a total of (128/4)=32 GC threads across all the JVMs. So 5 or 6 GC threads per JVM. -XX:+PrintGCDetails Print more details at garbage collection. This does not improve performance, but it provides additional information related to garbage collection activity, which is useful in tuning garbage collection. -XX:+PrintGCTimeStamps Print timestamps at garbage collection. See above. A D D I T I O N A L Z / O S J V M A R G U M E N T S WebSphere Application Server on z/os has at least three JVMs: 13

20 1. Controller Region is used to requeue the requests to the Servant Region with the help of WLM. 2. Servant Region runs the application (Portal) code. 3. Adjunct Region is an optional JVM but is automatically configured for Portal configuration. It contains the JMS Engine. For optimum performance it is necessary to allocate sufficient heap sizes to all the JVM regions. Servant region Heap Size is discussed in previous topics. Controller Region Initial and Maximum Heap Size How-To Set: In the WebSphere Administrative Console: Servers Application Servers WebSphere Portal Server Infrastructure: Java and Process Management Process Definition ControlJava Virtual Machine - Initial Heap Size = Maximum Heap Size = 1024 Adjunct Region Initial and Maximum Heap Size How-To Set: In the WebSphere Administrative Console: Servers Application Servers WebSphere Portal Server Infrastructure: Java and Process Management Process Definition Adjunct Java Virtual Machine - Initial Heap Size = Maximum Heap Size = 1024 J V M H E A P C O M P R E S S E D R E F E R E N C E S O P T I O N O N Z / O S Compressed references option provides the performance benefit when running with a Heap Size of 2GB or more. It is enabled by setting Xcompressedrefs option in the JVM Environment Entries. When the Xcompressedrefs option is specified with a Xmx value less-than 30 GB, the JVM will try to allocate the Java heap in the 2^31 to 2^35 virtual range. To enable a 64-bit JVM to run in the compressed references mode, you need to specify a new environment variable in WebSphere Application Server configuration: In the administrative console, click: Servers > Server Types > WebSphere application servers > server_name. Click the Configuration tab, and then under Server Infrastructure section, click Java and process management > ProcessDefinition > servant. Then in the additional properties section, click Environment entries. Add/update the environment entry for IBM_JAVA_OPTIONS as follows. 14

21 If you see an existing environment entry named IBM_JAVA_OPTIONS, edit it to append the Java option Xcompressedrefs to the existing value. Otherwise, click New to create a new environment entry. Fill in following values in their respective fields of the form: Name: IBM_JAVA_OPTIONS Value: -Xcompressedrefs Description: Enable 64-bit Compressed References mode Click Apply to update the WebSphere Application Server environment. Restart WebSphere Application Server to start WebSphere Application Server in compressed references mode. J D K F I X E S For any 64 bit platform running Portal using Java 6 SR7 we recommend that the following fixes be applied to avoid issues with the JIT code cache becoming full: APAR IZ73637: increases the default JIT code cache size to 128MB APAR IZ69136: disables the Java Interpreter Profiler (JIP) when the JIT code cache is full The above APARs have been incorporated into Java 6 SR8. S E S S I O N T I M E O U T Session timeout: The default value of Session Timeout is 30 minutes. Reducing this value to a lower number can help reduce memory consumption requirements, allowing a higher user load to be sustained for longer periods of time. Reducing the value too low can interfere with the user experience. For Solaris, on a T5240 platform, we used a much lower think time, 5 seconds, than was used for other platform hardware measurement of 12 seconds. With a lower think time, fewer virtual users will result in a heavier load on the system. The reason we lowered the think time was specifically to decrease the number of virtual users required for this measurement. Our pool of LoadRunner virtual user licenses was inadequate to generate enough load with the higher think time. With a shorter think time than is used in the other measurements, the duration of each virtual user's interaction with the site is shorter by approximately 2 minutes. To compensate for this, and keep the sessions live on the server for the same period of time, we increased the session timeout by 2 minutes, to 12 minutes. How to Set: In the WebSphere Administrative Console: Servers Application Servers WebSphere Portal Container Settings: Web Container Settings Session Management Session Timeout Set Timeout 15

22 Parameter AIX Linux Solaris Session timeout 10 minutes 10 minutes 12 minutes Windows minutes z/linux 10 minutes z/os 10 minutes W E B C O N T A I N E R T H R E A D P O O L S I Z E Servlet engine thread pool size: Set this value and monitor the results. Increase this value if all the servlet threads are busy most of the time. How to Set: In the WebSphere Administrative Console: Servers Application Servers WebSphere Portal Additional Properties: Thread Pools Web Container Thread Pool - Minimum size threads - Maximum size threads Solari Windows Parameter AIX Linux z/linux z/os s 2003 Web Container Thread pool size D A T A S O U R C E T U N I N G Multiple databases are used to hold information in WebSphere Portal V7.0. We used six separate databases on DB2, each representing a separate database domain and having their own datasources. These are: Table 2: Database Domains Database Database name Datasource name Release release reldbds Community community commdbds Customization custom cusdbds Feedback fdbkdb fdbkdbds Likeminds lmdb lmdbds JCR jcrdb jcrdbds On Oracle, we built a single database and create Oracle users to own the tables and data needed to support each domain. The domains are the same as above. All datasources are configured in a similar manner. The default settings were used for the prepared statement cache size. 16

23 How to Set: In the WebSphere Administrative Console: Resources JDBC Providers provider name Data Sources datasource name WebSphere Application Server data source properties Statement cache size. The provider name and datasource name are based on the names selected for that database during the database transfer step. Parameter AIX Linux Solaris Windows 2003 z/linux z/os Statement cache size The default settings were used for the connection pool minimum and maximum sizes for the Base Portal Scenario. For WCM, higher min/max connection pool sizes are needed. Higher connection pool sizes may also be needed in other cases, such as using parallel portlet rendering or a larger WebContainer thread pool. In all cases, we recommend monitoring the database connection pools and increasing their maximum sizes if the pool is completely utilized. How to Set: In the WebSphere Administrative Console: Resources JDBC Providers provider name Data Sources datasource name Connection pool properties Maximum/Minimum connections. Parameter AIX Linux Solaris Max/Min connections Windows 2003 z/linux z/os 50/10 50/10 50/10 50/10 50/10 50/10 Be aware that specifying a larger statement cache size can lead to OutOfMemory errors in situations where your application memory is already being highly utilized by your workload. Also, in some workloads, increasing the prepared cache statement size will be of no benefit. For instance, on WCM workloads, due to the dynamic nature of the SQL statements generated against the JCR database the cache size would have to be very large to cover all of the different permutations and the hit rate would be very low. In such cases, it is better to decrease the size of the cache to free up memory resources. Finally, the prepared statement cache size setting is the maximum allowed cache entries per database connection so increasing the cache size on a datasource that has a large number of connections can quickly amplify the heap utilization for these cache objects. Any changes should be considered for each individual datasource independently instead of across all datasources globally. Before increasing a datasource's prepared statement cache size you should monitor your memory usage under a heavy workload to determine if there are enough memory resources available to handle an additional increase. 17

24 S E C U R I T Y A T T R I B U T E P R O P A G A T I O N To reduce the Security Attribute Propagation (SAP) overhead, please use a custom property 'disable Callerlist'. If SAP is not used, you can disable that, to remove the extra overhead to improve the login performance. If WebSphere Subject has not been customized, for example through Trust Association Intercepter (TAI) or a custom WAS login module, then there is no need to enable Security Attribute Propagation. Security Attribute Propagation can add extra overhead due to some extra processing that is required. However, there are certain configurations where performance might be better with security propagation enabled due to reduction of remote registry calls. See the WebSphere 7.0 InfoCenter (search for 'security attribute propagation') for a discussion of when propagating security attributes is desirable. If you want to enable SAP for functional reasons, you can improve the performance with CallerList tuning mentioned below. These settings apply to all platforms. How to Set: In the WebSphere Administrative Console: Security Secure Administration, Applications, and Infrastructure Custom properties Table 3: WebSphere Security Attribute Propagation Settings Security Attribute Name Propagation com.ibm.csi.disablepropagationcallerlist Value true Create a new custom property named, com.ibm.csi.disablepropagationcallerlist, and set its value as true. I N T E R N A T I O N A L I Z A T I O N S E R V I C E T U N I N G An internationalized application can be configured to interact with users from different regions in culturally appropriate ways. The internationalization service enables you to configure and manage an internationalization context for an application for which components are distributed across the enterprise. However if you do not need this feature you can reduce the overhead by disabling it. How to Set: In the WebSphere Administrative Console Servers Application Servers WebSphere Portal Container Services: Internationalization Service uncheck Enable service at server start up These settings apply to all platforms. 18

25 D I S A B L I N G T A G G I N G A N D R A T I N G If you are not using Tagging and Rating services they can be disabled. In our results, disabling this improved capacity by 3%. They are disabled by setting the following parameters. How to Set: In the WebSphere Administrative Console Servers Resources Resource Environment Resource Environment Providers WP_CPConfigurationService Table 4: Tagging and Rating Setting Default Value Value com.ibm.wps.cp.tagging.istaggingenabled True False com.ibm.wps.cp.rating.isratingenabled True False D I S A B L I N G F R I E N D L Y U R LS Friendly URLs enhance the end-user s experience by placing a meaningful name in the browser s address field. However, there is a cost for using friendly URLs. In our results, disabling friendly URLs improved capacity by 2% or more depending on the theme. If you are using Blogs and Wikis, or WCM content pages, do not set friendly.enabled or friendly.pathinfo.enabled to false. For further discussion of this see 10.lotus.com/ldd/portalwiki.nsf/dx/Working_with_friendly_URLs_for_web_content_lwcm7 To fully use friendly URLs, pages must be configured with friendly names. Friendly URLs can be disabled by setting the following parameters. How to Set: In the WebSphere Administrative Console Servers Resources Resource Environment Resource Environment Providers WP_ConfigService Add the following custom properties. Table 5: Friendly URL s Setting Default Value friendly.enabled True False friendly.pathinfo.enabled True False Value Setting friendly.enabled to false, turns off Portal s use of friendly URLs. Setting friendly.pathinfo.enabled to false turns off WCM s use of friendly URLs. If WCM is not used in an installation, and friendly names are used by portal, it is still advantageous to set friendly.pathinfo.enabled to false. 19

26 LTP A T U N I N G LTPA tokens are used by WebSphere as part of the authentication process. Calculating the cryptographic signature for an LTPA token is an expensive operation which can be improved by installing PM16589 and setting the following custom security property. This change will cause no functional impact. How to Set: In the WebSphere Administrative Console: Security Global Security Custom properties Table 6: WebSphere Security LPTA2 Settings Security LTPA Name Value com.ibm.ws.security.ltpa.usecrt True Create a new custom property named, com.ibm.ws.security.ltpa.usecrt, and set its value as true. E N A B L I N G B A S E U R L S I N T H E M E S Enabling base URLs reduces redirects and URL-generation computations. This benefit is seen on the default themes shipped with Portal and Portal 7.0, as well as themes derived from those. When enabling base URLs, in many configurations host.name needs to be set in WP_ConfigService. The host.name should be set to the value that an end user knows portal as. For example if a reverse proxy is used, or virtual portals are used, the host.name in WP_ConfigService should be the name of the reverse proxy or virtual portal. How to Set: In the command prompt use XMLAccess tool to import the xml input file as shown below Windows: xmlaccess.bat -in redirectoff.xml -user wpsadmin -password wpsadmin -url Unix:./xmlaccess.sh -in redirectoff.xml -user wpsadmin -password wpsadmin -url Contents of redirectoff.xml for enabling basehref with default Page Builder theme from Portal 6.15: <?xml version="1.0" encoding="utf-8"?> <request build="wpnext_372_01" type="update" version=" " xmlns:xsi=" xsi:nonamespaceschemalocation="portalconfig_7.0.0.xsd"> 20

27 <portal action="locate"> <theme action="update" uniquename="ibm.portal.theme.enhanced"> <parameter name="com.ibm.portal.theme.hasbaseurl" type="string" update="set">true</parameter> </theme> </portal> </request> Contents of redirectoff.xml for enabling basehref with the default Page Builder theme from Portal 7.0: <?xml version="1.0" encoding="utf-8"?> <request build="wpnext_372_01" type="update" version=" " xmlns:xsi=" xsi:nonamespaceschemalocation="portalconfig_7.0.0.xsd"> <portal action="locate"> <theme action="update" uniquename="csa2.theme"> <parameter name="com.ibm.portal.theme.hasbaseurl" type="string" update="set">true</parameter> </theme> </portal> </request> D I S A B L I N G S E A R C H Search can be disabled to improve performance if the search feature is not needed. How to Set: In the WebSphere Portal Admin Page Search Administration/Manage Search Search Collections Delete all collections V M M T U N I N G V M M C O N T E X T P O O L Tune VMM Context Pooling to improve the performance of concurrent access to an LDAP server. We changed the following Context Pooling settings line in: <wp_profile_root>/config/cells/<cellname>/wim/config/wimconfig.xml <config:contextpool enabled="true" initpoolsize="10" maxpoolsize="30" pooltimeout="0" poolwaittime="3000" prefpoolsize="30"/> 21

28 You can also set them via the administrative console as described in aes/ae/uwim_ldapperfsettings.html Table 7: VMM Context Pool Setting Context Pool Setting Default Value Value initpoolsize 1 10 Additional Details prefpoolsize 3 30 Number of open connections to maintain to LDAP server. We use 40 in AIX Power6 64-bit measurements. maxpoolsize A value of 0 allows the pool to grow as large as needed. If access to the LDAP server is shared by many systems, this setting may allow an excessive number of connections to the LDAP server; in such a case, set the maximum pool size to a value appropriate to your environment. V M M S E A R C H R E S U L T S C A C H E We use 40 in AIX Power6 64-bit measurements. Tune VMM search results cache to improve the performance of VMM search. We changed the following searchresultscache settings line in: <wp_profile_root>/config/cells/<cellname>/wim/config/wimconfig.xml <config:searchresultscache cachesize="4000" cachetimeout="600" enabled="true" searchresultsizelimit="1000"/> Table 8: VMM Cache Setting VMM Cache Setting Default Value Value Additional Details cachesize We use 5000 for AIX Power6 64-bit measurements. 22

29 O R B S E R V I C E T U N I N G F O R Z / O S As in our Benchmark Scenario the portal application doesn't connect to any remote database or transaction manager systems we were able to get best throughput with minimum number of Threads. In your environment if the application connects to any remote system then you need to configure the number of ORB threads accordingly. You should have enough threads to drive the CPU Utilization up as the load increases. We used CUSTOM workload profile in ORB Container Services and defined the number of ORB threads by using servant_region_custom_thread_count property defined under WebSphere variables. Setting Workload Profile Type In the administrative console, click: Servers Server Types WebSphere application servers server_name. Under Container Settings Container Services Click ORB Service Under Additional Properties Click z/os additional settings Under Workload Profile Select Workload Profile type as CUSTOM Click Apply Setting number of ORB Threads In the administrative console, Under Environment Click WebSphere Varaibles Select scope as the Portal Server Define New or update existing Variable servant_region_custom_thread_count and set the value equal to the number appropriate for your environment. Maximum of 100 threads can be configured per Servant. Click Apply and restart the server WebSphere Portal Services WebSphere Portal has a number of configurable services ; each service has several parameters available to it. This section describes which services we tuned, the tuning values used, and the rationale for those changes. How to Set: 1. Edit <wp_profile_root>/portalserver/config/properties/xxxservice.properties 2. uncomment the line, then change the size. 3. run <wp_profile_root>/configengine/configengine.sh update-properties The changes should appear on WebSphere Integrated Solutuions Console, under the path Resources Resource Environment Resource Environment Providers WP_xxxService Custom properties 23

30 N A V I G A T O R S E R V I C E The navigator service manages the content model for unauthenticated users, which controls the pages those users are able to see. This content model is periodically reloaded by WebSphere Portal; new pages which are visible to unauthenticated users will not be available until the next reload occurs. Our environment assumes a low rate of change for pages, so we set this reload to only occur once per hour. In a production environment where new pages for unauthenticated users are rarely created, setting this reload time to an hour or more will give better performance. In a test or staging environment where updates to unauthenticated pages need to be seen more often, a lower reload time is more appropriate. This service also controls the HTTP cache-control headers which will be sent on unauthenticated pages. While our environment did not exploit HTTP page caching, increasing these cache lifetimes in a production environment can reduce load on the portal. For more discussion of the use of HTTP cache-control headers with WebSphere Portal, refer to the Caching section of the Tuning topic in the WebSphere Portal V7.0 InfoCenter. 24

31 Table 9: Navigation Service Settings NavigatorService.properties Parameter public.expires (seconds) public.reload (seconds) remote.cache. expiration (seconds) Default Value Value Used Definition Determines cache expiration time for unauthenticated pages in browser caches and proxy caches. If the setting remote.cache.expiration is also set to a value greater than or equal to 0, the smaller one of the two values is used WebSphere Portal maintains an internal cache of the list of pages visible to unauthenticated users, and the arrangement of portlets on those pages. This controls how frequently that internal cache is refreshed. Note, however, that this is not caching the content of those pages simply their layout Determines cache expiration for caches outside of portal server for authenticated as well as for unauthenticated pages R E G I S T R Y S E R V I C E WebSphere Portal maintains information about many resource types in its databases. Some of these resources are replicated into memory for faster access; this is provided by the registry service. This replicated information will be periodically reloaded from the database, thus picking up any changes which may have been made on a peer node in a clustered environment. The registry service allows configuring a reload time, in seconds, for each type of data which it is managing. In a production environment, we expect this type of information changes very infrequently, so we used very long reload times for the registry service. These values do not include a size parameter as they are a full replication of the database. A full list of the types of information managed by the registry service is in table 7. 25

32 Table 10: Registry Service Settings RegistryService.properties Parameter Default Value Value Used Definition default.interval Reload frequency for any object types not explicitly specified in the file. bucket.theme.interval Reload frequency for theme definitions bucket.skin.interval Reload frequency for skin definitions bucket.client.interval Reload frequency for client definitions bucket.markup.interval Reload frequency for markup definitions bucket.transformation application.interval bucket.transformation. interval Reload frequency for transformation application definitions Reload frequency for transformation definitions C A C H E M A N A G E R S E R V I C E The cache manager service in WebSphere Portal is used to cache a wide variety of types of information in memory. These caches are somewhat similar to the registries maintained by the registry service, as each type of information gets its own cache. The key differences are: The information stored in the cache manager service s caches tends to be more dynamic than the information stored in the registry service s registries. The caches used by the cache manager service are limited in size, and entries will be discarded when the caches become full. The registries used by the registry service are not size-limited; they contain all entries of the specific data type. Expiry times are managed individually for each entry in the cache, managed by the cache manager service. In contrast, when the reload time is reached for a registry, the entire contents of that registry are reloaded. Each cache has several configurable options. A full discussion of these options, along with a list of the caches in WebSphere Portal V7.0, is given in chapter 2. Table 8 lists the changes which we made to the cache manager service configuration file. Size values are specified in number of objects and lifetime values are specified in seconds. 26

33 Table 11: Cache Manager Service Settings CacheManagerService.properties Default Value Cache Name Value Used cacheinstance.com.lotus.cs.services.userenvironment.size cacheinstance.com.ibm.wps.spa.parser.theme. TRUE FALSE ThemeParserCache.enableDiskOffload cacheinstance.com.ibm.wps.spa.parser.skin. TRUE FALSE SkinParserCache.enableDiskOffload cacheinstance.com.ibm.wps.spa.parser.locale. TRUE FALSE LocalizationParserCache.enableDiskOffload cacheinstance.com.ibm.wps.services.vpmapping HostnameToVirtualPortalIDCache.lifetime cacheinstance.com.ibm.wps.resolver.service. TRUE FALSE PortalPocBootstrapService.enableDiskOffload cacheinstance.com.ibm.wps.resolver.service. TRUE FALSE PocServiceOnRequestImpl.cache.enableDiskOffload cacheinstance.com.ibm.wps.resolver.data.cache. TRUE FALSE DataSourceCache.enableDiskOffload cacheinstance.com.ibm.wps.puma.oid_user_cache.size cacheinstance.com.ibm.wps.puma.oid_group_cache.size cacheinstance.com.ibm.wps.puma.oid_dn_cache.size cacheinstance.com.ibm.wps.puma.dn_user_cache.size cacheinstance.com.ibm.wps.puma.dn_oid_cache.size cacheinstance.com.ibm.wps.puma.dn_group_cache.size cacheinstance.com.ibm.wps.policy.services PolicyCacheManager.lifetime cacheinstance.com.ibm.wps.pe.portletentity.size cacheinstance.com.ibm.wps.pe.portletentity.lifetime cacheinstance.com.ibm.wps.model.factory ContentModelCache.live.size cacheinstance.com.ibm.wps.datastore.services Identification.SerializedOidString.cache.size cacheinstance.com.ibm.wps.ac.rolescache.size cacheinstance.com.ibm.wps.ac.rolescache.enabled FALSE TRUE cacheinstance.com.ibm.wps.ac.protectedresourcecache lifetime cacheinstance.com.ibm.wps.ac.permissioncollectioncache lifetime cacheinstance.com.ibm.wps.ac.ownedresourcescache.enabled TRUE false cacheinstance.com.ibm.wps.ac.externaloidcache.lifetime cacheinstance.com.ibm.wps.ac.explicitentitlementscache. USER_GROUP.size

34 cacheinstance.com.ibm.wps.ac.childresourcescache lifetime cacheinstance.com.ibm.workplace.searchmenu.helper. moderate SearchMenuCacheHelper.replacement cacheinstance.digestcache.cache.size We made the following changes from the settings above in our AIX Power6 environment. We expect these will improve performance in environments using modern processors (such as Power6 or Power7 processors). Cache Name Default Value Value Used cacheinstance.com.lotus.cs.services.userenvironment.size cacheinstance.com.ibm.wps.puma.oid_user_cache.size cacheinstance.com.ibm.wps.puma.oid_group_cache.size cacheinstance.com.ibm.wps.puma.oid_dn_cache.size cacheinstance.com.ibm.wps.puma.dn_user_cache.size cacheinstance.com.ibm.wps.puma.dn_group_cache.size cacheinstance.com.ibm.wps.pe.portletentity.size cacheinstance.com.ibm.wps.model.factory ContentModelCache.live.size cacheinstance.digestcache.cache.size

35 Database Tuning D B 2 D A T A B A S E S E R V E R T U N I N G WebSphere Portal V7.0 uses database servers for core functionality. In our measurement environment, we used DB2 database server for the Portal application. The LDAP server, IBM Tivoli Directory Server also included a DB2 database as a repository, but it is largely unseen and was operated as an out of box configuration. We recommend using a remote database server for the largest capacity. For our measurements we used IBM DB2 Enterprise Edition V9.7 fixpack 1 as our database server. WebSphere Portal V7.0 uses the concept of Database domains to designate either groups of tables belonging to one domain, or even entirely separate databases to store the data specific to each domain. We built six separate databases within one database server to house the tables and data needed to support each domain. For the Base Portal and Many Pages measurements, the Release domain is the primary database being exercised. The databases and related domains supported by Portal V7.0 are: 1. Release (release domain). This is the primary database domain used by the Base Portal and Many Pages Scenarios. 2. Customization (customization domain). This database receives some light traffic in our scenarios. 3. Community (community domain). This database receives some light traffic in our scenarios. 4. JCR (JCR domain). JCR database is used heavily in WCM (Web Content Management) Scenario. This database receives light traffic in all other scenarios measured in our Benchmark report. 5. Likeminds database, used for Likeminds enabled systems. This database is not used in the scenarios measured in our Benchmark report. 6. Feedback database, used by the feedback subsystem. This database is not used in the scenarios measured in this report. D B 2 O N A I X S E T U P We configure our DB2 database on AIX using the following setup, 29

36 Set the filesystem which will hold the Portal databases to be a Enhanced Journal File System (JFS2) because a large file system is limited to 64GB. Turn on concurrent I/O (CIO) for Enhanced Journal File System as this improves performance. To enable CIO, use the following command to mount the database filesystem. mount o cio /portaldb Increase AIX maximum number of processes per user to The default 500 processes per user is too low for database server, we increase it to 4096 in our AIX environment. To increase it, chdev l sys0 a maxuproc= 4096 While the Portal databases are configured for high capacity performance, various tuning adjustments may be necessary from time to time. Typically these tuning needs are based on the volume of database traffic and the size of table populations. Our database tuning settings is documented in the Portal Info Center under Creating Remote Database section. D B 2 O N Z / O S S E T U P After transferring the database tables, first Identify what tables need to be reorganized. Perform a re-org check to improve performance. Run the EJPSDBTC job after database transfer. This job contains the DB2 check and RUNSTATS utility for the JCR, Likemind and Feedback database. For details on re-org DB2 database, visit WebSphere Portal Info Center. Create a Re-org job to re-org all table spaces in WPSDBJCR database. R E C O M M E N D E D D A T A B A S E M A I N T E N A N C E F O R D B 2 L U W Two of the database attributes, which DB2 relies upon to perform optimally, are the database catalog statistics and the physical organization of the data in the tables. Catalog statistics should be recomputed periodically during the life of the database, particularly after periods of heavy data modifications (inserts, updates, and deletes) such as a population phase. Due to the heavy contention of computing these statistics, we recommend performing this maintenance during off hours, periods of low demand, or when the portal is off-line. The DB2 runstats command is used to count and record 30

37 the statistical details about tables, indexes and columns. We have used two techniques in our environment to recompute these statistics. The form we recommend is: db2 runstats on table tableschema.tablename on all columns with distribution on all columns and sampled detailed indexes all allow write access These options allow the optimizer to determine optimal access plans for complex SQL. A simpler, more convenient technique for recomputing catalog statistics is: db2 reorgchk update statistics on table all Not only does this command count and record some of the same catalog statistics, it also produces a report that can be reviewed to identify table organization issues. However, we have found instances where this produces insufficient information for the optimizer to select an efficient access plan for complex SQL, particularly for queries of the JCR database. We have determined a technique that has the same convenience of the reorgchk command and provides the detailed statistics preferred by the optimizer. db2 -x -r "runstats.db2" "select rtrim(concat('runstats on table ',concat(rtrim(tabschema),concat('.',concat(rtrim(tabname),' on all columns with distribution on all columns and sampled detailed indexes all allow write access'))))) from syscat.tables where type='t'" db2 -v -f "runstats.db2" The first command is used to create a file, runstats.db2, which contains all of the runstats commands for all of the tables. The second command uses the db2 command processor to run these commands. To determine which tables might benefit from reorganization, we use the command: db2 reorgchk current statistics on table all > "reorgchk.txt" For those tables which require reorganization, we use the command: db2 reorg table tableschema.tablename to reorganize the table based upon its primary key. You should also ensure that your database servers have adequate numbers of disks. Multiple disks allow for better throughput by the database engine. Throughput is also improved by separating the database logs onto separate physical devices from the database. 31

38 You should ensure that the database parameter MaxAppls is greater than the total number of connections for both the datasource and the session manager for each WebSphere Portal application server instance. If MaxAppls is not large enough, you will see error messages in the Portal logs. You should use System Managed Storage (SMS) for temporary table spaces to benefit complex SQL which require temporary tables to compute their result sets. This saves time in buffer writes and improves disk utilization. Database performance is very important for obtaining good performance from WebSphere Portal. The maintenance tasks and practices mentioned here were found to be critical to the performance and correct operation of WebSphere Portal in our lab environment. Additional database maintenance and tuning may be needed in your production environments. For further information on DB2 administration and tuning, refer to the DB2 Information Center. O R A C L E D A T A B A S E S E R V E R T U N I N G WebSphere Portal V7.0 uses database servers for core functionality. In this measurement environment, we used Oracle database server for the Portal application. The LDAP server, IBM Tivoli Directory Server included a DB2 database as a repository. P L A N N I N G F O R O R A C L E E N T E R P R I S E E D I T I O N D A T A B A S E For our Solaris platform measurements we also used Oracle 10g R2 as our database server. WebSphere Portal V7.0 uses the concept of Database domains to designate either groups of tables belonging to one domain, or even entirely separate databases to store the data specific to each domain. On Oracle, we built a single database and create Oracle users to own the tables and data needed to support each domain. The domains are listed in PortalDatabaseDomain, above. For the Base Portal measurements, the Release domain is the primary database being exercised. A well designed database can save a lot of trouble later down the road, and improve database performance. We recommend that you refer to the Oracle Administrator s Guide to help you make informed database design decisions. Here are the key choices we have implemented in our Oracle database. To avoid I/O contention and allow for better throughput, you should ensure your database server have adequate number of disks. Our database is on seven stripped disks. For better management and performance of storage structures, Oracle-Managed Files are used for database, as well as redo logs, and control files. Database block size: 8k 32

39 The following tablespace sizing was required to support roughly a medium sized Portal, with 100,000 authenticated users, approximately 180 installed portlets and 220 pages, which the load generally consisting of database read operations. We recommend monitoring your tablespace sizing and growth on a regular basis. We used DBCA to create database with the following Tablespace size: o SYSAUX: 800MB o SYSTEM: 800MB o TEMP: 800MB o UNDOTBS: 1024MB o USERS: 2048MB Redo log groups: 500MB each. O R A C L E O N A I X S E T U P We configure our Oracle database on AIX using the following setup, Set the filesystem which will hold the Portal databases to be a Enhanced Journal File System (JFS2). Turn on concurrent I/O (CIO) for database filesystem as this improves performance. Do not enable CIO for Oracle product filesystem, ie, /u01, as Oracle could fail to start. To enable CIO, use the following command to mount the database fileset. mount o cio /u02 Increase AIX maximum number of processes per user to The default 500 processes per user is too low for database server, we increase it to 4096 in our AIX environment. To increase it, chdev l sys0 a maxuproc= 4096 Enable AIX async I/O, and increase MinServer to 5. smitty aio Change/Show Characteristics of Async I/O MinServers = 5 We also set in oracle user s profile as Oracle Installation Guide for AIX recommends, AIXTHREAD_SCOPE=S O R A C L E E N T E R P R I S E E D I T I O N D A T A B A S E P A R A M E T E R T U N I N G Database performance is very important for obtaining good performance from WebSphere Portal. Below is a list of tuning applied on our Oracle database server with the alter system command. Additional database tuning maybe needed in your production environments. For 33

40 further information on Oracle database tuning, refer to Oracle Performance Tuning Guide at Command used: Alter system set <parameter> scope=spfile; Table 12: Oracle Database Tuning Parameter sessions 900 sga_target pga_aggregate_target 1813M 604M processes 750 open_cursors 1500 db_files 1024 Value R E C O M M E N D E D O R A C L E D A T A B A S E M A I N T E N A N C E Optimizer statistics are a collection of data about the database and the objects in the database, these statistics are used by the query optimizer to choose the best execution plan for each SQL statement. Because the objects in a database can be constantly changing, statistics must be regularly updated so that they accurately describe these database objects, particularly after periods of heavy data modifications (inserts, updates, and deletes) such as a population phase. We have used the following commands in our environment to recompute these statistics: execute dbms_stats.gather_database_stats(dbms_stats.auto_sample_size, method_opt=>'for ALL INDEXED COLUMNS SIZE AUTO',cascade=>TRUE); O T H E R D A T A B A S E C O N S I D E R A T I O N S WebSphere Portal maintains some information about users in its database tables, which grow when a user first logs in. We were interested in the steady-state performance of WebSphere Portal, not the performance of a user s first login to the site. Therefore our performance evaluates after all users logged in at least one time. One of the most important database tuning factors is bufferpool sizing. It is important to evaluate the database's physical versus logical reads and size the bufferpools to achieve as much as a 95% logical read rate if possible. 34

41 Directory Server Tuning Our measurements used IBM Tivoli Directory Server versions 6.0 as the directory server. These products use a database for storing user information; DB2 Enterprise Server was used for this database in our environment. This database is typically located on the same system as the directory server. If your workload involves creating, updating, or deleting users, then database maintenance described above may be needed on this database. The following table shows the tuning values used for the directory servers in our Solaris Base Portal Scenario measurements How-to-Set: These values are in the file /opt/ibm/ldap/v6.0/etc/schemav6.0/ibmslapd.conf. You must restart the LDAP server after changing these values. Table 13: IDS Tuning Parameter Ibm-slapdACLCacheSize Ibm-slapdEntryCacheSize Ibm-slapdFilterCacheSize Ibm-slapdFilterCacheBypassLimit 7500 Value The IBM Tivoli Directory Server uses IBM DB2 as the database server. The database instance and alias are named IDSLDAP. We applied the following tuning to this database: db2 update db config for idsldap using dbheap 4800 db2 update db config for idsldap using num_ioservers 10 db2 update db config for idsldap using num_iocleaners 5 db2 alter bufferpool LDAPBP size 3690 db2 alter bufferpool IBMDEFAULTBP size In addition, if high CPU utilization is seen on the LDAP server, the following steps can be used to create indexes for the ldap database: db2 connect to idsldap db2 "create index givenname_ix2 on idsldap.givenname (givenname)" db2 "create index displaname_ix2 on idsldap.displayname (displayname, eid)" db2 "runstats on table idsldap.givenname with distribution and detailed indexes all" db2 "runstats on table idsldap.displayname with distribution and detailed indexes all" An alternative to creating the index is discussed at 35

42 Web Server Tuning We used IBM HTTP Server 7.0 in our measurement environment. The cluster configuration and the Solaris configuration has a remote web server; information about tuning the remote web server can be found under Web Server Tuning in Cluster Tuning section. All other configurations have the web server running on the same system as the WebSphere Portal application server. If, during your monitoring, you notice insufficient processor capacity on the system when running the web server and the portal application server on a single system, consider separating the servers onto different systems. We used the following tuning on our web servers: Table 14: Web Server Tuning Parameter Linux & UNIX (eg: AIX, z/linux, etc) Windows 2003 Additional Information KeepAliveTimeout 5 5 This value is less than the think time defined in our scripts to ensure that testing is conservative. Each user is assumed to open a new TCP connection for each page view. However, in a live environment, it can be helpful to increase the KeepAlive Timeout. A higher timeout value can increase contention for HTTP server processes, if you are running out of HTTP processes, decrease this value. ThreadsPerChild The higher number of threads per child on Windows is due to a different process model for IHS on Windows. MaxKeepAliveRequests 0 0 Selecting 0 lets an unlimited number of requests on a single TCP connection. MaxRequestsPerChild 0 0 StartServers 2 N/A Access logging off off This was turned off by commenting out the following configuration line: CustomLog /usr/httpserver/logs/access_log common ThreadLimit

43 ServerLimit 180 N/A Set it MaxClient/ThreadsPerChild. MinSpareThreads 25 N/A MaxSpareThreads 4500 N/A Set it same as MaxClients. MaxClients 4500 N/A We also enabled the server-status module so that we could monitor the number of running and available Web server processes. This enables appropriate tuning of the MaxClients and ThreadsPerChild parameters. We did additional Web Server tuning in Pagebuilder Scenario. See Pagebuilder section for details. 37

44 Plug-in Tuning The plug-in allows an IBM HTTP Server for WebSphere Application Server to communicate with a WebSphere Application Server. The following plugin parameters are set: ConnectTimeout: 60 (default = 5) ConnectTimeout is increased for 60 seconds so the plugin will wait for a successful connection. ServerIOTimeout: 180 (default=60) The serveriotimeout limits the amount of time the plugin will wait for each individual read or write operation to return. The default value is 60 seconds. We increase the value to 180 seconds in order to handle the amount of heavy network traffic during the peak load. Find more description and how-to set it in, nd.multiplatform.doc/info/ae/ae/rwsv_plugincfg.html 38

45 Operating System Tuning In any high-load environment, the network must be closely monitored to ensure that its performance is acceptable and consistent. Note that, the following is not to suggest that all network parameters are set to these values, but merely make the reader aware that the network is also an entity in the performance environment and bottleneck resolution process. A I X N E T W O R K T U N I N G We changed the following network tuning parameters on all the AIX systems in our measurement environment. Table 15: AIX Network Settings Parameter Value tcp_sendspace tcp_recvspace udp_sendspace udp_recvspace somaxconn tcp_nodelayack 1 rfc These parameters can be set using the no command or through smit. In smit, the path to the change these is Performance & Resource SchedulingTuning Kernel & Network Parameters Tuning Network Option Parameters Change/Show Current Parameters. So that the changes will be permanent, also select Save Current Parameters for Next Boot. These tuning settings - particularly the tcp_sendspace and tcp_recvspace values will allocate a significant amount of memory for network buffers. These can cause a performance problem if the system has a limited amount of memory, in which case it may make sense to reduce these values. For more discussion on AIX network performance tuning, please refer to, d/interface_network_opts.htm and 39

46 L I N U X N E T W O R K T U N I N G For Red Hat Linux and z/linux (Suse Linux on System z), we add the following settings to file /etc/sysctl.conf, then run the command: sysctl -p To inspect current TCP parameters, run the command: sysctl -a fgrep tcp Table 16: Linux Network Settings Parameter Value net.ipv4.ip_forward 0 net.ipv4.conf.default.rp_filter 1 net.ipv4.conf.default.accept_source_route 0 net.core.rmem_max net.core.wmem_max net.ipv4.tcp_rmem net.ipv4.tcp_wmem net.ipv4.tcp_fin_timeout 30 net.core.netdev_max_backlog 3000 net.core.somaxconn net.ipv4.tcp_keepalive_intvl 15 net.ipv4.tcp_keepalive_probes 5 H I P E R S O C K E T S O N Z L I N UX HiperSockets is a technology that provides high-speed TCP/IP connectivity within a System z central processor complex. It eliminates the need for any physical cabling or external networking connection between servers running in different LPARs. Instead, the communication is through the system memory of the processor, so servers are connected to form an internal LAN. With our zlinux Authoring workload, we experimented with using HiperSockets to communicate between the application server LPAR and the database server LPAR. We saw no significant performance difference between this and communicating between those LPARs using a switched 100-megabit Ethernet. We speculate that this workload did not generate enough network traffic between those two systems to benefit from the performance advantages of HiperSockets 40

47 W I N D O W S N E T W O R K T U N I N G Using the regedit command, the following registry settings were made in the section HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters Create a new REG_DWORD named below. Table 17: Windows Network Settings Parameter MaxFreeTcbs MaxHashTableSize MaxUserPort TcpTimedWaitDelay Value dword: dword:0000ffff dword:0000fffe dword: e TcpWindowSize dword:0000ffff (65535) S O L A R I S N E T W O R K T U N I N G For Solaris, use the ndd command to set the following TCP layer parameters. These will take effect immediately, improving the network layer performance in high-volume environments. We use the following settings in Portal server running Solaris 10: How-to-Set: ndd -set /dev/tcp <PARAMETER> <VALUE> Table 18: Solaris Network Settings Parameter tcp_time_wait_interval tcp_keepalive_interval tcp_fin_wait_2_flush_interval tcp_conn_req_max_q tcp_conn_req_max_q tcp_xmit_hiwat tcp_recv_hiwat tcp_cwnd_max tcp_ip_abort_interval tcp_rexmit_interval_initial 4000 tcp_rexmit_interval_max tcp_rexmit_interval_min 3000 Value 41

48 tcp_max_buf K E R N E L T U N I N G Our Portal Server is running on Solaris 10. In Solaris 10, we use the following projmod commands to set system parameters. After making the changes, we must logout then login to take these changes into effect. To examine your current settings, do cat /etc/project. projmod -s -K 'project.max-shm-memory=(privileged, ,deny)' user.root projmod -s -K 'project.max-shm-ids=(privileged,1024,deny)' user.root projmod -s -K 'project.max-sem-ids=(privileged,1024,deny)' user.root projmod -s -K 'process.max-sem-nsems=(privileged,4098,deny)' user.root projmod -s -K 'process.max-sem-ops=(privileged,16384,deny)' user.root projmod -s -K 'process.max-file-descriptor=(privileged,16384,deny)' user.root S O L A R I S V I R T U A L I Z A T I ON Use Resource Management or Zones of Solaris virtualization to better utilize your modern, powerful T2 server with hundreds of processors. In our lab, we used processor sets to partition virtual processors. Solaris resource pools allow us to group a number of processors into a pool and bind the pool with Java process. Through our experiments, we found that the most efficient usage for our scenario was to bind 21 compute threads to one JVM. We created a vertical cluster with six WebSphere Portal members, and then we bound each member to a Solaris processor set. The right number of compute threads (and therefore WebSphere Portal members) can vary with the application, but we expect that four to six members will give good performance for most WebSphere Portal applications. The Solaris commands we use to setup the configuration were the following, 1. pooladm e Enable the pool facility. 2. pooladm s Create a static configuration file that matches the current dynamic configuration. 3. poolcfg c create wp_pset1 (unit pset.min=20; unit pset.max =21) Create a processor set named wp_pset1 with between 20 and 21 processors. Create one processor set for each application server JVM, each with its own name. 4. poolcfg c create pool wp_pool1 42

49 Create a resource pool named wp_pool1. Create one resource pool for each processor set created in the previous step, with unique names for each pool. 5. poolcfg c associate pool wp_pool1(pset wp_pset1) Associate a resource pool with a processor set. Do this for each processor set/resource pool pair. The names used above for processor sets and resource pools are arbitrary; the requirements are that the processor set name must be matched up with the resource pool name in step 5, and the resource pool name must be used when binding the JVM to the resource pool in step pooladm c Commit the configuration at /etc/pooladm.conf. 7. Start Portal cluster members from the WebSphere Applications Server administration console. 8. Find the process IDs for the WebSphere Portal JVMs with the command ps ef grep java There is a separate process ID for each JVM. 9. poolbind p wp_pool1 <PortalPID> This command binds the selected process to a resource pool. Repeat this command for each of the portal JVMs, using a separate resource pool for each JVM process. If you restart WebSphere Portal, you need to run the poolbind command with the new WebSphere Portal process ID. Steps 1-6, though, do not need to be repeated. More information on these commands can be found in the Solaris documentation set, System Administration Guide: Solaris Containers-Resource Management and Solaris Zones, at 43

50 Z / O S W L M S E T U P On z/os WLM allows you to effectively and efficiently utilize your computing resources system-wide, enabling you to achieve defined performance and service goals for your system. WebSphere Application Server address spaces are controlled by the Started Task Control (STC) classification in WLM. STC handles the goals of starting, stopping, logging output, and assigning resources to the address space execution. STC does not handle work coming into the server on listening ports. The goals for these address spaces have to be high to get them to start quickly. Once requests enter and are placed immediately into a WLM work manager or queue. Processing switches from an STC responsibility to a CB responsibility.the J2EE application work handled by WebSphere in the servers is controlled by the CB subsystem. CB is simply the subsystem name for WebSphere in WLM. Following are our WLM configuration for WebSphere Application Server 1. CB Classification - WAS/Portal Transactions assigned to a Service Class Defined with Importance 1 and Average Percentile Response Time Goal of 90% complete with in 0.3 Seconds. 2. STC Classification - Controller Address Space is assigned to SYSSTC Service class. Servant and Adjunct address spaces are assigned to a Service Class defined with Execution Velocity Goal of 70%. For more information on configuring WLM Policy for WebSphere Application Server on z/os refer to following links E N A B L E H I P E R D I S P A T C H HiperDispatch was introduced with IBM s z10 server, and is available (via PTFs) on z/os V1R7, z/os V1R8, and z/os V1R9. HiperDispatch was designed to (1) minimize the z10 hardware performance degradation caused by processor cache misses, and (2) maximize the amount of CPU processing power associated with any single logical processor. It can be enabled by setting the HIPERDISPATCH=YES parameter in IEAOPTxx 44

51 S Y S T E M T U N I N G In the PARMLIB member BPXPRMxx check the values of the following parameters: Table 19: z/os System Tuning Parameter Value Additional Information MAXPROCSYS System will allow at most processes to be active concurrently. MAXPROCUSER Allow each user (same UID) to have at most concurrent processes active. MAXUIDS 200 Allow at most 200 z/os UNIX users to be active concurrently. MAXFILEPROC Allow at open files per user. MAXPTYS 800 Allow up to 800 pseudo-terminal sessions MAXTHREADTASKS 5000 System will allow at most 5000 threads tasks to be active concurrently in a single process MAXTHREADS System will allow at most threads to be active concurrently in a single process. MAXMMAPAREA System will allow at most pages to be used for memory mapping. MAXFILESIZE NOLIMIT Unlimited file size. MAXCORESIZE MAXASSIZE This size is same as the region size for TSO. By default USS ids get some pre-defined minimum which is usually not enough for WPS kind of stuff. To avoid problems instantiating java processes this size should be set to MAXCPUTIME To improve the CPU process time. MAXSHAREPAGES System will allow at most pages of shared storage to be concurrently in use. 45

52 3 Page Builder Theme Tuning The default theme shipped with Portal 7 is called the Page Builder Theme with Client-Side- Aggregation support (CSA). All of the tunings in this section are for the default Page Builder Theme for Portal 7. When using the Page Builder Theme, we used the IBM HTTP server to cache content. Alternatively a reverse proxy could have been used. This section will discuss using an HTTP server or a reverse proxy to cache content. In general it is best practice to use a reverse proxy or HTTP server that resides on different physical hardware from portal server. To get acceptable throughput and response times for the Page Builder theme, we recommend having some external caching in place. This allows some content to be fetched without going to the portal server. In general, the same tuning that was used for the Base Portal Scenario, described in previous section, was used for the Page Builder Scenario. That section describes themeindependent tuning settings. The differences in tuning are mentioned below. CacheManagerService Properties The following values were specified in CacheManagerService.properties in addition to the parameters changed in the Base Portal tuning. 46

53 Table 20: CacheManager Service Settings for default portal 7 Page Builder Theme Parameter Setting Used cacheinstance.com.ibm.wps.spa.parser.theme FirstLevelThemeParserCache.size cacheinstance.com.ibm.wps.resolver.data.cache FirstLevelDataSourceCache.size cacheinstance.com.ibm.wps.resolver.data.cache DataSourceCache.size cacheinstance.com.ibm.wps.spa.pagetypecache.enabled true cacheinstance.com.ibm.wps.spa.pagetypecache. false supportsdependencies cacheinstance.com.ibm.wps.spa.pagetypecache.transactionaware false cacheinstance.com.ibm.wps.spa.pagetypecache.shared false cacheinstance.com.ibm.wps.spa.pagetypecache.size 5000 cacheinstance.com.ibm.wps.spa.pagetypecache.lifetime Ensuring Browser Cache Works Properly for Internet Explorer By default WebSphere Portal will send many versions of Internet Explorer a vary HTTP header. If Internet Explorer is sent a vary HTTP header, it is unable to cache that reply effectively. To configure WebSphere Portal to not send the vary header to IE: 1. Log in to WebSphere Portal as an administrator. 2. Navigate to Administration Portal Settings Supported Clients. 3. Select.*MSIE 7.0.* (Internet Explorer 7) and click Edit selected client. 4. In the Capabilities field, select CACHE_VARY and click Delete then OK. 5. Repeat this for other versions of Internet Explorer that are listed under supported clients. If CACHE_VARY is listed, delete it. Reducing Redirects Avoiding redirects improves the performance by reducing overhead from frequent requests. Do the following to avoid redirects: 1) Enable a base URL. How to Set: To enable a base URL, See the section on enabling base URLs in themes. 2) Avoid redirect on the home page. 47

54 How to Set: modify the content of a JSP file (/PortalRoot/theme\wp.mashup.cc.theme\installedApps\wp.mashup.cc.theme.ear\PageBuild er2.war\themes\html\pagebuilder2\bannercommonactions.jsp) as shown below: Change the highlighted fields in this part of the file from this: <portal-logic:if loggedin="no"> # <portal-navigation:urlgeneration allowrelativeurl="true" contentnode="wps.content.root" home="protected" > <a href='<%wpsurl.write(escapexmlwriter); %>' ><portal-fmt:text key="link.login" bundle="nls.engine"/></a> </portalnavigation:urlgeneration> </li> </portal-logic:if> Change the highlighted values to: <portal-logic:if loggedin="no"> # <portal-navigation:urlgeneration allowrelativeurl="true" contentnode="wps.login" home="public" > <a href='<% wpsurl.write(escapexmlwriter); %>' ><portal-fmt:text key="link.login" bundle="nls.engine"/></a> </portal-navigation:urlgeneration> </li> </portal-logic:if> If a custom login page is used, make sure the contentnode matches the unique name of your login page. In the previous example its wps.login. You can find the unique name of your login page under Portal Administration Manage Pages. The login page is typically found in Content Root Hidden Pages. Serving WebDAV resources With the default Page Builder theme many resources come from WebDAV storage. The same URL can safely be used for authenticated and unauthenticated users. To enable this feature: In the WAS admin console: 1. Servers Server Types WebSphere application servers WebSphere_Portal 2. Click on Security Domain 3. Expand Web and SIP security 4. Click on General Settings 5. Check 'Use available authentication data when an unprotected URI is accessed' 6. Save Mashup Multipart tuning in Server Side Mode Page Builder theme, server side mode, does not have many widgets and multipart downloading can be disabled to improve performance. 48

55 How to Set: In the WebSphere Administrative Console Servers Resources Resource Environment Resource Environment Providers WP_CommonComponentConfigService Table 21: Mashup Multipart Mode Setting Default Value Value com.ibm.mashups.multipart.enabled True False com.ibm.mashups.multipart.correlatehosts True False Disabling Personalization visibility rules on pages and portlets If a portal installation is not using personalization (PZN) rules on individual pages and portlets, a large performance gain can be achieved by disabling the processing of personalization rules for pages and portlets. How to Set:./ConfigEngine.sh action-disable-page-as-extension-nodewp.dynamicui.config -DPageUniqueName=wps.content.root By default the PZN transformation is registered on the wps.content.root. If a customer changed this manually to another page, that unique name where the PZN transformation is located would have to be used instead of wps.content.root. Using a Caching Proxy With any theme, large resources can have a significant impact on end-user performance. The performance impact of these can be minimized by compressing and/or caching them outside the application server. There are a couple of choices for caching: using a reverse proxy or enabling caching in the HTTP server. In this section we discuss both options. We suggest having the HTTP server reside on a different server than portal, use in-memory caching on the HTTP server, and don t bother using a reverse proxy. Other configurations are viable, but make sure that large resources, such as layerloader.jsp is cached and compressed. We saw a significant performance improvement by having portal compress the content and have the HTTP server cache it. The advantage of using a reverse proxy over an HTTP server for caching depends on the topology used. In general it is best to have the caching done on a server that the application 49

56 server is not running on. So if the HTTP server is on the same server as the application server, it is good to use a caching reverse proxy that is on a different server. The disadvantage of using a reverse proxy is the difficulty to configure it so it compresses content, and caches it, and does not send a Vary header to Internet Explorer. For HTTP-server caching, the advantage of using in-memory caching is that it is faster than on-disk caching. The disadvantage is that in-memory caching could use more main memory. E N A B L I N G C A C H I N G I N T H E H T T P S E R V E R For http server caching, there are 2 possibilities: disk caching and in-memory caching. Inmemory caching is faster. However, disk caching does not work on Windows. On windows the only option is in-memory caching. These values are set in the HTTP server s httpd.conf file: For in-memory caching use: LoadModule cache_module modules/mod_cache.so <IfModule mod_cache.c> LoadModule mem_cache_module modules/mod_mem_cache.so <IfModule mod_mem_cache.c> CacheEnable mem / MCacheSize MCacheMaxObjectCount MCacheMinObjectSize 1 MCacheMaxStreamingBuffer MCacheMaxObjectSize </IfModule> </IfModule> For caching to disk (not for use on Windows) use the following: LoadModule cache_module modules/mod_cache.so <IfModule mod_cache.c> LoadModule disk_cache_module modules/mod_disk_cache.so <IfModule mod_disk_cache.c> # make sure the path below exists and the http server group has access to it CacheRoot /usr/ibmihs7/diskcachetemp/ CacheEnable disk / CacheDirLevels 5 CacheDirLength 3 CacheMaxFileSize </IfModule> </IfModule> 50

57 Make sure to select either disk or in memory caching, but not both. If a caching reverse proxy is used, there is no need for caching on the http server as well When using HTTP in-memory server caching on Unix, use the following settings to override those mentioned in base portal HTTP server settings. Unix based HTTP servers cache information in each process. These settings reduce the number of processes and increase the number of threads per process. This reduces the overall memory needed by the HTTP server processes. Table 22: HTTP server settings for use with HTTP caching Parameter AIX POWER5 Additional Information ThreadsPerChild 150 The higher number of threads per child on Windows is due to a different process model for IHS on Windows. StartServers 1 ThreadLimit 150 ServerLimit 25 Set it MaxClient /ThreadsPerChild. See Web Server Tuning for other HTTP server settings to set proper HTTP headers. Those settings are used whether or not the HTTP server is configured for caching: E N A B L I N G C A C H I N G I N A R E V E R S E P R O X Y S E R V ER An alternative to caching in an HTTP server is to cache in a reverse proxy. We used IBM Edge Server Version plus fixes. We were unable to get the Edge Server to compress and cache layerloader.jsp. Therefore we did not get acceptable results having the Edge Server doing the compression. We did get good results having Portal compress the content, HTTP server add caching headers, and the Edge Server cache the results. Another issue with doing compression in the Edge Server version we used, is that the Edge Server will send a Vary HTTP response header if the reverse proxy compresses the reply. If Internet Explorer (IE) receives a reply with a Vary header, IE will always check to see if the item has been modified the next time that item is requested. That is not the desired behavior as it causes an unnecessary request to be sent instead of using the version that is in the browsers cache without sending a message to the server. Make sure that compressed replies sent to IE do not contain a Vary header. The following are the settings and tunings specified in the reverse proxy s ibmproxy.conf file to get the reverse proxy to work with the Page Builder theme. These settings allow caching of responses but allow portal to perform the compression of responses. 51

58 Table 23: Reverse Proxy Settings Parameter Setting Used Additional Information Proxy /wps/* Proxy for /wps Proxy /wps_semantictag* Proxy for /wps_semantictag Proxy /searchfeed* Proxy for /searchfeed Proxy /portal_dojo/* Proxy for /portal_dojo Proxy /PageBuilder2/* Proxy for /PageBuilder2 Proxy /mccenabler/* Proxy for /mccenabler ConnThreads 15 ServerConnPool on MaxSocketPerServer 20 CacheTimeMargin 5 seconds CacheFileSizeLimit 2 M flexiblesocks off LimitRequestFieldSize Web Server Tuning The following settings allow the HTTP server to put proper caching headers on requests and to have the HTTP server do caching. # uncommented the following to enable statics to be cached LoadModule expires_module modules/mod_expires.so LoadModule headers_module modules/mod_headers.so # from avoid gzip bug in IE 6 BrowserMatch ^Mozilla/4\.[0678] no-gzip BrowserMatch \bmsie\s7!no-gzip!gzip-only-text/html AllowEncodedSlashes On ExpiresActive On ExpiresByType text/javascript "access plus 5 days" # note that the following max-age=86400 are just an example. #A lower value might be more appropriate for your site <LocationMatch "\.(gif jpeg jpg png ico jsp css js swf json)$"> header set Cache-Control "public,max-age=86400" </LocationMatch> 52

59 <LocationMatch "/mccenabler/js/com/ibm/mm/livetext/.*\.cfg"> header set Cache-Control "public,max-age=86400" </LocationMatch> <LocationMatch "/mccbuilder/widget-catalog/.*\.xml"> header set Cache-Control "public,max-age=86400" </LocationMatch> 53

60 4 MANY PAGES TUNING The Many Pages Scenario, derived from the Base Portal Scenario, measures the effects of having larger numbers of pages visible to the users. For WebSphere V7.0 and later, a site is considered as having a large number of pages if it has 2,500 or more pages. Since it is derived from the Base Portal Scenario, the same tuning that was used for the Base Portal Scenario applied for the Many Pages Scenario. The differences in tuning are mentioned below. DB2 Database Tuning We applied the following tunings to our Release database. Table 24: DB2 Database Settings for Many Pages Release DB Parameter dbheap 4800 applheapsz 4096 logbufsz 256 num_ioservers 8 num_iocleaners 8 Setting Used How-To Set: In the DB2 server run the following commands: db2 update db cfg for release using dbheap 4800 db2 update db cfg for release using applheapsz 4096 db2 update db cfg for release using logbufsz 256 db2 update db cfg for release using app_ctl_heap_sz 4096 db2 update db cfg for release using num_ioservers 8 db2 update db cfg for release using num_iocleaners 8 54

61 Cache Manager Service Table 25: Cache Manager Service Settings for Many Pages Parameter Setting Used com.ibm.wps.datastore.pageinstance.oidcache.size com.ibm.wps.datastore.pageinstance.oidcache.lifetime com.ibm.wps.datastore.pageinstance.derivationcache.size com.ibm.wps.datastore.pageinstance.derivationcache. lifetime

62 5 WEB CONTENT MANAGEMENT TUNING In general, the same tuning that was used for the Base Portal Scenario was used for the WCM scenarios. The main differences are to the cache tuning settings: WCM increases demands on the portal access control component which requires a different set of cache tunings to accommodate and WCM has an internal set of object caches that can be tuned as well. On top of cache tunings, WCM can require more Web Container threads and JCR data source connections than the Base Portal Scenario, especially for heavy authoring workloads. The differences in tuning are mentioned below. Application Server Tuning Web Container Thread Pool we used 60 threads for both the minimum and maximum value Data Source Connection Pool We used the following values: Data Source Rendering Value (min/max) Complex Rendering Value (min/max) JCRDB 10/150 10/150 10/150 Authoring/API Value (min/max) 56

63 WebSphere Portal Service Properties C A C H E M A N A G E R S E R V I C E Portal Caches sizes Ignore the Base Portal values and set the following in CacheManagerService.properties: Table 26: Cache Manager Service Settings for WCM CacheManagerService.properties File Parameter Value cacheinstance.com.ibm.workplace.searchmenu.helper. SearchMenuCacheHelper.size 5000 cacheinstance.com.ibm.wps.ac.accesscontrolusercontextcache. lifetime cacheinstance.com.ibm.wps.ac.applicationrolechildrencache.size 500 cacheinstance.com.ibm.wps.ac.applicationroledescriptorcache.size 500 cacheinstance.com.ibm.wps.ac.applicationroleoidcache.size 500 cacheinstance.com.ibm.wps.ac.applicationrolesforprincipalcache. size cacheinstance.com.ibm.wps.ac.childentitlementscache.size 500 cacheinstance.com.ibm.wps.ac.containedrolescache.size 500 cacheinstance.com.ibm.wps.ac.explicitentitlementscache. APPLICATION_ROLE.size 500 cacheinstance.com.ibm.wps.ac.explicitentitlementscache.size 500 cacheinstance.com.ibm.wps.ac.explicitentitlementscache.virtual. size 500 cacheinstance.com.ibm.wps.ac.externaloidcache.size cacheinstance.com.ibm.wps.ac.groupmanagement.nestedgroupcache. size 1200 cacheinstance.com.ibm.wps.ac.protectedresourcecache.size cacheinstance.com.ibm.wps.ac.rolescache.size 7500 cacheinstance.com.ibm.wps.datastore.pageinstance.derivationcache. size 250 cacheinstance.com.ibm.wps.datastore.pageinstance.oidcache.size 250 cacheinstance.com.ibm.wps.model.content.impl.resourcecache. lifetime cacheinstance.com.ibm.wps.model.content.impl.resourcecache.size 500 cacheinstance.com.ibm.wps.model.content.impl.topologycache.size 500 cacheinstance.com.ibm.wps.model.factory.contentmodelcache.live. size 5000 cacheinstance.com.ibm.wps.policy.services.policycachemanager. lifetime cacheinstance.com.ibm.wps.services.cache.cachedstate. CachedStateServiceSessionBound.cache.size 250 cacheinstance.com.ibm.wps.pe.portletentity.firstlevelcachesize 0 57

64 cacheinstance.com.ibm.wps.pe.portletentitycounter. firstlevelcachesize 0 cacheinstance.com.ibm.wps.pe.portletregistry.firstlevelcachesize 0 cacheinstance.com.ibm.wps.pe.portletmodel.portletdefinition. firstlevelcachesize 0 cacheinstance.com.ibm.wps.pe.contenttypes.nocharset. firstlevelcachesize 0 cacheinstance.com.ibm.wps.pe.contenttypes.result. firstlevelcachesize 0 cacheinstance.com.ibm.wps.contentmapping.contentmappinginfocache. firstlevelcachesize 0 cacheinstance.digestcache.cache.size ACC E S S C O N T R O L D A T A M A N A G E M E N T S E R V I C E Table 27: Access Control Data Management Service Settings for WCM AccessControlDataManagementService.properties File Parameter accesscontroldatamanagement.acucignoreresourcetypes Null Value Used N A V I G A T I O N S E R V I C E Portal Navigator Service You can realize an increase in performance on anonymous pages by leaving this disabled. If you are however using the old Web Content Viewer portlet (based on the IBM Legacy Portlet API) on anonymous pages you should continue to enable public sessions. Table 28: Navigation Service Settings for WCM NavigatorService.properties File Parameter Default Value Value Used public.session false false Definition Controls whether anonymous users have sessions P E R S O N A L I Z A T I O N S E R V I C E In Complex Rendering scenario, performance can be improved by setting the following tuning parameters 58

65 Table 29: Personalization Service Setting for WCM Complex Rendering PersonalizationService.properties Parameter Value Used bypasswebcontentlinks 1 rulesengine.cache.timeout 900 WCM Object Cache Table 30: WCM Object Cache Settings WCM Object Caches Cache Name Value Used abspath 8000 abspathreverse 8000 processing session 6000 strategy 8000 summary 4000 How-To Set: Login to the WAS Administration Console Resources Cache instances Object cache instances. Detailed descriptions of these caches can be found in Web Content Management Caches section of this document. WCM Configuration Service Enable the user cache Find the WCMConfigService.properties file under: <wp_profile>/portalserver/wcm/shared/app/config/wcmservices Set user.cache=true Enable the subscriberonly setting (for rendering only) Set deployment.subscriberonly=true The subscriberonly setting should be enabled only for environments that will be subscribed to and not syndicated from. We recommend this be enabled in a production environment. 59

66 Web Content Viewer portlet caching For the new Web Content Viewer portlet (JSR 286) version, a feature has been added to allow caching of HTML content generated by the portlet (the portlet fragment). This cache can be used in addition to the WCM Object Caches. You can achieve a significant performance increase by enabling this cache, especially if your Web Content Viewer portlet is displaying non-personalized content. To enable this cache do the following: 1. Enable servlet caching in the WAS admin console under Servers Application Servers WebSphere Portal Web Container Settings Web Container 2. Enable portlet fragment caching in the WAS admin console under Servers Application Servers WebSphere Portal Portlet Container 3. Restart the Portal Server 4. Login to portal as an administrator and navigate to page containing the rendering portlet that you want to enable portlet caching. 5. Select Configure or Edit Shared Settings from the dropdown in the upper right hand corner of the portlet. When set under in Configure mode the settings apply to all instances of this portlet as opposed to Edit mode where the settings only apply to that one instance. Figure 1 Portlet Settings Screenshot 6. Under Portlet SettingsPortlet Cache Options select the appropriate Cache Scope and Expiration settings for your portlet. Cache scope: Shared cache across users: This type of cache provides the biggest performance improvement as it caches the output of the rendering portlet across users. This cache 60

67 scope should be used only for rendering portlets that render Web content that is not personalized. Non shared cache for a single user: This type of cache provides a smaller performance improvement but allows caching of personalized Web content that is displayed by the rendering portlet. Expiration: Cache always expires: The content will never be cached in either a shared or a private portlet cache i.e. this setting disables the cache. Cache never expires: The content can be stored indefinitely in either a shared or a private portlet cache. Cache expires after this many seconds: The content will be stored for the number of seconds specified in either a shared or a private portlet cache For more information regarding the new WCM portlet caching, please visit the following URL: 10.lotus.com/ldd/portalwiki.nsf/dx/Caching_with_the_Web_Content_Viewer_%28JSR_286%29_Portl et_ M O N I T O R I N G T H E W C M C O N T E N T V I E W E R P O R T L E T C A C H E You can monitor your cache to make sure is working properly. WebSphere Application Server comes with a Cache Monitor application that allows you to do just that. In addition, there's an extended cache monitor with more functionality and additional bug fixes. Follow these steps to view the contents of your WCM Content Viewer portlet cache: 1. Install/Update the Cache Monitor. For information on how to do this, go to: 2. Before you can access the Cache Monitor application you will need to give a administrator account access to this application. Login to the WAS Admin console Applications Application Types WebSphere enterprise applications Dynamic Cache Monitor Security role to user/group mapping Select administrator Click on Map Users Search for the right user account and add it to the selected box Click OK Save 3. Login to the Cache Monitor application. The URL should look like this: 4. Select the basecache and click OK 5. At this point any WCM Web Content Viewer JSR 286 portlet with caching enabled should add entries to this cache. 61

68 6. To look at the contents of the cache, simply click on the Cache Content link on the left side menu. In addition to viewing the contents of the cache, you can also use the Cache Monitor application to view cache statistics, invalidate individual cache entries, and compare cache content. JCR Text Search icm.properties Disable jcr textsearch During our measurements, we have disabled text indexing. Text indexing is done periodically, adding new content to the text index. However, the indexing interval is not synchronized with our load plateaus. As a result, if we let text indexing run during our performance measurements, it would likely reduce the reliability and repeatability of our measurements. We do not recommend disabling text indexing in production environments, as doing so would mean that new content will not be added to the text index, and therefore would not appear in search results. If you wish to disable text indexing, this can be done in the file icm.properties, by setting the property jcr.textsearch.enabled to the value false. This file is found in the directory <wp_profile>/portalserver/jcr/lib/com/ibm/icm. DB2 Tuning (Authoring Environment) M U L T I P L A T F O R M ( L U W ) On top of the DB2 tunings for the base portal scenario, during our testing we found that the following tunings to the JCR database below significantly decreased load on the CPU and disk i/o of the DB2 server in our environment. In our authoring scenario we found that it was necessary to initially size the IBMDEFAULTP and ICMLSMAINBP32 bufferpools. This was because DB2 was unable to autosize them fast enough during our user ramp ups and it was therefore causing inconsistent results during the early stages of the scenario. We also noticed a large amount of database file handles being opened and closed during our runs stressing the disk I/O prompting us to increase the maximum number of file handles that can be opened for the JCR database. Finally, two indexes were added to improve some troublesome queries: db2 connect to jcrdb db2 alter bufferpool IBMDEFAULTBP IMMEDIATE size db2 alter bufferpool ICMLSMAINBP32 IMMEDIATE size db2set DB2_ASYNC_IO_MAXFILOP=512 db2 update db cfg for jcrdb using MAXFILOP

69 db2 create index taw_entry_idx2 on jcr.ev_entry (parentid) db2 reorgchk update statistics on table jcr.ev_entry db2 create index taw_icmstjcrwsx_2 on jcr.icmstjcrws (basewsid, wstype) db2 reorgchk update statistics on table jcr.icmstjcrws db2stop force db2start Finally, we recommend that you use DB2 in 64-bit mode to allow sufficient memory for the necessary database objects. This is particulary important with authoring environments as this can be a very database intensive workload. During our testing, database memory became a limiting factor with this workload and we were able to achieve a significant increase in capacity by moving to 64-bit. Z / O S The following section details the tunings that we made in our DB2 9 for z/os backend database during our testing. To start here are a few general recommendations: When the DB2 z/os server is on a different LPAR to the Portal/WCM installation, Universal Driver type 4 database driver must be used but when DB2 for z/os is on the same LPAR you can also use Type 2 driver which is a recommended configuration. As part of DB transfer process fifteen databases were created to support WCM on Portal. One database each for release, customization, community, likeminds, and feedback and ten databases for JCR. B U F F E R P O O L S It is also beneficial to create separate bufferpools for use by Portal to avoid contention. It is recommended that a set of bufferpools separate from the Portal databases gets created for the JCR databases. The following table shows the settings for our configuration. Table 31: DB2 z/os Bufferpool Settings Database Domain RELEASE CUSTOMIZATION COMMUNITY LIKEMINDS FEEDBACK wkplc_dbdomain.prop erties <domain>.db4kbuffe rpoolname <domain>.dbindex4k BufferPoolName Bufferpool settings DB2 BP BP Page size (KB) BP Size BP YES BP YES PGFIX Usage FEE,LIK,REL,C OM,CUS Table Spaces 4K BPOOL FEE,LIK,REL,C OM,CUS Index Spaces 63

70 JCR <domain>.db32kbuff erpoolname jcr.db4kbufferpool Name jcr.dbindex4kbuffe rpoolname jcr.db32kbufferpoo lname BP32 K1 BP4 4 BP5 4 BP32 K YES YES YES YES jcr.bp4ktables BP NO jcr.bp4kindexes BP NO jcr.bp16ktables jcr.bp32ktables jcr.bp8ktables jcr.blobbufferpool BP16 K1 BP32 K1 BP8K 1 BP32 K YES YES YES YES REL,CUS,COM and Application 32K BPOOL JCR Table Spaces 4K BPOOL JCR Index Spaces JCR 32K BPOOL 4K buffer pool Used by JCR for User Tables 4K buffer pool used by JCR for creating Index's for User Tables 16K buffer pool Used by JCR for User Tables 32K buffer pool Used by JCR for User Tables 8K buffer pool Used by JCR for User Tables BLOB Tablespaces PGFIX is an ALTER BUFFERPOOL parameter. PGFIX when set as YES allows DB2 to fix the buffer pages once and keep them fixed in real storage. This avoids the processing time. J C R Q U E R Y O P T I M I Z A T I O N O P T I O N F O R A U T H O R I N G We noticed that certain JCR queries that were consuming lot of CPU Resources will derive benefit if ran with REOPT(ONCE).REOPT(ONCE) will cause DB2 to re-calculate the access path based on the literal values in the queries. We bound another set of DISTSERV packages just for JCR queries. The new set of packages were bounded using DB2 Jcc Binder utility with -reopt once and -collection Parameter. The value specified for collection was used on the CURRENT PACKAGESET custom property of the JCR data source. To bind the new set of Packages Use java com.ibm.db2.jcc.db2binder -url jdbc:db2://<hostname>:<drdaport>/<db2 Location Name> -user <username> -password <password> -collection <collection name> -reopt once Updating JCR data source to use the new set of packages 64

71 In the administrative console, Under Resources > JDBC > Click Data Sources Select the Appropriate Scope > Click JCR Datasource Click Custom properties Update the value of the property currentpackageset to the collection value you specified while binding the new set of packages in the step above. D B 2 D R I V E R P A C K A G E S C H A N G E F O R W C M R E N D E R I N G For rendering as limited number of different SQL's are executed very often, we reduced the overhead of short prepares in DB2 by using a new set of JCC packages bounded with DB2 Jcc Binder utility with -keepdynamic yes and -collection Parameter. The value specified for - collection was used on the CURRENT PACKAGESET custom property of the all data sources. To bind the new set of Packages Use java com.ibm.db2.jcc.db2binder -url jdbc:db2://<hostname>:<drda port>/<db2 Location Name> -user <username> -password <password> - collection <collection name> -keepdynamic yes Updating data source to use the new set of packages and the enabling keepdynamic parameter. 1. In the administrative console, Under Resources > JDBC > Click Data Sources 2. Select the Appropriate Scope > Click Datasource (update the property of all data sources) 3. Click Custom properties 4. Update the value of the property currentpackageset to the collection value you specified while binding the new set of packages in the step above. 5. Update the value of the property keepdynamic and set it to 1. A D D I T I O N A L R E S O U R C E S F O R D B 2 Z / O S WCM/JCR database table usage information for WebSphere Portal v6 Performance Improvement Possible For Remote TCP Access to z/os DB2 9 for z/os Performance Topics 65

72 Oracle Tuning (Rendering and Authoring) In some cases on Oracle 10g, the SQL Tuning Advisor in the Enterprise Manager console flagged the SQL query below as performing poorly. The cause of the poor performance was the optimizer was choosing a poor access plan for the query doing a table scan instead of using an existing index leading to high query response times and high database CPU utilization. SELECT OID, CREATED, MODIFIED, RES_TYPE, EXTERNAL_OID, EXTERNAL_UID, PARENT_OID, OWNER_TYPE, OWNER_UID, INHERITANCE, PROPAGATION, EXTERNALIZED, IS_PRIVATE, NAME, IS_LEAF FROM jcr.prot_res WHERE (PARENT_OID = :1 AND RES_TYPE = :2) If you are having problems with this query, you can add the index below and rerun more detailed statistics gather on the PROT_RES table by executing the following commands: CREATE INDEX "JCR"."IX2110I" ON "JCR"."PROT_RES" ("PARENT_OID", "RES_TYPE"); exec dbms_stats.gather_table_stats( ownname=> 'JCR', tabname=> 'PROT_RES', estimate_percent=> null, cascade=> TRUE, degree=> NULL, no_invalidate=> FALSE, granularity=> 'ALL', method_opt=> 'FOR ALL COLUMNS'); After adding this index, we observed that the access plan for this query would replace the table scan with an index scan using either the new IX2110I or the existing IX2110D index. In both cases the DB CPU utilization was significantly decreased. 66

73 6 CLUSTER TUNING We have measured the Base Portal scenario in several configurations, including a three-node horizontal cluster environment (with or without database session persistence), and a six-member vertical cluster environment. In general, the same tuning that was used for the Base Portal Scenario was used for these cluster measurements. The additional settings specific to the clustered environments are mentioned below. Application Server Tuning D Y N A C A C H E C U S T O M P R O P E R T I E S There are several properties which can be set to reduce the number and size of Dynacache messages sent between cluster members. This will improve scalability and reduce resource consumption in a clustered Portal environment. To set these properties, do the following: 1) Open and log in to the Administrative Console. 2) Click Application servers WebSphere_Portal Java and Process Management Process Definition Java Virtual Machine Custom properties New 3) Under General Properties, add the following information: Name: com.ibm.ws.cache.cacheconfig.ignorevalueininvalidationevent Value: true There is a custom property: com.ibm.ws.cache.cacheconfig. propogateinvalidationsnotshared that can significantly affect performance. Out of box Portal does not set this property and the default is false, which provides the best performance. If it is set to true, Dynacache will send invalidations to peer members in the cluster on cache entry insertions and updates for a NOT_SHARED cache instance. This can cause a significant performance impact, particularly on the z/os platform. Therefore this property should be removed (or set to false, its default value). This will not have a functional impact on WebSphere Portal. 67

74 D Y N A M I C C A C H E R E P L I C A T I O N 1. Dynamic Cache replication must be enabled on all nodes in the cluster. How to set: 1) Open and log in to the Administrative Console. 2) Click Application servers WebSphere_Portal Container Services Dynamic cache service click Enable cache replication Replication Type Not Shared 2. Set the Dynamic cache size the same for all nodes in the cluster. How to set: 1) Open and log in to the Administrative Console. 2) Click Application servers WebSphere_Portal Container Services Dynamic cache service cache size: Resynchronize each node: From Administrative Console System administration Nodes select all nodes in the cluster click Full Resynchronize V M M C O N T E X T P O O L I N G Tuning Cluster for VMM Context Pooling must be done in Deployment Manager, then do full resync to each node from Administrative Console. See VMM Context Pooling for how to set this. Session Persistence To Memory-Memory Tuning To enable memory-memory Session Persistence in a cluster, a replication domain must be created, then you can configure memory-memory session replication for each Portal server under Session Management from WebSphere Administrative Console. Choose one of the three types of replication modes. We use the default BOTH (Client and Server) mode in our environment. This means that sessions are sent from the Portal cluster members to other cluster members separate application servers are not defined to store the session data. This mode of session persistence will cause each cluster member to hold more session data than if no replication is used. Therefore we recommend 64-bit environments for this type of session replication, as well as regular monitoring of heap usage. In addition to the tuning discussed in the previous section for cluster tuning, additional tunings are applied below: 68

75 J V M H E A P JVM heap size, the new area size, and the shared class cache size are increased to accommodate the memory requirement. Initial and Shared Class Cache Parameter Maximum heap New Area Size Size size Value used 4096 MB -Xmn1024m -Xscmx150m S E S S I O N P E R S I S T E N C E T U N I N G Table 32: WebSphere Mem-Mem Session Persistence Tuning Parameter Setting Additional Details Session in memory count The default value of Session in memory count is For Session persistence enabled load, we set session in memory count to We pick this number to be large enough to cover the expected working set of active sessions. Use PMI to monitor your session count and adjust accordingly. How-To Set Parameter: In the WebSphere Administrative Console: Servers Application Servers WebSphere Portal Container Settings: Session Management Max in memory - Set Max in memory Write frequency Time based 10 seconds Write contents Schedule sessions cleanup Only updated attributes false How-To Set Parameter: In the WebSphere Administrative Console: Servers Application Servers WebSphere Portal Container Settings: Session Management Distributed environment settings Custom tuning parameters Custom settings Write frequency. How-To Set Parameter: In the WebSphere Administrative Console: Servers Application Servers WebSphere Portal Container Settings: Session Management DistributedEnvironment Settings Custom tuning parameters Custom settings Write contents How-To Set Parameter: In the WebSphere Administrative Console: Servers Application Servers WebSphere Portal Container Settings: Session Management DistributedEnvironment Settings Custom tuning parameters Custom settings uncheck Schedule sessions cleanup 69

76 W A S F I X P A C K WebSphere Fixpack includes numerous fixes benefit to a cluster. Therefore we recommend using this fixpack level or later. A I X N E T W O R K AIX Kernel parameter somaxconn specifies the maximum listen backlog for TCP connections. This parameter was increased to to handle the load in our measurement. This was set for all three Portal nodes. See AIX Network tuning on how to set it. P L U G I N The following plugin parameter is set: IgnoreAffinityRequests: false (default=true) IgnoreAffinityRequests specifies whether the plugin ignores the number of affinity requests made to a server when selecting servers based on the Round Robin algorithm. We have found setting it to false resulted in better load balancing, particularly in a session persistence enabled environment. Find more description and how-to set it in, nd.multiplatform.doc/info/ae/ae/rwsv_plugincfg.html Session Persistence To Database Tuning To enable Session Persistence to Database, a data source with non-xa JDBC driver must be created. We also configured DB2 Session Database with 32K page size to optimize performance for writing large amounts of data to the database. For details on configuring tablespace and page size for DB2 session database visit WebSphere Application Server Info Center. Additional tunings are applied below: Table 33: WebSphere Session Persistence Tuning Parameter Setting Additional Details 70

77 Session in memory count The default value of Session in memory count is For Session database persistence enabled load, we set session in memory count to We pick this number to be large enough to cover the expected working set of active sessions. Use PMI to monitor your session count and adjust accordingly. How-To Set Parameter: In the WebSphere Administrative Console: Servers Application Servers WebSphere Portal Container Settings: Session Management Max in memory - Set Max in memory Allow overflow disable The default value of session allow overflow is checked. This was disabled for session database persistence to limit the total number of sessions held in memory. Session Distributed Environment ConnectionPool size for Session Data Source Enable with database 32K page tablespace Min=10 Max=35 How-To Set Parameter: In the WebSphere Administrative Console: Servers Application Servers WebSphere Portal Container Settings: Session Management Allow overflow uncheck it. How-To Set Parameter: In the WebSphere Administrative Console: Servers Application Servers WebSphere Portal Container Settings Session Management DistributedEnvironment Settings database Jndi name: jdbc/sessions (set it according to your Session datasource) Userid/password: set it according to your session db DB2 Row size: ROW_SIZE_32KB Tablespace name=sess_user32k (set it according to your db tablespace) Multiple row schema: uncheck it Refer to Datasource Tuning For DB2 on how-to set parameter. Prepared Statement Cache size for Session Data Source 15 Refer to Datasource Tuning For DB2 on how-to set parameter. S E S S I O N D A T A B A S E T U N I N G We use IBM DB2 database server for persisting the sessions. We applied the following tunings to our dedicated session database server, db2set DB2_USE_ALTERNATE_PAGE_CLEANING=ON db2set DB2_RR_TO_RS=YES db2set DB2_PARALLEL_IO=* 71

78 # disable session tablespace file system caching db2 alter tablespace sess_user32k NO FILE SYSTEM CACHING db2 alter tablespace sess_temp32k NO FILE SYSTEM CACHING db2 update db cfg for <sess70> using locklist 5120 db2 update db cfg for <sess70> using maxlocks 80 db2 update db cfg for <sess70> using dbheap 4800 db2 update db cfg for <sess70> using num_iocleaners 20 db2 update db cfg for <sess70> using num_ioservers 20 db2 update db cfg for <sess70> using logbufsz 256 db2 update db cfg for <sess70> using logfilsiz db2 update db cfg for <sess70> using logprimary 40 Vertical Cluster Tuning We set the following in our vertical cluster environment, See Dynacache Custom Properties in Cluster Tuning section to reduce the number and size of Dynacache messages sent between JVMs. Additional DynaCache properties for Vertical Cluster: Dynacache Value com.ibm.ws.cache.cacheconfig.cacheentrywindow 10 com.ibm.ws.cache.cacheconfig.cacheinvalidateentrywindow 10 com.ibm.ws.cache.cacheconfig.propogateinvalidationnotshared FALSE Increase Dynamic cache size to How to set: Portal Server Container Services Dynamic Cache Service Cache size = 3500 See VMM Context Pooling on how to improve the performance of concurrent access to an LDAP server. Use the following command to increase DBHEAP for Release database. db2 update db cfg for <release> using dbheap

79 8 OTHER PERFORMANCE TUNING OPTIONS In addition to the scenarios discussed above, WebSphere Portal has some other tuning options which may be useful in specific scenarios. These options include: Use of the nested group cache Recording last login time for users Optimizing the retrieval of permissions in access control Improving portal startup performance Managing the retrieval of user attributes Use of dynamic content features Personalization best practices Real-world network considerations Nested Group Cache In previous versions of this guide, we recommended disabling the nested group cache (com.ibm.wps.ac.groupmanagement.nestedgroupcache). It s important to understand how this cache is used so that it can be set appropriately for your environment. In some environments including the lab environment for our performance measurements nested groups are not used for access permissions. In such cases, two settings can be used to improvement performance: disable nested group support, and disable the nested group cache. This is done with the following two settings: 73

80 CacheManagerService setting: cacheinstance.com.ibm.wps.ac.groupmanagement.nestedgroupcache. enabled=false AccessControlDataManagementService setting: accesscontroldatamanagement.enablenestedgroups=false However, if permissions are assigned to nested groups, then it is not appropriate to disable nested group support, so the settings above should not be used. In particular, disabling the nested group cache while nested group support is enabled can cause significant performance problem, especially in environments that use third-party authentication software like IBM Tivoli Access Manager (TAM) WebSEAL. Recording Last Login Time for Users By default, WebSphere Portal will record the time a user logs in. This is used for reporting on the number of users who have logged in recently, and is also needed for session resume support. If none of these features are needed, then it is possible to disable recording the user s last login time. This will eliminate an insert or update operation on the USER_DESC table on each user login. More information about user session persistence is given in the WebSphere Portal information center, under the topic Configuring user session persistance. The following values are prerequisites for disabling the recording of the user last login time: timeout.resume.session=true persistent.session.level=0 Do not change these without first understanding the functional impact as described in the information center. To disable recording the last login time, change the setting record.lastlogin to false in the Portal ConfigService. Optimizing Retrieval of Permissions in Access Control In WebSphere Portal, permissions are granted by assigning a principal to a specific role. There are four types of principals: Users Groups Virtual users (the anonymous "user") 74

81 Virtual groups (all authenticated users). When determining a user s permissions, WebSphere Portal will check for permission assignments in its access control database for all of these types of principals. However, in some Portal sites, one or more of these classes of principals has no roles assigned. For example, if groups are not used for access control, then there would presumably be no roles assigned to groups. In this case, a performance optimization is possible. By telling WebSphere Portal that no roles are assigned to certain types of principals, these queries will never be run. This can save processing time on the portal server and the database server. Since roles are always on resources within a specific domain, this performance optimization is specified at the level of a resource domain. Thus the configuration will tell WebSphere Portal that "No role assignments exist for this type of principal in this domain" - for example, "No role assignments exist for Groups in the Community domain". To enable this performance optimization, first determine which types of principals won't have role assignments, and in which domains. Then for each principal type + domain pair which will not have role assignments, add an entry to AccessControlDataManagementService.properties. The format is: accesscontroldatamanagement.domain.domain-name.disablerolesfor. principal-type=true Replace domain-name with the desired resource domain and principal-type with the desired type of principal. For example, to indicate that no role assignments exist for Groups in the Community domain, the setting would be: accesscontroldatamanagement.domain.community.disablerolesfor.groups=false The principal types are specified as follows: Users: users Groups: groups Virtual users: v_users Virtual groups: v_groups If requirements change and role assignments which have been disabled are again needed, this setting can be undone by setting the value to false. For example, to make use of role assignments for Groups in the Community domain, the setting would be changed to: accesscontroldatamanagement.domain.community.disablerolesfor.groups=true 75

82 Improving Portal Startup Performance WebSphere Portal 7.0 has two options for reducing the time required to start the application server. These two options are: Development mode: development mode is intended for software development and testing environments. It is not intended for use in high-load or production environments, as runtime performance may be negatively impacted in such environments. Portal light mode: light mode is usable in production or test environments. Startup performance is improved. In addition, most deployments will see some reduction in memory consumption. W E B S P H E R E P O R T A L D E V E L O P M E N T M O D E WebSphere Portal 7.0 introduced a development mode that greatly improves startup performance, so that WebSphere Portal will start more quickly. This can be very useful for development environments where WebSphere Portal must be stopped and started frequently. However, it s important to note that this mode is only meant to be used for development or test environments, not production or performance benchmark environments. Development mode turns on lazy-start for almost all applications in WebSphere Portal, and this can cause a performance impact the first time an application is accessed under load. Development mode also changes the way the JVM is started to give better startup speed at the cost of reducing capacity under load. To switch to development mode, run the enable-develop-mode-startup-performance configuration task to complete the configuration and optimize the portal startup. The changes can be reverted to the original values using the disable-develop-modestartup-performance configuration task. For more information, please visit the following URL: W E B S P H E R E P O R T A L L I G H T M O D E WebSphere Portal 7.0 and above provides a new portal light mode which can improve portal startup time and reduce memory consumption in production environments. For more information, please visit the following URL: 10.lotus.com/ldd/portalwiki.nsf/dx/Enabling_and_disabling_portal_light_mode_wp7 76

83 Managing the Retrieval of User Attributes A user directory doesn t just contain a user s ID and password; it also contains a number of other pieces of information attributes about the user. A directory server can contain a lot of attributes for each user, so if every reference to a user required retrieving all of these attributes, this would impose a performance penalty on both the Portal server node(s) and the directory server node(s). Therefore WebSphere Portal attempts to optimize the loading of these attributes. Two sets of user attributes are defined: the base set of attributes, and the minimum set of attributes. Depending on what action caused the user to be retrieved from the directory, either the base or the minimum set of attributes will be retrieved. Typically, the base set of attributes will be loaded when the user is retrieved; for example, this is what occurs when a user logs in. If the user was looked up when searching for users, then the minimum set of attributes will be loaded. For example, this can occur when searching for users to assign access to a page. By default, WebSphere Portal defines the user attribute sets as follows: Base set: the following attributes are in the base set: o uid o cn o sn o preferredlanguage o ibm-primary o givenname o displayname Minimum set: o uid o cn What happens if additional attributes are needed? For example, consider a portlet which requires the user attribute countryname. Assume that the user in question was looked up on login, so the base set of attributes was retrieved. The attribute countryname isn t in the base set, so the full user record with all of its attributes will be retrieved from the directory server at that point. This will require a second request to the directory server. Also, since all user attributes are retrieved on the second request, this can end up consuming more memory on the WebSphere Portal server. This provides an important performance tuning point to both improve response times and reduce load on the directory server. If a user attribute will commonly be needed, then it should be included in the base set of attributes so that it s retrieved on the initial lookup, eliminating the need for a second request. However, if an attribute is only needed infrequently, consider leaving it out of the base set of attributes, so that it s not retrieved for all users. 77

84 I D E N T I F Y I N G A F U L L F E T C H O F U S E R A T T R I B U T E S How can you identify a second request is made to the directory server to retrieve the full set of user attributes? This is best done in a test or staging environment, rather than a live production environment, as it requires turning on tracing in the portal server, and this can impose a significant performance overhead. There are two traces to enable to look for this condition. The first one will show if the all the needed user attributes have been retrieved. If this is false, then a full fetch of the user information will occur. The second trace shows which attributes are being requested, so you can tell which ones should be added to the base set. The two trace strings are: com.ibm.wps.um.principalimpl=all=enabled com.ibm.wps.um.pumaprofileimpl=all=enabled Enable those traces, and then execute the use case you wish to test. Then, look for this message in the trace.log: PrincipalImpl 3 com.ibm.wps.um.principalimpl iscompletelyloaded false This message may be output multiple times for the same user, so check all occurrences of it. If the value after iscompletelyloaded is always true, then all the needed attributes have already been loaded, and no changes are needed. In this example, the value after iscompletelyloaded is false, showing that the needed user attributes haven t all been loaded. This will result in reloading all the user information from the user directory. In that case, the trace will then typically show a call to reload the information for that user; this will tell the full distinguished name of the user whose information is being loaded from the user directory: PrincipalImpl > com.ibm.wps.um.principalimpl reload ENTRY id: cn=yin Yin_000_992, cn=users,l=sharedldap,c=us,ou=lotus,o=software Group,dc=ibm,dc=com Next, search above that in the trace for the getattributes call, which will show the attributes the user has requested. It will look like this: PumaProfileIm > com.ibm.wps.um.pumaprofileimpl getattributes ENTRY id: cn=yin Yin_000_992, cn=users,l=sharedldap,c=us,ou=lotus,o=software Group,dc=ibm,dc=com more user details follow isexternal: false [preferredlanguage, ibm-primary , countryname, displayname, givenname, cn, sn, uid] The last line of the log entry shows the attributes being requested. In this case, the attributes being requested are [preferredlanguage, ibm-primary , countryname, 7 8

85 displayname, givenname, cn, sn, uid]. Comparing this against the list of base user attributes, we can see that countryname is not in the base user attributes. Depending on whether the action being executed is a common one or not, consider adding this to the base set of attributes. M I N I M U M A T T R I B U T E S E T Generally, the minimum set of attributes does not need to be modified from the default provided by WebSphere Portal, as that attribute set is satisfactory for the user management applications provided with WebSphere Portal. However, if your site contains a custom application for managing users and groups, and it uses attributes other than those in the minimum set, then you should consider expanding the minimum attribute set. Use of Dynamic Content Features WebSphere Portal contains dynamic content support infrastructure which supports two dynamic content features: dynamic user interfaces and attribute based administration. If neither of these features is being used, the dynamic content support can be disabled. Note that attribute based administration is only one use of the Personalization capabilities in WebSphere Portal; other uses of Personalization, such as placing content spots within a portlet, do not require the dynamic content features. Disabling the dynamic content features will provide a modest performance benefit. It will provide a reduction in the memory needed for each user, and also reduce the processing time for generating pages in WebSphere Portal. For example, in one measurement with our Base Portal scenario, capacity improved about 5% when disabling the dynamic content support. Disabling dynamic content support is done by adding a custom property to the ConfigService.properties resource provider. The property is: content.topology.dynamic=false See Overview of configuration services in the WebSphere Portal information center for more information on how to update configuration properties. Personalization Best Practices WebSphere Portal Personalization lets you choose content for users, based on information in their profiles and on business rules. More information about Personalization is available in the Portal Information Center, under the topic Personalizing your content. If your site is using Personalization, you ll want to make sure you re getting the best possible performance as well. Performance topics for Personalization are discussed in Best 79

86 Practices for using Personalization in WebSphere Portal, available at 10.lotus.com/ldd/portalwiki.nsf/dx/personalization-best-practices. Real-World Network Considerations In our lab environment, we had the luxury of our clients and servers being on the same LAN segment, so that they could take advantage of a high-bandwidth, low-latency network connection. However, this is typically not the case for real clients. Over a wide-area network, latencies can be significant, and bandwidth limited. In this case, the time to transfer the page content from the server to the client can become a significant contributor to overall page response time. Here are some steps which can help alleviate this situation: Compress content on the HTTP server Allow client-side caching of images, Javascript files, and stylesheets, Set the Login page to cacheable Details on these steps will be given below. C O M P R E S S C O N T E N T O N T H E H T T P S E R V E R Much of the content served by a WebSphere Portal site can be compressed to reduce transmission time and save network bandwidth. Typically, images should not be compressed (as they are usually stored in a compressed format), but other types of content can show a significant size reduction from compression. IBM HTTP Server supports Deflate compression through the mod_deflate module. When it is enabled, the HTTP server checks the Accept-Encoding: header sent by the browser to see if it can accept a compressed version of the content. If so, the HTTP server will compress the content before sending it to the browser. We ve observed issues using mod_deflate in conjunction with mod_cache. Therefore we do not recommend using both in the same HTTP-server deployment. In one measurement, we observed an average of 65% network traffic reduction when Deflate compression is enabled. However, the compression operation does not come free as we also observed approximately a 10% processor utilization increase on the HTTP server. 80

87 To enable gzip compression in IBM HTTP Server, add the following lines in httpd.conf: # compress everything but images LoadModule deflate_module modules/mod_deflate.so DeflateFilterNote Input instream DeflateFilterNote Output outstream DeflateFilterNote Ratio ratio # Insert filter SetOutputFilter DEFLATE # Netscape 4.x has some problems... BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine BrowserMatch \bmsie!no-gzip!gzip-only-text/html # Don't compress images SetEnvIfNoCase Request_URI \ \.(?:gif jpe?g png exe)$ no-gzip dont-vary E N A B L I N G C L I E N T - S I D E C A C H I N G The HTTP protocol allows the server to tell clients how long they can cache responses. When the client has the content in their cache, they do not need to request it again, saving the round-trip time to the server to retrieve the content. This is done by adding Cache-Control: headers to the content which we wish to make cacheable. By default, WebSphere Portal will include these headers in the stylesheets it uses, making that content cacheable at a client for 5 days (432,000 seconds). It is possible to use mod_headers in IBM HTTP Server to add the same headers to images, JavaScript and other static content by adding the following lines to httpd.conf: LoadModule headers_module modules/mod_headers.so <LocationMatch "\.(gif jpeg jpg png ico jsp css js swf json)$"> header set Cache-Control "public,max-age=86400" </LocationMatch> Portlet Caching Portlet caching is not particularly relevant for Page Builder theme in server side rendering mode, but it could be useful for client side rendering and the theme. portlet.xml is part of a portlet s war file. It is located in the portlet s WEB-INF directory. To make portlet fragments publicly cacheable set: 1. <expiration-cache>28800</expiration-cache> 2. <cache-scope>public</cache-scope> 81

88 S E T T I N G T H E L O G I N P A G E T O C A C H E A B L E It is possible to set the page that unauthenticated users use to login at as shared and cacheable. For heavily used sites, setting the default homepage to cacheable, even for 5 minutes, could make a site more responsive. 1. Login to portal as administrator and navigate to the administration page 2. Select Portal User InterfaceManage Pages 3. Search by Title starts with Login 4. Edit Page Properties of the Login Page. 5. Expand Page Cache Options 6. Set the Cache Scope to Shared cache across users radio button 7. Under Cache Expiration click the radio button Cache expires after this many seconds. Set the value to a value such as Click OK to save. 9. That puts you back on the main administration page 10. Select Portlet ManagementPortlets. 11. If the Login portlet is not showing, search by Title starts with Login 12. Click Configure Portlet (the wrench icon) for the Login portlet 13. Under Cache Scope for HTTP and fragment caches, select Share cache across all users) 14. Under Cache Expiration for HTTP and fragment caches select Portlet cache expires after this many seconds. Set the value to a value such as Click OK W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

89 9 WEBSPHERE PORTAL CACHES In the preceding chapter we described the specific values we modified for the WebSphere Portal caches in our environments. This chapter describes the WebSphere Portal caches, the general parameters for those caches, which cache instances WebSphere Portal V7.0 provides, and some sample portal usage patterns along with suggestions on portal cache properties. General Information With WebSphere Portal V7.0, portal configuration properties, including cache configuration properties, are managed via the WebSphere Application Server administrative console. In previous WebSphere Portal releases these configuration properties were maintained in properties files. More information on how to modify portal configuration properties can be found in the Setting configuration properties section of the WebSphere Portal Version 7.0 information center. C A C H E C O N F I G U R A T I O N P R O P E R T I E S The cache configuration properties are organized in two groups: global configuration properties and cache instance specific properties. Global properties have the prefix cacheglobal and apply to all caches unless they are specifically overridden with a cache instance specific property. Cache instance specific properties have the prefix cacheinstance and then contain the name of the cache instance and the name of the property, for example: cacheinstance.com.ibm.wps.ac.explicitentitlementscache.user_group. size All entries of a cache are governed by a single set of properties. The cache configuration properties that are safe to modify are: enabled, lifetime, size, shared, replacement, and admit-threshold. The replacement and admit W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

90 threshold properties do not apply to all cache implementations. In general, only caches that are not shared will use these properties. There are other properties that should not be modified unless specifically instructed to do so by IBM WebSphere Portal support. enabled: The enabled property determines whether a cache is used or not. If a cache is not enabled, the property has a value of false, then no values are held by the cache and every cache lookup will return a null value. This property should only be modified for testing purposes, never in a production environment. The supported values are true and false and the global default value is true. lifetime: The lifetime property determines the number of seconds an entry will exist in a cache. A cache no longer returns an entry once the entry has existed longer than the lifetime property. Cache entries can also be invalidated prior to reaching their lifetime due to explicit invalidation of the entry or Least Recently Used (LRU) eviction from the cache. A value of -1 indicates an infinite lifetime. This value should be used with caution since cache entries will only be invalidated programmatically. Infinite lifetimes are particularly discouraged with access control caches because: In a cluster there can be rare occurrences when not all cache invalidation messages are processed on every node due to race conditions in the application server s dynacache code. While the probability of this occurring is low, it can not be completely avoided with the current code base. Finite lifetimes allow these entries to be invalidated. Finite lifetimes allow modifications made to roles, which have been externalized to an External Security Manager, to be reflected in role caches. If updates to production environments are restricted to a well-defined staging process using XML Access, it is usually safe to use infinite lifetimes. size: The maximum number of entries in a cache is limited by the size property. If this size limit is reached, entries are removed from the cache by an algorithm which usually includes 1) remove invalidated entries and entries which have exceeded their lifetime and 2) apply a LRU algorithm to the valid entries. Any positive integer is allowed. Cache sizes have a direct impact on the memory requirements of your portal, specifically the demands on the Java heap. You should monitor and record the Java heap metrics and any performance impact when modifying the size of a cache. shared: Cluster-aware caches are shared across the nodes of a cluster. These caches propagate invalidations of cache entries by using the WebSphere Application Server DistributedMap interface W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

91 Supported values are true and false. The default values shipped in WebSphere Portal V7.0 should apply to most configurations. If you do not have a cluster there may be a small performance benefit to setting this property to false since a different cache implementation is used. We did not modify the defaults in our single node measurement environments. If this parameter is false in a cluster, it can ultimately lead to data inconsistencies between the cluster members. replacement: The cache replacement algorithm used by these caches works on the frequency of recent access to cache entries; entries that have been used frequently are less likely to be discarded than entries that have not been used frequently. This parameter controls how long the access history will be kept. A setting of aggressive means those only recently accessed entries will be considered, which causes stale entries to be discarded more quickly. The opposite setting, conservative, will consider a longer access history. The intermediate setting of moderate is appropriate for most caches. admit-threshold: Caches that have a very high insert rate may cause useful entries to be discarded prematurely. An admittance threshold restricts the rate at which entries are allowed into the cache by only allowing them to enter after an attempt has been made to insert the same entry into the cache multiple times. The default value of 0 means no admittance threshold, which will allow entries into the cache on the first insert attempt. This is appropriate for most caches. A higher value indicates that a cache entry will not be allowed into the cache until that many attempts have been made to insert the same key. For example, a value of 2 means that the first two attempts to insert a cache entry will be ignored, and the third attempt will insert the value into the cache. We did not modify the admit-threshold for any cache in our measurement environments. Cache Usage Patterns Most WebSphere Portal caches follow the simple paradigm: if an entry already exists use it, otherwise add the entry. However, there are caches that behave differently. Each cache follows one of the following four patterns: Pattern: regular The regular pattern, described earlier, is the most common cache pattern: value = cache.get(key); if (value == null) { value = calculatenewvalue(); cache.put(key, value); } W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

92 Pattern: invalidation checking Invalidating cache entries in a clustered environment is rather expensive. Therefore, portal caches often check whether the entry to be invalidated actually exists in the local cache. test = cache.get(key); if (test!= null) { cache.invalidate(key); } Caches following this pattern follow the regular pattern for all but invalidation actions. Pattern: multiple object types Most caches hold only a single object type. When caches can hold multiple types, they follow the regular pattern for each of those types. Pattern: cascading object types This pattern is a special case of the multiple object types pattern in that two or more object types that are queried in a certain order are stored in a single cache. There may be one cache hit along with a cache miss on a regular basis. value = cache.get(keya); if (value == null) { value = cache.get(keyb); if (value == null) { value = calculatenewvalue(); cache.put(keya keyb, value); } } // either key could be used W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

93 Cache Instances This section describes the caches in WebSphere Portal V7.0 along with hints to best configure those caches. As you saw in the modifications we made in our measurement environments, the size and lifetime properties are the most commonly modified properties when tuning portal caches. You may wish to increase the size of a cache if many values are used on a regular basis and there is sufficient space available in the Java heap. You may wish to increase the lifetime of the entries of a cache if the cached data rarely, if ever, changes and it is not critical to your business to reflect changes immediately in your portal. The changes mentioned in this section are set in the file {wp_profile}/portalserver/config/cachemanagersservice.properties and are put into effect by running configengine update-properties as described elsewhere in this document. Each cache description includes the following attributes: Default size, default lifetime and cache usage pattern Cache content and scaling factor (i.e. what causes the cache to grow) Information on the read and write access to the cache Approximate costs for re-creating cache entries and relative size of cached objects. Small objects range from 16 to 300 bytes and the largest cache entries are not larger than a few thousand bytes. One known exception are access control caches in systems with many resources per user can hold entries that are very large, beyond 50,000 bytes, to reflect all the resources which a user can access. Some cache descriptions include a sample scenario with suggested property values. A C C E S S C O N T R O L 1 This section describes each of the access control caches. It is critical for proper operation of a portal that the access control information be current. Hence it is vital that these caches be shared within a cluster so that the information is propagated to all members of the cluster. Different lifetime values should be chosen to avoid concurrent reload of information from multiple caches. This pattern of rather random lifetime and invalidation intervals could also be applied to other caches. The access control caches are divided into two groups: those caches (the first caches in the list) used during all access control operations in all portal setups and those caches (starting 1 This section is partially taken from another whitepaper: Portal Access Control Performance Tuning: ibm.com/developerworks/websphere/library/techarticles/0508_buehler/0508_buehler.html W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

94 with the cache com.ibm.wps.ac.applicationroleoidcache) used for the WebSphere Portal Composite Application Infrastructure. Figure 1 shows the relationships among the various caches. The small cylinders represent cache instances. The green caches are caches of the portal user management (PUMA) component that are closely related to the caches of the portal access control component. The PUMA caches contain information originating from the user registry. Portal access control uses these caches for user identification and group membership retrieval. The vertical axis represents the cache aggregation direction. The cache instances in layer N leverage cache instances of lower layers to compute their values. For example, when computing effective permissions (entitlements) for a user (cached in the ExplicitEntitlementsCache), the portal access control component leverages existing cache values from the ChildResourcesCache and RoleMappingCache. Figure 2 Portal Access Control Cache Hierarchy com.ibm.wps.ac.permissioncollectioncache Default size: 2000, default lifetime: 10240, usage pattern: regular (admit-threshold). This cache contains permission collections that can be used for permission checks. It scales with the number of permissions in the system, i.e. the number of portal resources and permissions assigned on those. Entries in the cache typically are requested very frequently during permission checks. An admit-threshold is used to avoid caching rarely used permissions. You may wish to try different admit-threshold settings to tune this W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

95 cache. Entries are never invalidated from the cache. Creating a cache entry is very fast since all required information is in-memory. A cache entry is small. com.ibm.wps.ac.accesscontrolusercontextcache Default size: 8000, default lifetime: 1200, usage pattern: regular. This cache contains the access control user context objects, a local cache for permissions assigned to a specific user. If possible all requests against access control are answered using this information so that access control methods can return very quickly. This cache scales with the number of active users. For fast portal operation, you should make sure that the entries for all actively working users fit into the cache, especially if a user has access to many portal resources. Entries are invalidated from the cache upon any portal administrative action. Creating a cache entry typically is rather cheap because most information is in-memory, but can take a while if the required information cannot be found in other caches. An entry in the cache can be become very large, depending on the number of resources the user can access. com.ibm.wps.ac.protectedresourcecache Default size: 5000, default lifetime: 10143, usage pattern: regular. This cache contains the resources protected by portal access control. The size of this cache scales with the number of protected resources accessed by the active users in the system. Entries are read from the cache during every permission call or entitlements call against access control. Entries are invalidated from this cache during resource deletion, resource relocation, modification of the resource state (private/shared), modification of the resource owner, externalization, internalization, and role block change. Creating a cache entry requires a single-row lookup in the portal database. An entry in the cache is relatively small. com.ibm.wps.ac.ownedresourcescache Default size: 5000, default lifetime: 10043, usage pattern: invalidation checking. This cache maps resource owners (user groups or individual users) to the resources they own. This cache scales with the number of active users/groups multiplied with the different ResourceTypes they access. There is one entry in the cache per principal per resource type per WebSphere Portal domain. Data is read from this cache during many portal access control requests, if the corresponding entitlements are not already cached in an entitlements cache. Entries are invalidated from this cache during resource deletion, modification of the resource owner, externalization, and logout of the user. Creating a cache entry means executing a multi-row query against the portal database. An entry in the cache is relatively small W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

96 com.ibm.wps.ac.rolescache Default size: 10000, default lifetime: 3630, usage pattern: invalidation checking. This cache contains the role instances. The size of this cache scales with the number of active users/groups multiplied by the different ResourceTypes they access. There is one entry per role instance per principal per resource type per WebSphere Portal domain. Data is read from the cache during many portal access control requests, if the corresponding entitlements are not already cached. Entries are invalidated from this cache during role mapping creation, role mapping deletion, resource deletion, externalization, internalization, and logout of the user. Creating a cache entry means executing at least one, but potentially multiple database queries. An entry in the cache is relatively small. com.ibm.wps.ac.explicitentitlementscache.* and com.ibm.wps.ac.childentitlementscache Default size: 10000, default lifetime: varying (around 10000), usage pattern: invalidation checking. These caches contain the permissions of a user or group on a number of resources of the same ResourceType. There are dedicated caches for the different ResourceTypes. For example, the cache for pages is called com.ibm.wps.ac. ExplicitEntitlementsCache.CONTENT_NODE. All ResourceTypes that are not specified explicitly will be cached in the default cache. The size of this cache scales with the number of active users/groups multiplied by the different ResourceTypes valid for this cache and accessed by the users and groups, either by using the resource during navigating the portal or by portal administration. There is one entry per set of permissions per WebSphere Portal domain. Entries are read during regular access control requests, during page rendering and, especially, during portal administration. If a certain resource type is not used, you will see only misses and no other activity on the corresponding cache. Entries are invalidated from this cache during all access control modifications and logins. Creating an entry in one of these caches typically can be done from in-memory information in the lower-level caches. If the required information is not available multiple database requests might be required to create a cache entry. An entry into the cache is rather small, but built of multiple objects typically stored in other caches. com.ibm.wps.ac.externaloidcache Default size: 10000, default lifetime: 8640, usage pattern: regular. This cache contains the mapping between the external ObjectIDs of individual protected resources, for example page or portlet IDs, and the portal access control specific ObjectIDs stored in the database table PROT_RES. Entries are read from the cache during many portal access control requests. The size of this cache scales with the number of protected resources accessed by the active users in the system. Since this mapping is immutable, this cache is never explicitly invalidated. Creating a cache entry requires a single row database query. An entry in the cache is fairly small W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

97 com.ibm.wps.ac.groupmanagement.nestedgroupcache / com.ibm.wps.ac.groupmanagement.groupcache Default size: 1000, default lifetime: 3600, usage pattern: regular. Only one of these two caches is used in a WebSphere Portal installation depending on your nested groups setting. If nested groups are supported, the NestedGroupCache cache will be used, otherwise the GroupCache is used. The caches contain the nested or direct groups to which a user belongs. The size of this cache scales with the number of active users and the number of virtual portals they access. The cache is accessed during login into portal, but typically not during regular portal navigation. Its main use case is during administration of users and user groups. Entries are invalidated from this cache during login of the user and after user and group administrative changes. Creating a new cache entry requires queries against the WMM component and then typically against the user repository. An entry in the cache is medium-sized. com.ibm.wps.ac.childresourcescache Default size: 1000, default lifetime: 7200, usage pattern: regular. This cache contains the resource hierarchy within portal access control. The size of this cache scales with the number of protected resources accessed by the active users in the system, like the protected resources cache. This cache does not contain leaf objects in the access control tree, so the number of entries typically is smaller. The cache is accessed during most portal access control requests. Entries are invalidated from this cache during resource deletion, parent change of the resource, modification of the resource owner, externalization, internalization, and role block change. Creating a cache entry includes a multi-row query against the portal database. An entry in the cache is fairly small. com.ibm.wps.ac.applicationroleoidcache Default size: 5000, default lifetime: 7650, usage pattern: regular. This cache maps application role names to the corresponding object IDs. It scales with the number of application roles defined in the system. Data is read from the cache frequently when accessing or administering composite applications. In all other situations the cache is basically not used at all. Entries are invalidated when application roles are deleted. There is one entry in the cache per application role per WebSphere Portal domain, except for the customization domain. Creating a cache entry means reading a single row of data from the portal database. A cache entry is fairly small. com.ibm.wps.ac.applicationroledescriptorcache Default size: 5000, default lifetime: 8450, usage pattern: regular. This cache maps the object ID of an application role to its corresponding descriptor object, which contains the application name, parent application and other information. The cache scales with the number of application roles defined in the system. Data is read from the cache frequently when accessing or administering composite applications W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

98 In all other situations the cache is basically not used at all. Creating a cache entry means reading a single row of data from the portal database. A cache entry is medium-sized. com.ibm.wps.ac.applicationrolesforprincipalcache Default size: 5000, default lifetime: 8760, usage pattern: regular. This cache maps the available application roles to a portal user. It scales with the number of active users in the system. Data is read from the cache frequently when accessing or administering composite applications. In addition this cache is also used as a lookup for application role information even if no application roles are used. Hence you will see frequent read access on this cache under all circumstances. Creating a cache entry is rather expensive. It involves three multi-row queries against three WebSphere Portal domains. A cache entry is medium-sized. com.ibm.wps.ac.containedrolescache Default size: 5000, default lifetime: 8650, usage pattern: regular. This cache contains the mappings between application roles and the regular roles defined in them. The cache scales with the number of application roles in the system. There is one entry for every WebSphere Portal domain. Data is read from the cache frequently when accessing or administering composite applications. In all other situations the cache is basically not used at all. Creating a cache entry is rather expensive. It involves two multi-row queries. A cache entry is medium-sized. com.ibm.wps.ac.applicationrolechildrencache Default size: 5000, default lifetime: 8760, usage pattern: regular. This cache is not used in WebSphere Portal V7.0. com.ibm.wps.ac.parentresourcerolemappingcache and com.ibm.wps.ac.resourcerolemappingcache Default size: 1000, default lifetime: infinite, usage pattern: regular. These two caches are used for special access control scenarios and typically are not accessed during portal processing. Settings of these caches should not be modified P O R T A L U S E R M A N A G E M E NT The following caches are used by the portal user management component (PUMA). In so far they are closely related to the access control caches and caching within WMM. com.ibm.wps.puma.dn_oid_cache / com.ibm.wps.puma.oid_dn_cache Default size: 1500, default lifetime: infinite, usage pattern: regular. These two caches contain the mapping between the distinguished name of users and groups and their internal ObjectID identifier. The size of these caches scales with the W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

99 number of active users and groups or users and groups that are used for delegation. Entries are invalidated from this cache during deletion of a user or group. Creating an entry requires one database lookup. An entry into the caches is fairly small. D A T A S T O R E The datastore caches contain data read from the portal database. It is not the goal of these caches to be a complete image of the DB content, but to have frequently-accessed but raw information available for all other portal components to use. com.ibm.wps.datastore.services.identification.oidanduniquename.cache Default size: 5000, default lifetime: infinite, usage pattern: regular. This cache stores unique names. It is used quite frequently during page rendering and especially administration of unique names. Page and portlet unique names make up the biggest part of the cache content. The cache should be large enough to hold entries for the most frequently used pages and portlets having a unique name associated with them. Note that not all resources have a unique name associated with them. To eliminate database lookups the cache size could correspond to the database table UNIQUE_NAME multiplied by two, to allow for mapping in two directions. Creating a cache entry involves reading one entry from the portal database. An entry object into the cache is fairly small. com.ibm.wps.datastore.portalidcache.vpperlpid.cache Default size: 1000, default lifetime: infinite, usage pattern: regular. This cache maps long Virtual Portal object IDs to the corresponding portal internal short ID. It scales with the number of virtual portals in the system, plus one additional entry. It is used heavily only if more than one virtual portal exists in the system. Data is read from the cache during every rendering request then. For optimal caching the size should be set to the number of Virtual Portals defined in the system. Creating a cache entry involves one single-row database lookup. An entry object into the cache is fairly small. com.ibm.wps.datastore.portalidcache.explicitlpidpervp Default size: 100, default lifetime: infinite, usage pattern: regular. This cache maps the short object ID for a virtual portal to the corresponding long ID. In comparison to cache com.ibm.wps.datastore.portalidcache.vpperlpid.cache it stores the reverse mappings. Hence all other descriptions given above also apply here. com.ibm.wps.datastore.pageinstance.oidcache Default size: 3000, default lifetime: infinite, usage pattern: regular. This cache stores information on portal pages for fast retrieval during login or page navigation. It scales with the number of page instances in the system. It is one of the most frequently used caches and should be large enough to hold all pages that are W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

100 frequently accessed by users. Pages are loaded and put into the cache by direct navigation, creating a link to another page or by working with the page during portal administration (always including all higher derivation levels). Creating a cache entry includes one single-row database lookup. An entry to the cache is medium sized. To achieve best performance, in terms of cache hit rate, the size should be set to a value so that all pages defined in the system fit into the cache. This corresponds to the row count of the database table PAGE_INST. com.ibm.wps.datastore.pageinstance.derivationcache Default size: 3000, default lifetime: infinite, usage pattern: regular. This cache stores the mappings between pages and their derivation children, or empty mappings if no such children exist. Like the pageinstance.oidcache cache this one also is accessed very frequently during page rendering and administration. Creating a cache entry involves one multi-row database query. This cache also scales with the number of pages in the system. Hence, you can use the same sizes for the previous cache and this one. In most portal usage scenarios the actual size of this cache will be somewhat lower than with the page instance cache. An average entry in the cache is rather small. Only if all your pages have long lists of derivation children will the entries become larger. To achieve best performance, in terms of cache hit rate, the size should be set to a value so that all pages defined in the system fit into the cache. This corresponds to the row count of the database table PAGE_INST. com.ibm.wps.datastore.pageinstance.dynamicnodecache Default size: 5, default lifetime: infinite, usage pattern: regular. This cache stores one list per domain. These lists contain all pages in the corresponding domain that are flagged as dynamic nodes, i.e. dynamic assembly content nodes can be added below these pages. Since the number of domains does not grow, the size as well as other properties of this cache should not be modified. The size of one entry into the cache ranges from small in a portal with very few dynamic nodes up to medium with many dynamic nodes in the system. com.ibm.wps.datastore.services.identification.serializedoidstring.cache Default size: 2500, default lifetime: infinite, usage pattern: cascading object types. This cache stores serialized ObjectIDs used in request parameters or XML Access files. It contains a subset of all the loaded ObjectIDs in memory. In so far it scales with the number of ObjectIDs in the system, but not for all of these IDs the serialized version is requested, hence the actual size is impossible to predict. The cache is used during every request. Creating a cache entry is rather cheap. Typically all information can be retrieved in memory, database lookups are scarcely necessary. A cache entry is fairly small W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

101 M O D E L The model caches can be categorized into two groups: One group of caches is accessed during every portal request during page rendering. The second group of caches is especially important for administrative actions. Hence those caches are especially important in those environments where content and portal administration is done. Most run-time caches have the name suffix live; the administrative caches have the suffix isolated. Figure 29 describes the hierarchy of caches in the model component and depending portal components. The structure of the picture is identical to figure 28: The vertical axis shows caches with increasing aggregation of data. The model component only caches data at a rather high aggregation level. All data cached here hence is rather valuable, reloads can be expensive if the corresponding data is not available in the lower-level caches. Model caches are dependent upon the datastore and portal access control caches. The figure only features the most important caches. Figure 3 Portal Model Cache Hierarchy com.ibm.wps.model.factory.simplecachekey Default size: 2500, default lifetime: infinite, usage pattern: regular. This cache is a helper cache for other model caches used by the portal model factory. It contains a small number of entries based on the model types available in portal. In addition there can be one entry per active user session. The size of this cache might be adapted to the number of active sessions in one portal JVM. Re-creating a cache entry is a rather cheap operation since it usually can be accomplished in memory. A cache entry is a small object W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

102 com.ibm.wps.model.content.impl.resourcecache Default size: 5000, default lifetime: 5600, usage pattern: regular. This cache contains aggregated pages. In contrast to the data store page instance cache this cache contains the complete models of pages and their content, i.e. the portlets and containers on them. The page instance cache rather holds the raw page data. This cache scales with the number of pages defined in your portal and the different sets of access control rights on these pages. This cache contains very valuable information; it utilizes several other caches, for example, page instance and access control caches, to build its data. Hence creating a cache entry usually only requires inmemory information, but can also lead to many database queries. The size of an entry in the cache depends on the complexity of the pages, but typically the objects are mediumsized, since they are usually made of references to other cached data. The cache should be large enough to hold the most frequently accessed pages multiplied with the number of different access control settings on these pages. Increasing the cache lifetime can be useful if page definitions do not change often in your environment. Example: A portal has 500 pages and all users have the same permissions on these. In addition there are another 50 pages; two groups of users have different access rights on these pages. In this case a maximum of 600 entries would be in the cache. com.ibm.wsp.mode.content.impl.topologycache Default size: 10000, default lifetime: 5700, usage pattern: regular. This cache contains portal topology information, i.e. portal navigation elements being composed of navigation nodes and their sorted, access control-filtered children. Topology elements undergo several processing steps from first loading from the database until finally being added to the cache. This cache only contains the completely processed topology entities. This cache is explicitly used during login and whenever a user navigates to a part of the portal where he has not been before during the same session. If a cache entry is not found, a private copy is created that is then further processed. Once the private copy is completely processed -that does not happen for all navigation nodes- it is added to the cache. If a user finds an entry in the cache a reference is copied into his private topology model and additional cache accesses are no longer necessary. Hence there is only one cache hit (or miss) per user and navigation node. The cache scales with the number of navigation nodes and the number of different sets of permissions on these and, possibly, the derivation chain (children and parents) a page belongs to. Entries in this cache are expensive to create; they rely on other cached information, like the access control caches and the page instance cache. The entries in the cache are medium-sized, being mainly some lists of references to other cached data. The cache should be sized in a way such the most important pages multiplied with all the different sets of permissions that exist on theses page can be stored W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

103 com.ibm.wps.model.factory.contentmodelcache.live Default size: 1000, default lifetime: infinite, usage pattern: regular. This run-time cache contains the content models for portal users. There is one entry per active portal user. The cache should be large enough to hold all models for these users. An entry in the cache has the maximum lifetime of the corresponding user session, i.e. entries are removed at the end of the session. Creating a cache entry can be very expensive. Typically all required information is in memory, but accessing the database, also many times, might be necessary if underlying information is also no longer cached. Furthermore the number of pages summarized in the model can be very large which also adds to the time it takes to rebuild a cache entry. Building the content model is done incrementally as required for the current request; the model is not built at once. Depending on the size of the model also the memory requirements vary. The more pages a user can access and has accessed already during the current session the larger the cache entry, ranging from medium to very large. A cache entry typically is composed of references to other cached and shared objects. Hence an entry size is not made up by the number of page and all subordinate objects but only contains references to these. com.ibm.wps.model.factory.contentmodelcache.isolated Default size: 1000, default lifetime: infinite, usage pattern: regular. This cache contains the administrative content models. There is one entry for every user doing administrative work at a certain point in time. In so far the number of entries in this cache typically is much lower than in the other cache. But for this cache you should make sure that no cache entries of active users are evicted. Compare with the content model run-time cache for all other information. com.ibm.wps.model.factory.navigationselectionmodelcache.live Default size: 1000, default lifetime: infinite, usage pattern: regular. This run-time cache contains the navigation selection models used by portal users. There is one entry per user session. The cache should be large enough to hold all these models for the active users. An entry in the cache has the maximum lifetime of the corresponding user session, i.e. entries are removed at the end of the session. Creating a cache entry is less expensive than creating a content model cache entry. Typically all required information is in memory, but accessing the database might be necessary. In comparison to the content model cache creating an entry for the navigation selection model cache is much cheaper. In addition also the in-memory size of elements in this cache is much smaller since this type of model references fewer objects. com.ibm.wps.model.factory.navigationselectionmodelcache.isolated Default size: 1000, default lifetime: infinite, usage pattern: regular. This cache contains navigation selection models used by administrative users. The details given for the administrative content model cache also apply here W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

104 com.ibm.wps.model.factory.urlmappingcache.live Default size: 50, default lifetime: infinite, usage pattern: regular. This cache is the run-time model cache for the URL mappings defined in your portal installation. It should be large enough to hold all URL mappings defined in your system. Creating an entry to the cache involves reading one entry from the portal database. A cache entry is fairly small in size. com.ibm.wps.model.factory.urlmappingcache.isolated Default size: 50, default lifetime: infinite, usage pattern: regular. This cache is the administration cache for URL mappings. The details given for the other isolated caches also apply here. com.ibm.wps.model.factory.multimodelcache.live Default size: 50, default lifetime: infinite, usage pattern: regular. This cache contains run-time models for several different resource types in WebSphere Portal, for example clients, supported markups and languages. One entry, for example, is a list containing all supported markups. Those resources typically remain stable for a long time, hence you should mostly experience read accesses to this cache. Creating a cache entry involves reading the corresponding data from the database. An entry can be fairly large, but the number is very low so that the total size of this cache is negligible. com.ibm.wps.model.factory.multimodelcache.isolated Default size: 1000, default lifetime: infinite, usage pattern: regular. This cache contains the administrative models for several portal resource types. Typically this cache is empty and not used, because administration on those resource types is a rare event. There is one entry for every user doing administration on any of the resource types that are stored in the cache. The creation behavior and size are similar to the run-time cache. com.ibm.wps.model.factory.navigationmodelcache.live Default size: 2, default lifetime: infinite. This cache is not used in WebSphere Portal V7.0 and hence disabled. Changing any of its properties does not have any effect. com.ibm.wps.model.factory.navigationmodelcache.isolated Default size: 2, default lifetime: infinite. This cache is not used WebSphere Portal V7.0 and hence disabled. Changing any of its properties does not have any effect W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

105 com.ibm.wps.model.content.impl.dynamicloadcache Default size: 4, default lifetime: 600. This cache is not used WebSphere Portal V7.0 and hence disabled. Changing any of its properties does not have any effect. com.ibm.wps.model.impl.runtimeclientmap.useragent2client Default size: 1000, default lifetime: infinite, usage pattern: regular. This cache maps user agent strings, i.e. the identification strings sent by browsers in the HTTP header, to client profiles. These profiles basically correspond to CC/PP profiles. Hence the cache scales with the number of browser identification strings. Data from this cache is accessed during every request. Creating a cache entry is very cheap since the profile information is in memory already. An entry in the cache hence is fairly small since already existing data is referenced. U R L M A P P I N G S The following caches contain data on portal URL mappings. Be sure to size the caches in a way such that these are large enough to hold all defined URL mappings in your system. wps.mappingurl.contextscache Default size: 500, default lifetime: infinite, usage pattern: regular. This cache contains URL mapping contexts. It scales with the number of mapping contexts defined in the system. This cache is used if a URL mapping cannot be resolved using the lookup cache. Creating an entry involves reading a mapping entry from the database. An entry in the cache is medium-sized. wps.mappingurl.lookupcache Default size: 600, default lifetime: infinite, usage pattern: regular. This cache is used as a final lookup cache for the computed mappings between (a hierarchy of) URL mappings and a WebSphere Portal resource. It is accessed during every request when analyzing the incoming URL for being a URL mapping. The size of this cache should be the number of all mappings. Creating a cache entry typically is cheap because the information often s in memory. An entry in the cache is rather small. V I R T U A L P O R T A L S The following group of caches is only relevant if you have defined additional virtual portals in your system. In all other situations it is safe to set the size of these caches to one and the lifetime to infinite W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

106 com.ibm.wps.services.vpmapping.virtualportalidtorealmcache Default size: 120, default lifetime: 3600, usage pattern: regular. This cache stores the realm information for virtual portals. One realm can contain several virtual portals, but one virtual portal can only be part of a single realm. As a consequence, the optimum size of this cache is the number of virtual portals defined in your environment. You may increase the lifetime for better performance if your setup of virtual portals changes infrequently. If you only use the default portal and no additional virtual portal, you will see one entry in the cache and only little traffic on the cache. Creating a new cache entry requires one database query. An entry into the cache is fairly small. com.ibm.wps.services.vpmapping.virtualportalidtourlcache Default size: 120, default lifetime: 3600, usage pattern: regular. This cache maps virtual portal IDs to their respective LPID. The LPID usually is used to create URLs for a specific virtual portal. Since the number of LPIDs is equal to the number of virtual portal IDs, the optimum size of this cache is the number of Virtual Portals defined in your environment. You may increase the life time for better performance if your setup of virtual portals changes infrequently. If you only use the default portal and no additional virtual portal, you will see one entry in the cache and only little traffic on the cache. com.ibm.wps.services.vpmapping.urltovirtualportalidcache Default size: 120, default lifetime: 3600, usage pattern: regular. This cache maps LPID values to virtual portal IDs. LPIDs are encoded in a URL that points to a certain virtual portal. Therefore the number of LPIDs is equal to the number of virtual portal IDs. Accordingly the optimum size of this cache is the number of virtual portals defined in your environment. You may increase the lifetime for better performance if your setup of virtual portals changes infrequently. If you only use the default portal and no additional virtual portal, you will see one entry in the cache and only little traffic on the cache. W S R P All WSRP caches are only accessed if the portal is used as either a WSRP consumer or producer. Each of the caches is used on either side of the WSRP communication, but not on both sides. Most of the WSRP caches are used and read during every WSRP request, either displaying a page with a provided portlet on it, or administering WSRP properties. Exceptions to this general rule are noted below W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

107 wsrp.cache.portletdescription Default size: 500, default lifetime: 3600, usage pattern: regular. This cache contains the portlet descriptions delivered by producers. These descriptions could be considered meta information on the provided portlets, like languages and descriptions. It is used on the producer side. The cache scales with the number of remote portlets provided by the producer. Increasing the default lifetime can improve performance if portlet descriptions of the provided portlets change infrequently. Rebuilding cache entries is rather expensive. It includes loading data from the database with several calls. The cached entries are rather expensive in terms of memory usage. wsrp.cache.servicedescription Default size: 150, default lifetime: infinite, usage pattern: regular This cache contains service descriptions of WSRP producers. It is used on the consumer side. It scales with the number of WSRP producers integrated into the consuming portals; there is exactly one description per producer. The service description is generated using all the portlet descriptions from the producer portal plus some additional data. Hence a service description can be large in terms of memory requirements. Rebuilding the description requires several roundtrips and is an expensive operation. Cache entries are rebuilt if a user clicks the Browse button in the WSRP administration portlets. This leads to a refresh of all service descriptions of all producers. This cache is only used during WSRP administration. wsrp.cache.portlet.instance Default size: 2500, default lifetime: 3600, usage pattern: regular. This cache contains the proxy portlet instances on the WSRP consumer side and is only used there. It scales with the number of integrated remote portlets multiplied with the number of users having their own customizations of portlet preferences for these remote portlets (portlet settings for legacy portlets respectively). Creating an entry for the cache involves one multi-line database query. The size of a cached entry depends on the number of parameters associated with the portlet. Hence the size ranges from small to fairly large. wsrp.cache.producer.user Default size: 5000, default lifetime: 3600, usage pattern: multiple object types. This cache contains the descriptor of the producer and context information between users and producers. It is used on the consumer side. It scales with the total number of active users accessing remote portlets of these producers, i.e. as a maximum the number of producers multiplied with the number of active users accessing them plus the number of producers. Recreating cache entry is fairly expensive. It involves some DB queries and in-memory operations. Therefore the session timeout should not be higher than the lifetime of entries in the cache. Cache entries are explicitly invalidated during user session destruction W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

108 wsrp.cache.portlet.window Default size: 2500, default lifetime: infinite, usage pattern: regular. This cache contains a WSRP specific wrapper on a WebSphere Portal portlet entity object. It is used on the producer side. It scales with the number of provided portlets and the number of occurrences of these portlets on consumer pages. Recreating cache entries is rather cheap and typically only includes in-memory operations. An entry into this cache is fairly small. This cache is accessed very during a request. wsrp.producer.portletpool.pops Default size: 1000, default lifetime: infinite, usage pattern: cascading object types. This cache stores the Producer Offered Portlets and hence scales with their number. The number of entries in this cache is identical to the number of entries in the portletdescription cache. The WSRP object model data is stored in here, though. Offered portlets are first looked up in this cache and, if the lookup is not successful, the in the ccps cache (see below). Reloading cache entries involves one query against the database. Cached entries are rather small. wsrp.producer.portletpool.ccps Default size: 1000, default lifetime: infinite, usage pattern: regular. This cache stores the client configure portlets. It is used on the producer side. It scales with the number of provided portlets and the number of remote users having personalized those (Consumer Configured Portlets); hence the maximum would be the number of provided portlets multiplied by the number of remote users accessing the producer. Reloading cache entries involves one query against the database. Cached entries are rather small. D Y N A M I C A S S E M B L Y / P R O C E S S I N T E G R A T I O N The following caches are used when dynamic UI functionality, often together with WebSphere Process Server integration are used. processintegration.pendingtaskscache Default size: 2500, default lifetime: infinite, usage pattern: regular. This cache contains the pending process tasks in the scope of a user. The size of this cache scales with the number of users concurrently using process integration functionality. Each cache entry consists of a complete set of pending process tasks for a given user and therefore can be fairly large in memory. Reloading a cache entry involves accessing the Human Task Manager via an EJB call. The cache is always accessed when the PendingTasksTag is used in a portlet JSP. You should also configure the setting processintegration.pendingtasks.lifetime in ConfigServices.properties which defaults to a value of 30 seconds. This setting W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

109 describes the interval at which a process engine is queried for pending tasks of a user and the cache entries are updated. wp.te.transformationassociationcache Default size: 500, default lifetime: infinite, usage pattern: regular. This cache contains transformation extension nodes. So typically there are only few entries in the cache. There is typically one access to the cache per request. Building an entry to the cache involves one database query. One entry is fairly small. Typically there is no need to modify the settings for this cache. P O L I C Y The WebSphere Portal policy manager uses the following caches. com.ibm.wps.policy.services.policycachemanager Default size: 1000, default lifetime: 7780, usage pattern: regular. This cache stores the policies. Out of the box portal comes with twelve theme policies and one mail policy, each of them being one entry into the cache. Hence the maximum number of cache entries depends on your system and the number of custom policies. This cache is accessed fairly often, if you use policies at all. The WebSphere Portal V7.0 default theme uses policies and query this cache during every request, but it is possible to create themes that do not use policies at all. Furthermore when opening mails the cache is accessed. Creating a cache entry involves reading data from a database. An entry into the cache is fairly small. com.ibm.wps.policy.services.userpolicynodecachemanager Default size: 2500, default lifetime: 600, usage pattern: regular. This cache stores connections between a policy and a policy target, for example a user distinguished name. Theme policies do not use targets, hence there is no cache entry based on these policies. The out-of-the-box mail policy uses the user as target. Hence there is at least one entry for every user accessing the CPP mail portlet. The size of a cache entry depends on the size of the target object. For a distinguished name a cache entry is fairly small. C O L L A B O R A T I O N S E R V I C ES All of the following caches are used by the DEPP portlets and some services around these portlets. In so far the caches are not used if the DEPP portlets are not utilized in the portal system. These caches store credential information needed for the backend servers, server information for these servers and user information that would otherwise require LDAP lookups W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

110 com.lotus.cs.services.directory.ldap.basicldapdirectoryservice.server Default size: 50, default lifetime: infinite, usage pattern: regular. This cache stores mail server information. In so far it scales with the number of different mail servers used in the environment. It is accessed whenever a mail server is accessed. Creating a cache entry requires one LDAP search. An entry in the cache is fairly small. com.lotus.cs.services.directory.ldap.basicldapdirectoryservice.user Default size: 2000, default lifetime: 10780, usage pattern: regular. This cache stores user-specific information read from the LDAP. It scales with the number of users working with DEPP portlets. The cache is accessed during rendering a DEPP portlet, whenever those need user information. This could be multiple times per page reload. In addition the cache is accessed whenever a mail server is accessed. Creating a cache entry is fairly expensive and can involve multiple LDAP lookups. An entry into the cache is medium-sized. com.lotus.cs.services.directory.wmm.wmmdirectoryservice Default size: 4000, default lifetime: 10980, usage pattern: regular. This cache stores user-specific information read from the LDAP and WMM. Entries in this cache represent a more complete set of data stored in the LDAP than is available in other parts of WebSphere Portal. The cache scales with the number of users working with DEPP portlets. The cache is accessed during rendering a DEPP portlet, whenever those need user information. This could be multiple times per page reload. In addition the cache is accessed whenever a mail server is accessed. Creating a cache entry is fairly expensive and can involve multiple LDAP lookups. An entry into the cache is medium-sized. com.lotus.cs.services.userenvironment Default size: 2000, default lifetime: 10880, usage pattern: regular. This cache stores user-specific information. Entries represent a compilation of credential information for one user to different LDAP directories and details which data on the given user can be found in which directory. For example, the general info may be stored in one directory, but the mail server and file may be in another. The cache scales with the number of users working with DEPP portlets. The cache is accessed whenever a DEPP portlet is accessed. Creating a cache entry can be fairly expensive since multiple resources might be queried. An entry to the cache is medium-sized. com.lotus.cs.services.domino.dominoservice Default size: 2000, default lifetime: 11080, usage pattern: regular. This cache stores user-specific Domino information. It is used for awareness functions. It scales with the number of users working with the corresponding function. The cache is W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

111 accessed whenever awareness functions are requested during page rendering. Creating a cache entry is cheap and simply involves creating a new Domino session. An entry to the cache is medium-sized. M I S C E L L A N E O U S This group of caches does not fit in any of the other categories. com.ibm.wps.pe.portletentity Default size: 10000, default lifetime: 5800, usage pattern: regular. This cache contains configuration for portlets on pages (portlet instances, shared and per-user). It scales with the number of pages defined in your portal, the number of portlets on the pages and the number of portlet instances that have been personalized by users. The cache is accessed many times during portal page rendering. In so far it is important that the most relevant portlet entities are cached. Creating a cache entry involves a single database lookup. An entry into the cache is fairly small. Example: In a portal with 500 pages and on average three portlets per page, the optimal cache size would be 1500 to store all possible portlet entity data in the cache, if users are not allowed to personalize the portlets. If the portal has 100 users that are logged in concurrently and these users have personalized 50 portlets on average, the required cache size to cache all data would be These numbers give the maximum number of entries to the cache. Typically for this cache it is not required to have all portlet entities in memory, because most users will not view all pages so that not all personalized data must be loaded. The most frequently accessed un-personalized portlet entities should fit into the cache, though. com.ibm.wps.services.cache.cachedstate.cachedstateservicecache.cache Default size: 50000, default lifetime: 7200, usage pattern: typically regular. This cache stores session-scoped data in the portal context and is used by various portal components. This cache scales linearly with the number of active sessions in the system and the number of portal components using this cache for data retrieval. The usage pattern, access times, entry creation costs and entry memory sizes depend on the portal component using this cache and cannot be stated in general. wp.xml.configitems Default size: 1000, default lifetime: infinite, usage pattern: regular. This cache stores XML Access configuration items. It is used only during XML Access processing. The entries resemble references between nodes in the XML Access document. Especially when working with complex XML files, usually used for imports or Release Builder processes, it can be beneficial to increase the cache size. The cache will be cleared after XML processing is completed. Reloading a cache entry involves one database query. Entries in the cache are medium-sized W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

112 PortletMenuCache Default size: 200, default lifetime: infinite, usage pattern: regular. This cache contains portlet menu trees for all portlets that define their portal menu as global, meaning identical for all users. The portal functionality that utilizes this cache is deprecated with WebSphere Portal Version V7.0. RegistryService Default size: 32, default lifetime: infinite, usage pattern: regular. This cache is used in a cluster for portals to notify the other cluster members when one of the registries needs to be reloaded due to administrative action. It should never be disabled or set to shared=false. com.ibm.workplace.searchmenu.helper.searchmenucachehelper Default size: 2500, default lifetime: 3730, usage pattern: regular. This cache stores a variety of information having to do with the search scopes menu, located at the top of the theme, left to the search box. There are six rather small cache entries per user. Hence the cache scales directly with the number of users. There are no invalidations from the cache, but after login a user will always get fresh data from the cache via a coupling between the cache and the user session. The cache will be accessed on every subsequent user request for building the search bar. If the search bar is not used, the cache will not be used, either. Rebuilding the cache is fairly inexpensive, but it does require some calls to the search engine backend to get the required data W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

113 Example Scenarios This section describes some example usage scenarios along with descriptions of possible cache settings and suggested cache sizes. This discussion may be useful as starting point for the caches in your environment. G E N E R A L C O M M E N T S Most portal caches fall into one of four groups: 1. Caches where the number of entries scales with the number of active users. For example, the access control user context cache (com.ibm.wps.ac. AccessControlUserContextCache) falls into this category. 2. Caches where the number of entries scales with the number of users using a specific function. For example, the cache com.lotus.cs.services. directory.ldap.basicldapdirectoryservice.user falls into this category. 3. Caches which scale with the number of pages being visited. The resource cache (com.ibm.wps.model.content.impl.resourcecache) is an example of this type. 4. Caches which scale based on the growth of some other resource, such as URL mappings, which are stored in the cache com.ibm.wps.model.factory. URLMappingCache.live. Those that scale on portal resources should have lifetimes and sizes based on the number of portal resources in the system and how frequently users access these resources. The other caches depend upon usage scenarios such as those described in this section. Most caches have a lifetime associated with them because the cached content might change over time. For example, access control information could be changed via user administration in the administrative portlets, XML Access or the WebSphere Portal scripting interface. All code that uses caches within WebSphere Portal is implemented in a way such that cache entries that are no longer valid are removed from the cache if the corresponding information has been changed or deleted. The lifetime therefore is used for three reasons: Expired cache entries can be removed to free up memory. There are rare race conditions in cluster setups so that invalidation events are processed correctly but the cache still reflects wrong data. Updates within external systems, like an external access control system, will never become visible W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

114 If there is no or very little administration on your system and you have free memory in the Java heap available, it is safe to increase the lifetime of cache content to save the additional workload for reloading cached data. Now we shall consider some recommendations for specific scenarios. S M A L L N U M B E R O F P A G E S A N D S M A L L N U M B E R O F U S E R S In this scenario a portal only has a limited number of pages and users accessing them. For example, there might be 200 pages in the system and up to a few hundred users working with the portal simultaneously. You will find portals of this kind often during development and testing or in smaller portal production systems. For portals of this size and usage the default cache values typically are good. Hence only small modifications to the defaults given above should be required. Nevertheless you should be careful not to translate those cache settings directly into production for larger user communities. S M A L L N U M B E R O F P A G E S A N D L A R G E N U M B E R O F U S E R S In this scenario a portal only offers a rather small number of pages to the user. Overall there might be again only a few hundred pages, maybe with different access rights on them so that users might see only subsets of the pages. But in this scenario there are thousands of users accessing the system at the same time. In other words, thousands of users have active sessions. Properties of caches that store information on pages typically do not need to be modified in this scenario. But all caches that store user-dependant information might be a problem. Assume you have 2000 active users in your system. Per-user caches being sized to only 1000 entries will operate at their upper limit nearly all of the time and constant re-calculating or re-loading of data from the portal database will the consequence. You should size the user-dependent caches in a way such that enough entries for the number of currently active users can remain in memory. We define the number of currently active users as those who have a session and still issue requests against WebSphere Portal. By contrast there are passive users who still have a session, but no longer issue requests and have forgotten to log out or simply went away from the screen and let the session time out. We increased the sizes of the following nine caches in our measurement environments in such a way that the data of all concurrent users fits into the caches. com.ibm.wps.model.factory.contentmodelcache.live com.ibm.wps.ac.explicitentitlements Cache.USER_GROUP com.ibm.wps.model.factory.navigationselectionmodelcache.live com.ibm.wps.datastore.services.identification. SerializedOidString.cache com.ibm.wps.puma.oid_user_cache com.ibm.wps.puma.dn_user_cache W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

115 com.ibm.wps.puma.oid_dn_cache com.ibm.wps.puma.dn_group_cache com.ibm.wps.puma.oid_group_cache We increased the lifetimes of all caches to at least one hour. P O R T A L S W I T H L O N G S E S S I O N T I M E O U T S If the session timeout has a high value, it is likely that there will be a large number of users who still have sessions with the portal, but who have not interacted with the site for a significant period of time. These users are known as passive users, and they can cause some special performance challenges. In this situation the number of sessions can be much larger. But typically many of these sessions are passive. It is typically not necessary to have all information in memory for all these users when they leave their desk but not the portal, for example during lunch. To find proper sizes for the portal caches you need a good understanding on the behavior of your users. Users who have not worked with the portal for more than an hour typically will accept response times of two or three seconds for their first request after such a long break, whereas users who work with the portal rather constantly do not want to see their data being evicted from caches. For this scenario it is hard to give precise cache size recommendations. The values simply depend too much on your portal usage scenario. You have to monitor your system and users closely to determine good values. P O R T A L S W I T H M A N Y P A G E S Portals in this group have several thousand pages that are available for larger groups of users and therefore are potentially accessed quite frequently. We do not count installations with many customized pages (sometimes known as implicit derivations ) to this group because these are private resources and are loaded for the current user only. Private data is not added to the shared portal caches. For example, your portal could have 5000 pages in total. Half of those are available to all users; on the other half there are several user groups who have view rights, other have manage right on those pages. In this case you typically do not want to have all pages and all corresponding information in memory at all times. But you want to make sure that all frequently accessed data is in memory. Typically not all portal pages are accessed equally frequently. The better your page view statistics are, the easier it is for you to tune the portal caches. We increased the sizes of the following caches in our measurement environments so that all frequently-accessed pages, which depend on our scenario, can be cached. com.ibm.wps.datastore.pageinstance.oidcache com.ibm.wps.datastore.pageinstance.derivationcache W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

116 10 com.ibm.wps.model.factory.contentmodelcache com.ibm.wps.model.factory.navigationselectionmodelcache com.ibm.wps.ac.permissioncollectioncache com.ibm.wps.ac.protectedresourcecache com.ibm.wps.ac.explicitentitlementscache.user_group com.ibm.wps.datastore.services.identification. SerializedOidString We increased the lifetimes of all caches to at least one hour. WEB CONTENT MANAGEMENT CACHES In the preceding chapter we described the specific values we modified for the Web Content Management (WCM) caches in our environments. This chapter describes the Web Content Management caches and the general parameters for those caches. WCM Cache Instances With WebSphere Portal V7.0, the WCM caches are managed via the WebSphere Application Server administrative console under Resources > Cache instances > Object cache instances. W C M I T E M C A C H I N G services/cache/iwk/strategy WCM item caching Default size: 2000, default lifetime: infinite, usage pattern: regular. This cache stores internal WCM items. Any WCM item read from the database will first check this cache. WCM items cover Content, Workflow, Workflow Stages, Workflow actions, Taxonomies, Categories, Authoring Templates, Presentation Templates, Sites, Siteareas, and all Library Components. The cache entry will be updated or cleared when its corresponding WCM Item is updated or deleted W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

117 W C M S U M M A R Y services/cache/iwk/objectsummary WCM summaries Default size: 2000, default lifetime: infinite, usage pattern: regular. This cache stores summaries of WCM Items. The summaries are used to display in lists in the authoring portlet or used internally in the WCM API to calculate WCM Item Document IDs used for Iterators. The cache entry will be cleared when a WCM Item is updated that will affect this summary. W C M B A S I C C A C H I N G services/cache/iwk/module Default size: 2000, default lifetime: infinite, usage pattern: regular. This cache is used for WCM Basic caching. See the InfoCenter on setting up Basic caching. The Basic cache stores the entire response. The key is based only on the URL so all users will see the same response. A D V A N C E D A N D R E S O U R C ES services/cache/iwk/processing Advanced and Resources Default size: 2000, default lifetime: 1 month (configurable), usage pattern: regular. This cache stores the binary MIME for file and image resources in WCM. The maximum size of resources to store is set in the WCMConfigService.properties file as the property resourceserver.maxcacheobjectsize (in kb). Resources over this size are not cached and are streamed directly to the response. The expiry is set in the same file as: resourceserver.cacheexpirydate. The cache entry will be cleared when that resource is updated. This cache also stores page data if WCM Advanced caching is enabled. See the InfoCenter for enabling WCM Advanced caching. The processing cache stores advanced caches for the following types: Site: Similar to Basic Caching except that Connect Tags are processed each time. User: Stores a copy of an item in the cache for each user Secured: Users that belong to the same groups will access the same cached items Personalized: Users who have selected the same personalization categories and keywords, and who belong to the same Group, will access the same cached items NOTE that the session option for Advanced caching is not stored in the processing cache, but the session cache W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

118 S E S S I O N C A C H E services/cache/iwk/session - Session Default size: 2000, default lifetime: infinite, usage pattern: regular. This cache stores the page data for when session advanced caching is enabled. See the InfoCenter for enabling WCM Advanced caching. M E N U services/cache/iwk/menu Menu Default size: 2000, default lifetime: infinite, usage pattern: regular. This cache stores WCM Menu entries. An entry comprises of the Content IDs associated with a particular menu. The entries are retrieved and cached without applying security. Whenever a user needs that menu s results, their specific security will then be applied to the cached results. A dynamic menu, which is one that is affected by the current user s context (e.g. based on categories in a users profile) will store a separate cache entry for each different context. The cache entry will be cleared when a WCM Item is updated that will affect this menu. N A V I G A T O R services/cache/iwk/nav Navigator Default size: 2000, default lifetime: infinite, usage pattern: regular. This cache stores parent to child relationships that comprise a WCM navigator. A complex navigator might have multiple parent to child relationships (e.g. if siblings are included). The navigator entry is made up of the IDs of the parent and children. This cache will be cleared upon any WCM Item update in the system. A B S O L U T E P A T H services/cache/iwk/abspath Absolute path services/cache/iwk/abspathrev Absolute path reverse lookups Default size: 5000, default lifetime: infinite, usage pattern: regular. These two caches store JCR path to WCM item ID relationships (one cache is used for Path-to-ID relationships, and the other for ID-to-Path relationships). The cache entry will be cleared when a WCM Item is updated that will affect it. Typically these two caches should be configured to have the same size W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

119 M I S S E D I T E M S services/cache/iwk/missed Missed items Default size: 5000, default lifetime: infinite, usage pattern: regular. This cache stores JCR paths that does not exist. This is used primarily for multi-locale solutions to determine if items of other locales exist or not. The cache entry will be cleared when a WCM Item is updated that will affect it. L I B R A R Y services/cache/iwk/global - Library Default size: 2000, default lifetime: infinite, usage pattern: regular. This cache contains a lookup for library id, name and path to the library object. This is pre-populated up to the cache size at Portal startup. L I B R A R Y P A R E N T services/cache/iwk/libparent Library Parent Default size: 2000, default lifetime: infinite, usage pattern: regular. This cache stores a list of all children library ids to a given parent id. Introduced for Quickr to group libraries within a teamspace together. D R A F T S U M M A R Y Services/cache/iwk/draftSummary Draft Summary Default size: 2000, default lifetime: infinite, usage pattern: regular. This cache stores the identity of the draft summary to the identity of the draft WCM Item. U S E R C A C H E User cache Size is fixed to By default, this is disabled. This cache operates using a Least Recently Used algorithm. It is not shared across nodes in the cluster and it does not use dynacache. It does not update when LDAP changes. It is disabled by default but can be enabled through setting: user.cache.enabled=true This is set in WCMConfigService.properties. Need to run a module called MemberCacheManager or restart server. To enable the module, add to WCMConfigService.properties W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

120 connect.businesslogic.module.template.class=com.presence.connect.wmmcomms connect.businesslogic.module.template.remoteaccess=true connect.businesslogic.module.template.autoload=false W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

121 Appendix A. References WebSphere Portal Information Center: The Tuning section of the WebSphere Application Server Information Center located at: Redbook WebSphere Application Server V7.0 on the Solaris 10 Operation System located at: WebSphere Portal Benchmark Results: Contact WPLC Performance team. DB2 Information Center: Oracle Information Center: The ROLTP factors for IBM pseries Servers can be found at For additional performance-related information, consult the following resources: WebSphere Application Server Performance information: Recommended reading list: J2EE and WebSphere Application Server WebSphere Application Server Development Best Practices for Performance and Scalability: WebSphere Portal Performance Troubleshooting Guide W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

122 Appendix B. Credits Thanks to the following team members of the WebSphere Portal Performance Team for contributing to this document. Mark Alkins, Manager Lee Backstrom Gaurav Bhagat Jan-Paul Buchwald Andrew Citron Stephan Laertz Kyung Chul Lee, Document Coordinator Klaus Nossek Denny Pichardo, Technical Lead Martin Presler-Marshall John Redmond Terence Walker Laura Yen W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

123 Copyright IBM Corporation 2010 IBM United States of America Produced in the United States of America All Rights Reserved The e-business logo, the eserver logo, IBM, the IBM logo, IBM Directory Server, DB2, Lotus, WebSphere, POWER4 and POWER5 are trademarks of International Business Machines Corporation in the United States, other countries or both. Lotus and Domino are trademarks of Lotus Development Corporation and/or IBM Corporation. The following are trademarks of other companies: Intel is a trademark of Intel Corporation in the U.S. and other countries. Linux is a registered trademark of Linus Torvalds. Solaris, Java and all Java-based trademarks and logos are trademarks of Sun Microsystems, Inc. in the United States, other countries or both. Windows and Windows 2003 Enterprise Server are trademarks of Microsoft Corporation in the United States and/or other countries Oracle 10 and all Oracle-based trademarks and logos are trademarks of the Oracle Corporation in the United States, other countries or both. LoadRunner is a trademark of Mercury in the United States and/or other countries. Other company, product and service names may be trademarks or service marks of others. INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PAPER 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. Information in this paper as to the availability of products (including portlets) was believed accurate as of the time of publication. IBM cannot guarantee that identified products (including portlets) will continue to be made available by their suppliers. This information could include technical inaccuracies or typographical errors. Changes may be made periodically to the information herein; these changes may be incorporated in subsequent versions of the paper. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this paper at any time without notice. Any references in this document 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 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, USA W EBSPHERE PORT AL V7. 0.X TU NING GUIDE

IBM Connections 4.0 Social Software for Business Performance Tuning Guide

IBM Connections 4.0 Social Software for Business Performance Tuning Guide IBM Connections 4.0 IBM Collaborations Solutions Performance Team November 2012 Document Version 1.00 Page 1 of 73 Table of Contents Introduction...6 About this document...6 Document History...6 Performance

More information

2 2011 Oracle Corporation Proprietary and Confidential

2 2011 Oracle Corporation Proprietary and Confidential The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material,

More information

Fine-Tune Performance of Enterprise Portal 6.0

Fine-Tune Performance of Enterprise Portal 6.0 How to Fine-Tune Performance of Enterprise Portal 6.0 Enterprise Portal 6.0 Public... Applicable Releases: EP 6.0 SP1 July 2003. Table of Contents 1 Introduction... 2 2 Tuning the Operating System... 3

More information

WebSphere Performance Monitoring & Tuning For Webtop Version 5.3 on WebSphere 5.1.x

WebSphere Performance Monitoring & Tuning For Webtop Version 5.3 on WebSphere 5.1.x Frequently Asked Questions WebSphere Performance Monitoring & Tuning For Webtop Version 5.3 on WebSphere 5.1.x FAQ Version 1.0 External FAQ1. Q. How do I monitor Webtop performance in WebSphere? 1 Enabling

More information

MID-TIER DEPLOYMENT KB

MID-TIER DEPLOYMENT KB MID-TIER DEPLOYMENT KB Author: BMC Software, Inc. Date: 23 Dec 2011 PAGE 1 OF 16 23/12/2011 Table of Contents 1. Overview 3 2. Sizing guidelines 3 3. Virtual Environment Notes 4 4. Physical Environment

More information

Chapter 1 - Web Server Management and Cluster Topology

Chapter 1 - Web Server Management and Cluster Topology Objectives At the end of this chapter, participants will be able to understand: Web server management options provided by Network Deployment Clustered Application Servers Cluster creation and management

More information

Course Description. Course Audience. Course Outline. Course Page - Page 1 of 5

Course Description. Course Audience. Course Outline. Course Page - Page 1 of 5 Course Page - Page 1 of 5 WebSphere Application Server 7.0 Administration on Windows BSP-1700 Length: 5 days Price: $ 2,895.00 Course Description This course teaches the basics of the administration and

More information

How To Improve Performance On An Asa 9.4 Web Application Server (For Advanced Users)

How To Improve Performance On An Asa 9.4 Web Application Server (For Advanced Users) Paper SAS315-2014 SAS 9.4 Web Application Performance: Monitoring, Tuning, Scaling, and Troubleshooting Rob Sioss, SAS Institute Inc., Cary, NC ABSTRACT SAS 9.4 introduces several new software products

More information

Tool - 1: Health Center

Tool - 1: Health Center Tool - 1: Health Center Joseph Amrith Raj http://facebook.com/webspherelibrary 2 Tool - 1: Health Center Table of Contents WebSphere Application Server Troubleshooting... Error! Bookmark not defined. About

More information

Cache Configuration Reference

Cache Configuration Reference Sitecore CMS 6.2 Cache Configuration Reference Rev: 2009-11-20 Sitecore CMS 6.2 Cache Configuration Reference Tips and Techniques for Administrators and Developers Table of Contents Chapter 1 Introduction...

More information

Java Performance Tuning

Java Performance Tuning Summer 08 Java Performance Tuning Michael Finocchiaro This white paper presents the basics of Java Performance Tuning for large Application Servers. h t t p : / / m f i n o c c h i a r o. w o r d p r e

More information

Securing SAS Web Applications with SiteMinder

Securing SAS Web Applications with SiteMinder Configuration Guide Securing SAS Web Applications with SiteMinder Audience Two application servers that SAS Web applications can run on are IBM WebSphere Application Server and Oracle WebLogic Server.

More information

Liferay Portal Performance. Benchmark Study of Liferay Portal Enterprise Edition

Liferay Portal Performance. Benchmark Study of Liferay Portal Enterprise Edition Liferay Portal Performance Benchmark Study of Liferay Portal Enterprise Edition Table of Contents Executive Summary... 3 Test Scenarios... 4 Benchmark Configuration and Methodology... 5 Environment Configuration...

More information

Configuring IBM WebSphere Application Server 6.1 to Support SAS 9.2 Web Applications

Configuring IBM WebSphere Application Server 6.1 to Support SAS 9.2 Web Applications Configuration Guide Configuring IBM WebSphere Application Server 6.1 to Support SAS 9.2 Web Applications This document is for SAS installers who want to configure IBM WebSphere Application Server for use

More information

WebSphere Server Administration Course

WebSphere Server Administration Course WebSphere Server Administration Course Chapter 1. Java EE and WebSphere Overview Goals of Enterprise Applications What is Java? What is Java EE? The Java EE Specifications Role of Application Server What

More information

IBM WebSphere Server Administration

IBM WebSphere Server Administration IBM WebSphere Server Administration This course teaches the administration and deployment of web applications in the IBM WebSphere Application Server. Duration 24 hours Course Objectives Upon completion

More information

Tuning Your GlassFish Performance Tips. Deep Singh Enterprise Java Performance Team Sun Microsystems, Inc.

Tuning Your GlassFish Performance Tips. Deep Singh Enterprise Java Performance Team Sun Microsystems, Inc. Tuning Your GlassFish Performance Tips Deep Singh Enterprise Java Performance Team Sun Microsystems, Inc. 1 Presentation Goal Learn tips and techniques on how to improve performance of GlassFish Application

More information

Install guide for Websphere 7.0

Install guide for Websphere 7.0 DOCUMENTATION Install guide for Websphere 7.0 Jahia EE v6.6.1.0 Jahia s next-generation, open source CMS stems from a widely acknowledged vision of enterprise application convergence web, document, search,

More information

CHAPTER 1 - JAVA EE OVERVIEW FOR ADMINISTRATORS

CHAPTER 1 - JAVA EE OVERVIEW FOR ADMINISTRATORS CHAPTER 1 - JAVA EE OVERVIEW FOR ADMINISTRATORS Java EE Components Java EE Vendor Specifications Containers Java EE Blueprint Services JDBC Data Sources Java Naming and Directory Interface Java Message

More information

Tuning WebSphere Application Server ND 7.0. Royal Cyber Inc.

Tuning WebSphere Application Server ND 7.0. Royal Cyber Inc. Tuning WebSphere Application Server ND 7.0 Royal Cyber Inc. JVM related problems Application server stops responding Server crash Hung process Out of memory condition Performance degradation Check if the

More information

This presentation covers virtual application shared services supplied with IBM Workload Deployer version 3.1.

This presentation covers virtual application shared services supplied with IBM Workload Deployer version 3.1. This presentation covers virtual application shared services supplied with IBM Workload Deployer version 3.1. WD31_VirtualApplicationSharedServices.ppt Page 1 of 29 This presentation covers the shared

More information

JBoss Data Grid Performance Study Comparing Java HotSpot to Azul Zing

JBoss Data Grid Performance Study Comparing Java HotSpot to Azul Zing JBoss Data Grid Performance Study Comparing Java HotSpot to Azul Zing January 2014 Legal Notices JBoss, Red Hat and their respective logos are trademarks or registered trademarks of Red Hat, Inc. Azul

More information

A Scalability Study for WebSphere Application Server and DB2 Universal Database

A Scalability Study for WebSphere Application Server and DB2 Universal Database A Scalability Study for WebSphere Application and DB2 Universal Database By Yongli An, Tsz Kin Tony Lau, and Peter Shum DB2 Universal Database Performance & Advanced Technology IBM Toronto Lab, IBM Canada

More information

Oracle WebLogic Server 11g Administration

Oracle WebLogic Server 11g Administration Oracle WebLogic Server 11g Administration This course is designed to provide instruction and hands-on practice in installing and configuring Oracle WebLogic Server 11g. These tasks include starting and

More information

WEBLOGIC ADMINISTRATION

WEBLOGIC ADMINISTRATION WEBLOGIC ADMINISTRATION Session 1: Introduction Oracle Weblogic Server Components Java SDK and Java Enterprise Edition Application Servers & Web Servers Documentation Session 2: Installation System Configuration

More information

A Step-By-Step Guide to Configuring a WebSphere Portal v8.0 Cluster

A Step-By-Step Guide to Configuring a WebSphere Portal v8.0 Cluster A Step-By-Step Guide to Configuring a WebSphere Portal v8.0 Cluster Hunter Tweed WebSphere Portal Level 2 support Team Lead IBM Raleigh Lab May, 2012 Copyright International Business Machines Corporation

More information

Advanced Liferay Architecture: Clustering and High Availability

Advanced Liferay Architecture: Clustering and High Availability Advanced Liferay Architecture: Clustering and High Availability Revision 1.1, Oct 2010 *Note: All of the configuration examples in 3 rd -party software (i.e. Apache, Sun Java) in this document are examples

More information

NetIQ Access Manager 4.1

NetIQ Access Manager 4.1 White Paper NetIQ Access Manager 4.1 Performance and Sizing Guidelines Performance, Reliability, and Scalability Testing Revisions This table outlines all the changes that have been made to this document

More information

Fine-Tune Performance of Enterprise Portal 6.0. Enterprise Portal 6.0 Public

Fine-Tune Performance of Enterprise Portal 6.0. Enterprise Portal 6.0 Public How to Fine-Tune Performance of Enterprise Portal 6.0 Enterprise Portal 6.0 Public Applicable Releases: EP 6.0 SP2 March 2004. Table of Contents 1 Introduction... 3 2 Tuning the Operating System... 4 2.1

More information

IBM WEBSPHERE LOAD BALANCING SUPPORT FOR EMC DOCUMENTUM WDK/WEBTOP IN A CLUSTERED ENVIRONMENT

IBM WEBSPHERE LOAD BALANCING SUPPORT FOR EMC DOCUMENTUM WDK/WEBTOP IN A CLUSTERED ENVIRONMENT White Paper IBM WEBSPHERE LOAD BALANCING SUPPORT FOR EMC DOCUMENTUM WDK/WEBTOP IN A CLUSTERED ENVIRONMENT Abstract This guide outlines the ideal way to successfully install and configure an IBM WebSphere

More information

TBSM: Performance Tuning

TBSM: Performance Tuning TBSM: Performance Tuning Versions 4.2.1-6.1 Last update, 11/14/12, DJT Contents Overview... 5 Introduction to TBSM Performance and Tuning... 5 WebSphere Application Server Heap Memory Tuning... 6 A few

More information

ITG Software Engineering

ITG Software Engineering IBM WebSphere Administration 8.5 Course ID: Page 1 Last Updated 12/15/2014 WebSphere Administration 8.5 Course Overview: This 5 Day course will cover the administration and configuration of WebSphere 8.5.

More information

Configuring Nex-Gen Web Load Balancer

Configuring Nex-Gen Web Load Balancer Configuring Nex-Gen Web Load Balancer Table of Contents Load Balancing Scenarios & Concepts Creating Load Balancer Node using Administration Service Creating Load Balancer Node using NodeCreator Connecting

More information

IBM Business Monitor Version 7.5.0. IBM Business Monitor Installation Guide

IBM Business Monitor Version 7.5.0. IBM Business Monitor Installation Guide IBM Business Monitor Version 7.5.0 IBM Business Monitor Installation Guide ii Installing Contents Chapter 1. Installing IBM Business Monitor............... 1 Chapter 2. Planning to install IBM Business

More information

Spectrum Technology Platform. Version 9.0. Spectrum Spatial Administration Guide

Spectrum Technology Platform. Version 9.0. Spectrum Spatial Administration Guide Spectrum Technology Platform Version 9.0 Spectrum Spatial Administration Guide Contents Chapter 1: Introduction...7 Welcome and Overview...8 Chapter 2: Configuring Your System...9 Changing the Default

More information

Sametime 9 Meetings deployment Open Mic July 23rd 2014

Sametime 9 Meetings deployment Open Mic July 23rd 2014 Sametime 9 Meetings deployment Open Mic July 23rd 2014 Tony Payne Senior Software Engineer - Sametime Ginni Saini Software Engineer Sametime Support Joshua Edwards Software Engineer Sametime Support IBM

More information

A Step-By-Step Guide to Configuring a WebSphere Portal v8.0.0.1 Dynamic Cluster

A Step-By-Step Guide to Configuring a WebSphere Portal v8.0.0.1 Dynamic Cluster A Step-By-Step Guide to Configuring a WebSphere Portal v8.0.0.1 Dynamic Cluster Hunter Tweed WebSphere Portal Level 2 Support Technical Lead IBM Raleigh Lab August, 2013 Copyright International Business

More information

MagDiSoft Web Solutions Office No. 102, Bramha Majestic, NIBM Road Kondhwa, Pune -411048 Tel: 808-769-4605 / 814-921-0979 www.magdisoft.

MagDiSoft Web Solutions Office No. 102, Bramha Majestic, NIBM Road Kondhwa, Pune -411048 Tel: 808-769-4605 / 814-921-0979 www.magdisoft. WebLogic Server Course Following is the list of topics that will be covered during the course: Introduction to WebLogic What is Java? What is Java EE? The Java EE Architecture Enterprise JavaBeans Application

More information

WebSphere Training Outline

WebSphere Training Outline WEBSPHERE TRAINING WebSphere Training Outline WebSphere Platform Overview o WebSphere Product Categories o WebSphere Development, Presentation, Integration and Deployment Tools o WebSphere Application

More information

enterprise^ IBM WebSphere Application Server v7.0 Security "publishing Secure your WebSphere applications with Java EE and JAAS security standards

enterprise^ IBM WebSphere Application Server v7.0 Security publishing Secure your WebSphere applications with Java EE and JAAS security standards IBM WebSphere Application Server v7.0 Security Secure your WebSphere applications with Java EE and JAAS security standards Omar Siliceo "publishing enterprise^ birmingham - mumbai Preface 1 Chapter 1:

More information

SSL CONFIGURATION GUIDE

SSL CONFIGURATION GUIDE HYPERION RELEASE 9.3.1 SSL CONFIGURATION GUIDE CONTENTS IN BRIEF About This Document... 2 Assumptions... 2 Information Sources... 2 Identifying SSL Points for Hyperion Products... 4 Common Activities...

More information

Contents Introduction... 5 Deployment Considerations... 9 Deployment Architectures... 11

Contents Introduction... 5 Deployment Considerations... 9 Deployment Architectures... 11 Oracle Primavera Contract Management 14.1 Sizing Guide July 2014 Contents Introduction... 5 Contract Management Database Server... 5 Requirements of the Contract Management Web and Application Servers...

More information

Enhanced Connector Applications SupportPac VP01 for IBM WebSphere Business Events 3.0.0

Enhanced Connector Applications SupportPac VP01 for IBM WebSphere Business Events 3.0.0 Enhanced Connector Applications SupportPac VP01 for IBM WebSphere Business Events 3.0.0 Third edition (May 2012). Copyright International Business Machines Corporation 2012. US Government Users Restricted

More information

Server Monitoring. AppDynamics Pro Documentation. Version 4.1.7. Page 1

Server Monitoring. AppDynamics Pro Documentation. Version 4.1.7. Page 1 Server Monitoring AppDynamics Pro Documentation Version 4.1.7 Page 1 Server Monitoring......................................................... 4 Standalone Machine Agent Requirements and Supported Environments............

More information

Enterprise Manager Performance Tips

Enterprise Manager Performance Tips Enterprise Manager Performance Tips + The tips below are related to common situations customers experience when their Enterprise Manager(s) are not performing consistent with performance goals. If you

More information

Oracle WebLogic Server 11g: Monitor and Tune Performance

Oracle WebLogic Server 11g: Monitor and Tune Performance D61529GC10 Edition 1.0 March 2010 D66055 Oracle WebLogic Server 11g: Monitor and Tune Performance Student Guide Author Shankar Raman Technical Contributors and Reviewer s Werner Bauer Nicole Haba Bala

More information

An Oracle White Paper July 2011. Oracle Primavera Contract Management, Business Intelligence Publisher Edition-Sizing Guide

An Oracle White Paper July 2011. Oracle Primavera Contract Management, Business Intelligence Publisher Edition-Sizing Guide Oracle Primavera Contract Management, Business Intelligence Publisher Edition-Sizing Guide An Oracle White Paper July 2011 1 Disclaimer The following is intended to outline our general product direction.

More information

Cognos8 Deployment Best Practices for Performance/Scalability. Barnaby Cole Practice Lead, Technical Services

Cognos8 Deployment Best Practices for Performance/Scalability. Barnaby Cole Practice Lead, Technical Services Cognos8 Deployment Best Practices for Performance/Scalability Barnaby Cole Practice Lead, Technical Services Agenda > Cognos 8 Architecture Overview > Cognos 8 Components > Load Balancing > Deployment

More information

http://support.oracle.com/

http://support.oracle.com/ Oracle Primavera Contract Management 14.0 Sizing Guide October 2012 Legal Notices Oracle Primavera Oracle Primavera Contract Management 14.0 Sizing Guide Copyright 1997, 2012, Oracle and/or its affiliates.

More information

Automated Process Center Installation and Configuration Guide for UNIX

Automated Process Center Installation and Configuration Guide for UNIX Automated Process Center Installation and Configuration Guide for UNIX Table of Contents Introduction... 1 Lombardi product components... 1 Lombardi architecture... 1 Lombardi installation options... 4

More information

WebSphere Architect (Performance and Monitoring) 2011 IBM Corporation

WebSphere Architect (Performance and Monitoring) 2011 IBM Corporation Track Name: Application Infrastructure Topic : WebSphere Application Server Top 10 Performance Tuning Recommendations. Presenter Name : Vishal A Charegaonkar WebSphere Architect (Performance and Monitoring)

More information

Optimize GlassFish Performance in a Production Environment Performance White Paper February 2009. Abstract

Optimize GlassFish Performance in a Production Environment Performance White Paper February 2009. Abstract Optimize GlassFish Performance in a Production Environment Performance White Paper February 2009 Abstract Sun GlassFish Application Server v2 is a high performance application server. This white paper

More information

Robert Honeyman http://www.honeymanit.co.uk rob.honeyman@honeymanit.co.uk

Robert Honeyman http://www.honeymanit.co.uk rob.honeyman@honeymanit.co.uk An Introduction to WebLogic Administration Robert Honeyman http://www.honeymanit.co.uk rob.honeyman@honeymanit.co.uk WEBLOGIC 11G : WHAT IS IT? Weblogic 10.3.3-10.3.6 = 11g Java EE 5 compliant Application

More information

System Requirements Table of contents

System Requirements Table of contents Table of contents 1 Introduction... 2 2 Knoa Agent... 2 2.1 System Requirements...2 2.2 Environment Requirements...4 3 Knoa Server Architecture...4 3.1 Knoa Server Components... 4 3.2 Server Hardware Setup...5

More information

By Wick Gankanda Updated: August 8, 2012

By Wick Gankanda Updated: August 8, 2012 DATA SOURCE AND RESOURCE REFERENCE SETTINGS IN WEBSPHERE 7.0, RATIONAL APPLICATION DEVELOPER FOR WEBSPHERE VER 8 WITH JAVA 6 AND MICROSOFT SQL SERVER 2008 By Wick Gankanda Updated: August 8, 2012 Table

More information

bbc Configuring LiveCycle Application Server Clusters Using WebSphere 6.0 Adobe LiveCycle June 2007 Version 7.2

bbc Configuring LiveCycle Application Server Clusters Using WebSphere 6.0 Adobe LiveCycle June 2007 Version 7.2 bbc Configuring LiveCycle Application Server Clusters Using WebSphere 6.0 Adobe LiveCycle June 2007 Version 7.2 2007 Adobe Systems Incorporated. All rights reserved. Adobe LiveCycle 7.2 Configuring LiveCycle

More information

026-1010 Rev 7 06-OCT-2011. Site Manager Installation Guide

026-1010 Rev 7 06-OCT-2011. Site Manager Installation Guide 026-1010 Rev 7 06-OCT-2011 Site Manager Installation Guide Retail Solutions 3240 Town Point Drive NW, Suite 100 Kennesaw, GA 30144, USA Phone: 770-425-2724 Fax: 770-425-9319 Table of Contents 1 SERVER

More information

MEASURING WORKLOAD PERFORMANCE IS THE INFRASTRUCTURE A PROBLEM?

MEASURING WORKLOAD PERFORMANCE IS THE INFRASTRUCTURE A PROBLEM? MEASURING WORKLOAD PERFORMANCE IS THE INFRASTRUCTURE A PROBLEM? Ashutosh Shinde Performance Architect ashutosh_shinde@hotmail.com Validating if the workload generated by the load generating tools is applied

More information

JVM Performance Study Comparing Oracle HotSpot and Azul Zing Using Apache Cassandra

JVM Performance Study Comparing Oracle HotSpot and Azul Zing Using Apache Cassandra JVM Performance Study Comparing Oracle HotSpot and Azul Zing Using Apache Cassandra January 2014 Legal Notices Apache Cassandra, Spark and Solr and their respective logos are trademarks or registered trademarks

More information

WebSphere Business Monitor V7.0: Clustering Single cluster deployment environment pattern

WebSphere Business Monitor V7.0: Clustering Single cluster deployment environment pattern Copyright IBM Corporation 2010 All rights reserved WebSphere Business Monitor V7.0: Clustering Single cluster deployment environment pattern What this exercise is about... 2 Exercise requirements... 2

More information

StreamServe Persuasion SP5 StreamStudio

StreamServe Persuasion SP5 StreamStudio StreamServe Persuasion SP5 StreamStudio Administrator s Guide Rev B StreamServe Persuasion SP5 StreamStudio Administrator s Guide Rev B OPEN TEXT CORPORATION ALL RIGHTS RESERVED United States and other

More information

ID232 IBM Connections Deployment and Performance Planning

ID232 IBM Connections Deployment and Performance Planning ID232 IBM Connections Deployment and Performance Planning Hai Jie Wu Senior Software Engineer IBM 2012 IBM Corporation IBM s statements regarding its plans, directions, and intent are subject to change

More information

Installing and Configuring DB2 10, WebSphere Application Server v8 & Maximo Asset Management

Installing and Configuring DB2 10, WebSphere Application Server v8 & Maximo Asset Management IBM Tivoli Software Maximo Asset Management Installing and Configuring DB2 10, WebSphere Application Server v8 & Maximo Asset Management Document version 1.0 Rick McGovern Staff Software Engineer IBM Maximo

More information

Qualogy 2014-08-29 M. Schildmeijer. Whitepaper Oracle Exalogic FMW Optimization

Qualogy 2014-08-29 M. Schildmeijer. Whitepaper Oracle Exalogic FMW Optimization Qualogy 2014-08-29 M. Schildmeijer Whitepaper Oracle Exalogic FMW Optimization 1 Inhoudsopgave 1. Preface... 3 2. WebLogic Domain Level... 4 2.1 Domain Enhancements... 4 2.2 JDBC SDP enhancement... 4 2.3

More information

Monitoring HP OO 10. Overview. Available Tools. HP OO Community Guides

Monitoring HP OO 10. Overview. Available Tools. HP OO Community Guides HP OO Community Guides Monitoring HP OO 10 This document describes the specifications of components we want to monitor, and the means to monitor them, in order to achieve effective monitoring of HP Operations

More information

WebSphere IBM WebSphere XML Document Management Server

WebSphere IBM WebSphere XML Document Management Server WebSphere IBM WebSphere XML Document Management Server Version 6.2 IBM WebSphere XML Document Management Server SC00-0000-00 WebSphere IBM WebSphere XML Document Management Server Version 6.2 IBM WebSphere

More information

LOAD BALANCING TECHNIQUES FOR RELEASE 11i AND RELEASE 12 E-BUSINESS ENVIRONMENTS

LOAD BALANCING TECHNIQUES FOR RELEASE 11i AND RELEASE 12 E-BUSINESS ENVIRONMENTS LOAD BALANCING TECHNIQUES FOR RELEASE 11i AND RELEASE 12 E-BUSINESS ENVIRONMENTS Venkat Perumal IT Convergence Introduction Any application server based on a certain CPU, memory and other configurations

More information

CA Identity Manager. Installation Guide (WebLogic) r12.5 SP8

CA Identity Manager. Installation Guide (WebLogic) r12.5 SP8 CA Identity Manager Installation Guide (WebLogic) r12.5 SP8 This documentation, which includes embedded help systems and electronically distributed materials, (hereinafter referred to as the Documentation

More information

Chapter 3 WebSphere Portal Server V6: Configuration Data Transfer to DB2 Introduction

Chapter 3 WebSphere Portal Server V6: Configuration Data Transfer to DB2 Introduction Chapter 3 WebSphere Portal Server V6: Configuration Data Transfer to DB2 Introduction In Chapter 2 of this series, you saw how the WebSphere Portal Server (also known as WP or just portal server) will

More information

JBoss Seam Performance and Scalability on Dell PowerEdge 1855 Blade Servers

JBoss Seam Performance and Scalability on Dell PowerEdge 1855 Blade Servers JBoss Seam Performance and Scalability on Dell PowerEdge 1855 Blade Servers Dave Jaffe, PhD, Dell Inc. Michael Yuan, PhD, JBoss / RedHat June 14th, 2006 JBoss Inc. 2006 About us Dave Jaffe Works for Dell

More information

WEBAPP PATTERN FOR APACHE TOMCAT - USER GUIDE

WEBAPP PATTERN FOR APACHE TOMCAT - USER GUIDE WEBAPP PATTERN FOR APACHE TOMCAT - USER GUIDE Contents 1. Pattern Overview... 3 Features 3 Getting started with the Web Application Pattern... 3 Accepting the Web Application Pattern license agreement...

More information

ColdFusion 8. Performance Tuning, Multi-Instance Management and Clustering. Sven Ramuschkat MAX 2008 Milan

ColdFusion 8. Performance Tuning, Multi-Instance Management and Clustering. Sven Ramuschkat MAX 2008 Milan ColdFusion 8 Performance Tuning, Multi-Instance Management and Clustering Sven Ramuschkat MAX 2008 Milan About me Sven Ramuschkat CTO of Herrlich & Ramuschkat GmbH ColdFusion since Version 3.1 Authorized

More information

DEPLOYMENT GUIDE Version 1.1. Deploying F5 with Oracle Application Server 10g

DEPLOYMENT GUIDE Version 1.1. Deploying F5 with Oracle Application Server 10g DEPLOYMENT GUIDE Version 1.1 Deploying F5 with Oracle Application Server 10g Table of Contents Table of Contents Introducing the F5 and Oracle 10g configuration Prerequisites and configuration notes...1-1

More information

Using NCache for ASP.NET Sessions in Web Farms

Using NCache for ASP.NET Sessions in Web Farms Using NCache for ASP.NET Sessions in Web Farms April 22, 2015 Contents 1 Getting Started... 1 1.1 Step 1: Install NCache... 1 1.2 Step 2: Configure for Multiple Network Cards... 1 1.3 Step 3: Configure

More information

WebSphere Application Server V7: Monitoring the Runtime

WebSphere Application Server V7: Monitoring the Runtime Chapter 11 of WebSphere Application Server V7 Administration and Configuration Guide, SG24-7615 WebSphere Application Server V7: Monitoring the Runtime Being able to measure and monitor system interactions

More information

Secure Web. Hardware Sizing Guide

Secure Web. Hardware Sizing Guide Secure Web Hardware Sizing Guide Table of Contents 1. Introduction... 1 2. Sizing Guide... 2 3. CPU... 3 3.1. Measurement... 3 4. RAM... 5 4.1. Measurement... 6 5. Harddisk... 7 5.1. Mesurement of disk

More information

User Guide for VMware Adapter for SAP LVM VERSION 1.2

User Guide for VMware Adapter for SAP LVM VERSION 1.2 User Guide for VMware Adapter for SAP LVM VERSION 1.2 Table of Contents Introduction to VMware Adapter for SAP LVM... 3 Product Description... 3 Executive Summary... 3 Target Audience... 3 Prerequisites...

More information

WebSphere Application Server V6.1 Extended Deployment: Overview and Architecture

WebSphere Application Server V6.1 Extended Deployment: Overview and Architecture Chapter 32 WebSphere Application Server V6.1 Extended Deployment: Overview and Architecture The WebSphere Application Server Extended Deployment (WAS XD) package provides many extensions to existing functionality

More information

WebSphere Portal 8 Using GPFS file sharing in a Portal Farm. Test Configuration

WebSphere Portal 8 Using GPFS file sharing in a Portal Farm. Test Configuration WebSphere Portal 8 Using GPFS file sharing in a Portal Farm Test Configuration Owner: Mark E. Blondell Configuration name: Test Infrastructure: WebSphere Portal 8 Using GPFS file sharing in a Portal Farm

More information

EVALUATION ONLY. WA2088 WebSphere Application Server 8.5 Administration on Windows. Student Labs. Web Age Solutions Inc.

EVALUATION ONLY. WA2088 WebSphere Application Server 8.5 Administration on Windows. Student Labs. Web Age Solutions Inc. WA2088 WebSphere Application Server 8.5 Administration on Windows Student Labs Web Age Solutions Inc. Copyright 2013 Web Age Solutions Inc. 1 Table of Contents Directory Paths Used in Labs...3 Lab Notes...4

More information

PATROL Console Server and RTserver Getting Started

PATROL Console Server and RTserver Getting Started PATROL Console Server and RTserver Getting Started Supporting PATROL Console Server 7.5.00 RTserver 6.6.00 February 14, 2005 Contacting BMC Software You can access the BMC Software website at http://www.bmc.com.

More information

Apache and Tomcat Clustering Configuration Table of Contents

Apache and Tomcat Clustering Configuration Table of Contents Apache and Tomcat Clustering Configuration Table of Contents INTRODUCTION REVISION HISTORY DOWNLOAD AND INSTALL JDK DOWNLOAD AND INSTALL APACHE WEB SERVER (HTTPD) DOWNLOAD AND INSTALL TOMCAT SERVER APACHE

More information

Analyzing Java Performance on iseries

Analyzing Java Performance on iseries Session #: E2122 Analyzing Java Performance on iseries Speaker: Gregory S. Hurlebaus Title: PartnerWorld for Developers, iseries Technology Consultant May 7-10, 2002 Abstract This presentation will cover

More information

Spectrum Technology Platform. Version 9.0. Administration Guide

Spectrum Technology Platform. Version 9.0. Administration Guide Spectrum Technology Platform Version 9.0 Administration Guide Contents Chapter 1: Getting Started...7 Starting and Stopping the Server...8 Installing the Client Tools...8 Starting the Client Tools...9

More information

Tivoli Endpoint Manager for Remote Control Version 8 Release 2. User s Guide

Tivoli Endpoint Manager for Remote Control Version 8 Release 2. User s Guide Tivoli Endpoint Manager for Remote Control Version 8 Release 2 User s Guide Tivoli Endpoint Manager for Remote Control Version 8 Release 2 User s Guide Note Before using this information and the product

More information

IBM License Metric Tool Version 7.2.2. Installing with embedded WebSphere Application Server

IBM License Metric Tool Version 7.2.2. Installing with embedded WebSphere Application Server IBM License Metric Tool Version 7.2.2 Installing with embedded WebSphere Application Server IBM License Metric Tool Version 7.2.2 Installing with embedded WebSphere Application Server Installation Guide

More information

Domains and Network Configuration

Domains and Network Configuration 5 Domains and Network Configuration In WebLogic Server, a domain is a group of servers, with a common set of configuration information. Every server must be in a domain, whether it is a standalone server

More information

WebSphere Business Monitor V7.0 Configuring a remote CEI server

WebSphere Business Monitor V7.0 Configuring a remote CEI server Copyright IBM Corporation 2010 All rights reserved WebSphere Business Monitor V7.0 What this exercise is about... 2 Lab requirements... 2 What you should be able to do... 2 Introduction... 3 Part 1: Install

More information

WebLogic Server Admin

WebLogic Server Admin Course Duration: 1 Month Working days excluding weekends Overview of Architectures Installation and Configuration Creation and working using Domain Weblogic Server Directory Structure Managing and Monitoring

More information

Integrating WebSphere Portal V8.0 with Business Process Manager V8.0

Integrating WebSphere Portal V8.0 with Business Process Manager V8.0 2012 Integrating WebSphere Portal V8.0 with Business Process Manager V8.0 WebSphere Portal & BPM Services [Page 2 of 51] CONTENTS CONTENTS... 2 1. DOCUMENT INFORMATION... 4 1.1 1.2 2. INTRODUCTION... 5

More information

FileMaker Server 11. FileMaker Server Help

FileMaker Server 11. FileMaker Server Help FileMaker Server 11 FileMaker Server Help 2010 FileMaker, Inc. All Rights Reserved. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker is a trademark of FileMaker, Inc. registered

More information

Tomcat Tuning. Mark Thomas April 2009

Tomcat Tuning. Mark Thomas April 2009 Tomcat Tuning Mark Thomas April 2009 Who am I? Apache Tomcat committer Resolved 1,500+ Tomcat bugs Apache Tomcat PMC member Member of the Apache Software Foundation Member of the ASF security committee

More information

WHITE PAPER. Domo Advanced Architecture

WHITE PAPER. Domo Advanced Architecture WHITE PAPER Domo Advanced Architecture Overview There are several questions that any architect or technology advisor may ask about a new system during the evaluation process: How will it fit into our organization

More information

HOW TO CONFIGURE PASS-THRU PROXY FOR ORACLE APPLICATIONS

HOW TO CONFIGURE PASS-THRU PROXY FOR ORACLE APPLICATIONS HOW TO CONFIGURE PASS-THRU PROXY FOR ORACLE APPLICATIONS Overview of Oracle JInitiator Oracle JInitiator enables users to run Oracle Forms applications using Netscape Navigator or Internet Explorer. It

More information

Citrix EdgeSight Administrator s Guide. Citrix EdgeSight for Endpoints 5.3 Citrix EdgeSight for XenApp 5.3

Citrix EdgeSight Administrator s Guide. Citrix EdgeSight for Endpoints 5.3 Citrix EdgeSight for XenApp 5.3 Citrix EdgeSight Administrator s Guide Citrix EdgeSight for Endpoints 5.3 Citrix EdgeSight for enapp 5.3 Copyright and Trademark Notice Use of the product documented in this guide is subject to your prior

More information

IBM Security Access Manager, Version 8.0 Distributed Session Cache Architectural Overview and Migration Guide

IBM Security Access Manager, Version 8.0 Distributed Session Cache Architectural Overview and Migration Guide IBM Security Systems Access Management June, 2014 IBM Security Access Manager, Version 8.0 Distributed Session Cache Architectural Overview and Migration Guide Authors Jenny Wong (jenwong@au1.ibm.com)

More information

Oracle EXAM - 1Z0-102. Oracle Weblogic Server 11g: System Administration I. Buy Full Product. http://www.examskey.com/1z0-102.html

Oracle EXAM - 1Z0-102. Oracle Weblogic Server 11g: System Administration I. Buy Full Product. http://www.examskey.com/1z0-102.html Oracle EXAM - 1Z0-102 Oracle Weblogic Server 11g: System Administration I Buy Full Product http://www.examskey.com/1z0-102.html Examskey Oracle 1Z0-102 exam demo product is here for you to test the quality

More information

24x7 Scheduler Multi-platform Edition 5.2

24x7 Scheduler Multi-platform Edition 5.2 24x7 Scheduler Multi-platform Edition 5.2 Installing and Using 24x7 Web-Based Management Console with Apache Tomcat web server Copyright SoftTree Technologies, Inc. 2004-2014 All rights reserved Table

More information

Step- by- Step guide to extend Credential Sync between IBM WebSphere Portal 8.5 credential vault and Active Directory 2012 using Security Directory

Step- by- Step guide to extend Credential Sync between IBM WebSphere Portal 8.5 credential vault and Active Directory 2012 using Security Directory Step- by- Step guide to extend Credential Sync between IBM WebSphere Portal 8.5 credential vault and Active Directory 2012 using Security Directory Integrator (ex TDI) on Red- Hat (part 3) Summary STEP-

More information