Skip Headers
Oracle® Fusion Middleware Performance and Tuning Guide
11g Release 1 (11.1.1)

Part Number E10108-09
Go to Documentation Home
Home
Go to Book List
Book List
Go to Table of Contents
Contents
Go to Master Index
Master Index
Go to Feedback page
Contact Us

Go to previous page
Previous
PDF · Mobi · ePub

28 Oracle WebCenter Portal Performance Tuning

This chapter outlines how to configure WebCenter Portal and Portal Framework applications to improve their performance. This includes how to tune the operating system on which applications are installed, and other back-end servers and components that are used.

28.1 About Oracle WebCenter Portal

Oracle WebCenter Portal 11g is an integrated suite of products used to create social applications, enterprise portals, communities, composite applications, and internet or intranet Web sites on a standards-based, service-oriented architecture (SOA). Oracle WebCenter Portal combines the development of rich internet applications, a multi-channel portal framework, and a suite of horizontal Enterprise 2.0 applications, which provide content, presence, and social networking capabilities to create a highly interactive user experience. Interacting with services such as instant messaging, blogs, wikis, RSS, tags, discussion forums, activities and social networks directly within the context of a portal or an application improves user and group productivity and enhances the return on IT investments.

WebCenter Portal is an out-of-the-box application that brings you the latest technology in terms of social networking, communication, collaboration, and personal productivity with no development effort. With WebCenter Portal, you can deploy instant community portals, team sites, and other collaborative applications.

For more information about Oracle WebCenter Portal, see Oracle Fusion Middleware Administering Oracle WebCenter Portal and Oracle Fusion Middleware Developing Portals with Oracle WebCenter Portal and Oracle JDeveloper.

28.2 Basic Tuning Considerations

The tuning considerations in this section apply to most WebCenter Portal and Portal Framework application deployment scenarios. It is highly recommended that you review these configurations and implement those that meet your particular usage requirements.

28.2.1 Setting System Limit

To run WebCenter Portal or a Portal Framework application at moderate load, set the open-files-limit to 4096. If you encounter errors, such as running out of file descriptors, then increase the system limit.

For example, on Linux, you can use this command:

ulimit -n 8192

Refer to your operating system documentation to find out how to change this system limit.

28.2.2 Setting JDBC Data Source

To determine the correct setting for the JDBC data source, use the Oracle WebLogic Server Administration Console to monitor the running system database connection usage as described "Configuring JDBC Data Sources". If the "Waiting for Connection Failure" rate is noticably higher, and the "Active Connections Current Count" is close to reaching the maximum capacity, then consider increasing capacity to avoid potential database connection contention.

However, if the "Active Connections Current Count" is routinely lower than the maximum capacity, consider reducing the capacity to save memory.

For more information, see "Configuring Connection Pool Features" in Oracle Fusion Middleware Configuring and Managing JDBC Data Sources for Oracle WebLogic Server.

The following data source settings are WebCenter Portal defaults for data sources mds-SpacesDS and WebCenterDS. These settings can be adjusted depending on the application's usage pattern and load.

<jdbc-connection-pool-params>
        <initial-capacity>10</initial-capacity> 
        <max-capacity>50</max-capacity> 
        <capacity-increment>1</capacity-increment> 
        <shrink-frequency-seconds>0</shrink-frequency-seconds> 
        <highest-num-waiters>2147483647</highest-num-waiters> 
        <connection-creation-retry-frequency-seconds>0</connection-creation-retry-frequency-seconds> 
        <connection-reserve-timeout-seconds>60</connection-reserve-timeout-seconds>
        <test-frequency-seconds>0</test-frequency-seconds> 
        <test-connections-on-reserve>true</test-connections-on-reserve> 
        <ignore-in-use-connections-enabled>true</ignore-in-use-connections-enabled>
       <inactive-connection-timeout-seconds>0</inactive-connection-timeout-seconds>
        <test-table-name>SQL SELECT 1 FROM DUAL</test-table-name> 
        <login-delay-seconds>0</login-delay-seconds>
        <statement-cache-size>5</statement-cache-size> 
        <statement-cache-type>LRU</statement-cache-type> 
        <remove-infected-connections>true</remove-infected-connections> 
        <seconds-to-trust-an-idle-pool-connection>60</seconds-to-trust-an-idle-pool-connection> 
        <statement-timeout>-1</statement-timeout> 
        <pinned-to-thread>false</pinned-to-thread> 
    </jdbc-connection-pool-params>

For information on how to edit MDS data source settings, see "Tuning Data Source Connection Pools" in Oracle Fusion Middleware Configuring and Managing JDBC Data Sources for Oracle WebLogic Server.

28.2.3 Setting JRockit Virtual Machine (JVM) Arguments

JVM arguments are set in the setDomainEnv.sh file on Unix operating systems and setDomainEnv.cmd on Windows operating systems. The setDomainEnv file is located in the <domain_dir>/bin directory.

  • WebLogic Server production mode: When WebCenter Portal (or your own Portal Framework application) is installed for production deployment, the WebLogic Server is set to production mode. However, if it is installed for development and then switched to production mode for better performance, you need to include the following parameter in the startup command:

    -Dweblogic.ProductionModeEnabled=true
    

    For information on setting your domain to production mode using the Administration Console, see "Change to production mode" in the Oracle Fusion Middleware Oracle WebLogic Server Administration Console Online Help.

  • Heap size: If the server is overloaded, that is, garbage is collected or out of memory error occurs frequently, then increase the heap size as appropriate to your server's available physical memory.

    For more information, see Section 2.4, "Tuning Java Virtual Machines (JVMs)" and "Set Java options for servers started by Node Manager" in the Oracle Fusion Middleware Oracle WebLogic Server Administration Console Online Help.

    The following parameters can be modified in the server's startup command or through the Administration Console to increase heap size:

    jrockit vm: -Xms2048M -Xmx2048M -Xns512M
    
    hotspot vm: -Xms2048M -Xmx2048M -XX:MaxPermSize512M
    

28.2.4 Using Content Compression to Reduce Downloads

If clients connect to your server using relatively slow connections, that is, using modems or VPN from remote locations, consider compressing content before it downloads to the client. While content compression increases the load on the server, the client's download experience is much improved.

Note:

Starting from release 11.1.1.8.0, WebCenter Portal is pre-configured with adf caching filter which will automatically setup caching for static resources and do compression. This pre-configured adf caching filter is available only for use with WebLogic Server.

Several content compression methods are available. The following steps describe how to use the mod_deflate module from Apache.

  1. Enable mod_deflate module on Apache.

    To do this, add the following to httpd.conf ($OH/instances/$INSTANCE_NAME/config/OHS/$OHS_NAME)

    LoadModule deflate_module "${ORACLE_HOME}/ohs/modules/mod_deflate.so"

  2. Setup the Output Filter and specify the rules for compression.

    Here is a sample snippet that you can add to the httpd.conf (same location mentioned above). Modify the content based on your content and the compression requirements.

    <IfModule mod_deflate.c>
    SetOutputFilter DEFLATE
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE image/svg+xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/atom+xml
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE text/html
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.(?:pdf|doc?x|ppt?x|xls?x)$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.avi$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.mov$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.mp3$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.mp4$ no-gzip dont-vary
    </IfModule>
    
    

For more information about mod_deflate, refer to: http://httpd.apache.org/docs/2.0/mod/mod_deflate.html

28.3 Tuning Configuration for WebCenter Portal and Portal Framework Applications

This section describes configuration parameters that you can tune to improve the performance of WebCenter Portal or Portal Framework applications.

This section includes the following:

28.3.1 Setting a Session Timeout for WebCenter Portal

The default session timeout for the WebCenter Portal application is 45 minutes. Administrators can customize the session time to suit their installation, for details see "Specifying Session Timeout Settings" in Oracle Fusion Middleware Using Oracle WebCenter Portal.

28.3.2 Setting HTTP Session Timeout for a Portal Framework Application

To manage overall resource usage for a Portal Framework application, adjust the application's HTTP session timeout value, in minutes, in the web.xml file. In general, shorter session timeout values correspond to less memory and CPU usage on the server.

The following is a sample snippet of web.xml:

<session-config>
   <session-timeout>
       45
    </session-timeout>
</session-config>

Note:

This timeout setting does not apply to Oracle's out-of-the-box portal application WebCenter Portal. See also, "Editing web.xml Properties" in Oracle Fusion Middleware Administering Oracle WebCenter Portal.

28.3.3 Setting JSP Page Timeout

In a Portal Framework application, you can specify an integer value, in seconds, after which any JSP page will be removed from memory if it has not been requested in the web.xml file. This frees up resources in situations where some pages are called infrequently.

Increasing the value reduces user response time, and decreasing it reduces application memory foot print. The default value for is 600 seconds or 10 minutes. If jsp_timeout is not specified, it means there is no timeout. Consider using a longer JSP timeout to avoid frequent recompiling while efficiently using memory

The following is a sample snippet of web.xml:

<servlet>
         <servlet-name>
            oraclejsp
  <init-param>
            <param-name>
                  jsp_timeout
            </param-name>
            <param-value>
                  3600
            </param-value>
      </init-param>
      <init-param>
            <param-name>
                  jsp_idle_entry_count
            </param-name>
            <param-value>
                  2000
            </param-value>
      </init-param>
      <init-param>
            <param-name>
                  jsp_max_entry_count
            </param-name>
            <param-value>
                  4000
            </param-value>
      </init-param>

28.3.4 Setting ADF Client State Token

In a Portal Framework application, you can use this setting to control the number of pages users can navigate using the browser Back button without losing page state. To reduce CPU and memory usage, you can decrease the value in the web.xml file.

The following is a sample code snippet of web.xml:

<context-param>
       <param-name>
          org.apache.myfaces.trinidad.CLIENT_STATE_MAX_TOKENS
       </param-name>
       <param-value>
          3
       </param-value>
</context-param>

28.3.5 Setting ADF View State Compression

for some Portal Framework applications enabling ADF View State Compression can improve performance for some, but consider the following:

  • Enabling COMPRESS_VIEW_STATE saves heap usage, but compressing and decompressing can impact CPU resources.

  • Enabling COMPRESS_VIEW_STATE in a clustered environment can improve performance during session replication as less data has to be sent.

  • Enabling COMPRESS_VIEW_STATE in a single node environment should only be considered when the CPU/memory usage trade-off is acceptable.

The following is a sample code snippet of enabling the parameter in web.xml:

<context-param>
       <param-name> org.apache.myfaces.trinidad.COMPRESS_VIEW_STATE
      </param-name>
       <param-value> true </param-value>
</context-param>

28.3.6 Setting MDS Cache Size and Purge Rate

If you encounter the any of the following conditions, then you can increase the MDS cache size in the adf-config.xml file. The default MDS cache size is 100MB.

  • Error message JOC region full

  • Frequent MDS database access after the page is warmed up

  • Retained memory by ADF application is close to the max-size-kb

Post deployment, modify these properties through the System MBeans Browser. For more information, see the section "Changing MDS Configuration Attributes for Deployed Applications" in Oracle Fusion Middleware Administrator's Guide.

The following is a sample snippet of adf-config.xml:

<cache-config> 
<max-size-kb>150000</max-size-kb> 
</cache-config>

Purging MDS data improves MDS queries. If your portal site changes frequently, you may want to purge old MDS data more often, by reducing the time between purges.

Consider setting the MDS auto-purge seconds-to-live parameter (as shown in the example below) to remove older versions of metadata automatically every hour. By default, old versions of metadata are automatically purged every hour, that is, the auto-purge seconds-to-live parameter is set to 3600 seconds (as shown in the example below).

Note:

Each purge incurs CPU usage in the database. Do not purge too often (for example, every 5 or 10 minutes) because the database CPU impact might outweigh the performance gains from the purge.

If excessive metadata is accumulated and each purge is very expensive, reduce this interval in the adf-config.xml file.

By default there is no auto-purge entry in adf-config.xml Use the following sample snippet of adf-config.xml to modify auto-purge:

<mdsC:adf-mds-config version="11.1.1.000">
    <mds-config xmlns="http://xmlns.oracle.com/mds/config">
      <persistence-config>
        <metadata-namePortal>
           ...
        </metadata-namespace>
        <auto-purge seconds-to-live="3600"/>
      </persistence-config>

To ensure the initial purge does not impact ongoing user activities, consider using the following WLST command to induce an MDS purge immediately before the bulk of the user load hits the system:

The following example shows how to purge all documents in the application repository whose versions are older than 10 seconds:

wls:/weblogic/serverConfig>purgeMetadata(application='[AppName]',server='[ServerName]',olderThan=10)

28.3.7 Configuring Concurrency Management

Concurrency management includes global settings that impact the entire WebCenter Portal and service- and resource-specific settings that only impact a particular service.

You can define deployment-specific overrides or additional configuration in the adf-config.xml file. For example, you can specify resource-specific (producers) values that are appropriate for a particular deployment.

The following describes the format of the global, service, and resource entries in adf-config.xml:

<concurrent:adf-service-config 
  xmlns="http://xmlns.oracle.com/webcenterportal/concurrent/config"> 
  <global         
      queueSize="SIZE" 
      poolCoreSize="SIZE" 
      poolMaxSize="SIZE" 
      poolKeepAlivePeriod="TIMEPERIOD" 
      timeoutMinPeriod="TIMEPERIOD" 
      timeoutMaxPeriod="TIMEPERIOD" 
      timeoutDefaultPeriod="TIMEPERIOD" 
      timeoutMonitorFrequency="TIMEPERIOD" 
      hangMonitorFrequeny="TIMEPERIOD" 
      hangAcceptableStopPeriod="TIMEPERIOD" /> 
  <service 
      service="SERVICENAME" 
      timeoutMinPeriod="TIMEPERIOD" 
      timeoutMaxPeriod="TIMEPERIOD" 
      timeoutDefaultPeriod="TIMEPERIOD" /> 
  <resource 
      service="SERVICENAME" 
      resource="RESOURCENAME" 
      timeoutMinPeriod="TIMEPERIOD" 
      timeoutMaxPeriod="TIMEPERIOD" 
      timeoutDefaultPeriod="TIMEPERIOD" /> 
</concurrent:adf-service-config> 

Where:

SIZE: A positive integer. For example: 20.

TIMEPERIOD: Any positive integer followed by a suffix indicating the time unit, which must be one of: ms for milliseconds, s for seconds, m for minutes, or h for hours. For example: 50ms, 10s, 3m, or 1h. The following are examples of default settings for different services. These settings are overwritten with any service-specific configurations in connections.xml or adf-config.xml files:

<concurrent:adf-service-config 
  xmlns="http://xmlns.oracle.com/webcenter/concurrent/config"> 
  <service service="oracle.webcenter.community" timeoutMinPeriod="2s" timeoutMaxPeriod="50s" timeoutDefaultPeriod="30s"/>
  <resource service="oracle.webcenter.community" 
      resource="oracle.webcenter.doclib" 
      timeoutMinPeriod="2s" timeoutMaxPeriod="10s" timeoutDefaultPeriod="5s"/> 
  <resource service="oracle.webcenter.community" 
      resource="oracle.webcenter.collab.calendar.community" 
      timeoutMinPeriod="2s" timeoutMaxPeriod="10s" timeoutDefaultPeriod="5s"/> 
  <resource service="oracle.webcenter.community" 
      resource="oracle.webcenter.collab.rtc" 
      timeoutMinPeriod="2s" timeoutMaxPeriod="10s" timeoutDefaultPeriod="5s"/> 
  <resource service="oracle.webcenter.community" 
      resource="oracle.webcenter.list" 
      timeoutMinPeriod="2s" timeoutMaxPeriod="10s" timeoutDefaultPeriod="5s"/> 
  <resource service="oracle.webcenter.community" 
      resource="oracle.webcenter.collab.tasks" 
      timeoutMinPeriod="2s" timeoutMaxPeriod="10s" timeoutDefaultPeriod="5s"/> 
</concurrent:adf-service-config>

Note:

All of the attributes except service and resource are optional, and therefore, for example, the following tags are valid:

<global queueSize="20"/>
    <resource service="foo" resource="bar" timeoutMaxPeriod="5s"/>

You can use the Enterprise Manager System MBean Browser to view, add, modify, and delete the concurrency configuration based on your usage pattern. To access the MBean Browser for your WebCenter Portal or your Portal Framework application, see "Accessing the System MBean Browser" in Oracle Fusion Middleware Administering Oracle WebCenter Portal.

  1. In System MBean Browser, navigate to:

    Application Defined MBeans -> oracle.adf.share.config -> Server: (your server name) -> Application: (your application name) ->ADFConfig -> ADFConfig (bean) -> ADFConfig -> WebCenterConcurrentConfiguration -> Operations -> listResource

    Figure 28-1 System MBean Browser - WebCenterConcurrentConfiguration

    System MBean Browser window
    Description of "Figure 28-1 System MBean Browser - WebCenterConcurrentConfiguration"

  2. To view the current concurrency settings, select listResource, and then click Invoke (Figure 28-2).

    Figure 28-2 System MBean Browser - listResource

    System MBean Browser - listResource
    Description of "Figure 28-2 System MBean Browser - listResource"

  3. To change a setting, select setResource, enter the resource details, and then click Invoke (Figure 28-3).

    Figure 28-3 System MBean Browser - setResource

    SetResources MBean Browser
    Description of "Figure 28-3 System MBean Browser - setResource"

    Take care to enter the correct values for service, resource, name and value.

    NOTE: If the resource parameter you are attempting to modify already has a [value] setting, you must remove the setting first by invoking the [removeResource] operation (Figure 28-4).

    Figure 28-4 System MBean Browser - removeResource

    System MBean Browser
    Description of "Figure 28-4 System MBean Browser - removeResource"

  4. To save changes, navigate to Application Defined MBeans: ADFConfig:ADFConfig -> save, and click Invoke.

28.4 Tuning Tools and Services Configuration

This section describes configuration to improve the performance of tools and services used by WebCenter Portal and Portal Framework applications. For information about how to tune and improve the performance of back-end servers, for example, mail servers, BPEL servers, content servers, and so on, refer to the appropriate product documentation for each server.

This section includes the following sub sections:

28.4.1 Tuning Performance of Announcements

To manage overall resource usage for the announcements, you can tune the Connection Timeout property:

  • Default: 10 seconds

  • Minimum: 0 seconds

  • Maximum: 45 seconds

Post deployment, modify the Connection Timeout property through Fusion Middleware Control or using WLST. For details, see:

The following is a sample code snippet of the connections.xml to change the default timeout to 5 seconds:

<Reference name="Jive-7777" className="oracle.adf.mbean.share.connection.webcenter.Announcement. AnnouncementConnection">
<Factory className="oracle.adf.mbean.share.connection.webcenter.forum.ForumConnectionFactory"/>
          <StringRefAddr addrType="connection.time.out">
             <Contents>5</Contents>
          </StringRefAddr>
       </RefAddresses>
</Reference>

28.4.2 Tuning Performance of Discussions

To manage overall resource usage for the discussions, you can tune the Connection Timeout property:

  • Default: 10 seconds

  • Minimum: 0 seconds

  • Maximum: 45 seconds

Post deployment, modify the Connection Timeout property through Fusion Middleware Control or using WLST. For details, see:

The following is a sample snippet of connections.xml:

<Reference name="Jive-7777" className="oracle.adf.mbean.share.connection.webcenter.forum.ForumConnection">
         <Factory className="oracle.adf.mbean.share.connection.webcenter.forum.ForumConnectionFactory"/>
         <RefAddresses>
            <StringRefAddr addrType="forum.url">
               <Contents>http://[machine]:[port]/owc_discussions_5520</Contents>
               <StringRefAddr addrType="connection.time.out">
               <Contents>5</Contents>
            </StringRefAddr>
         </RefAddresses>
</Reference>

28.4.3 Tuning Performance Instant Messaging and Presence

To manage overall resource usage for instant messaging and presence, you can tune the Connection Timeout property:

  • Default: 10 seconds

  • Minimum: 0 seconds

  • Maximum: 45 seconds

Post deployment, modify the Connection Timeout property through Fusion Middleware Control or using WLST. For details, see:

The following is a sample code snippet of the connections.xml to change the default timeout to 5 seconds:

<Reference name="IMPService-LCS"
   className="oracle.adf.mbean.share.connection.webcenter.rtc.RtcConnection">
  <Factory className="oracle.adf.mbean.share.connection.webcenter.rtc.RtcConnectionFactory"/>
   <RefAddresses>
    <StringRefAddr addrType="connection.time.out">
     <Contents>5</Contents>
    </StringRefAddr>
   </RefAddresses>
</Reference>

28.4.4 Tuning Performance of Mail

To manage overall resource usage for mail, you can tune the Connection Timeout property:

  • Default: 10 seconds

  • Minimum: 0 seconds

  • Maximum: 45 seconds

Post deployment, modify the Connection Timeout property through Fusion Middleware Control or using WLST. For details, see:

The following is a sample code snippet of the connections.xml to change the default timeout to 5 seconds:

<Reference name="MailConnection"
className="oracle.adf.mbean.share.connection.webcenter.mail.MailConnection">
  <StringRefAddr addrType="connection.time.out">
      <Contents>5</Contents>
  </StringRefAddr>
</Reference>

28.4.5 Tuning Performance of Personal Events

To manage overall resource usage for personal events, you can tune the Connection Timeout property:

  • Default: 10 seconds

  • Minimum: 0 seconds

  • Maximum: 45 seconds

You can also set a cache expiration period:

  • Default: 10 seconds

  • Minimum: 0 seconds

  • Maximum: 45 seconds

Post deployment, modify the Connection Timeout and Cache Expiration properties through Fusion Middleware Control or using WLST. For details, see:

The following is a sample code snippet of the connections.xml to change the default timeout to 5 seconds:

<Reference name="MSExchange-my-pc"className="oracle.adf.mbean.share.connection.webcenter.calendar.PersonalEventConnection">
  <Factory className="oracle.adf.mbean.share.connection.webcenter.calendar.PersonalEventConnectionFactory"/>
  <StringRefAddr addrType="eventservice.connection.timeout">
    <Contents>5</Contents>
  </StringRefAddr>
  <StringRefAddr addrType="eventservice.cache.expiration.time">
    <Contents>5</Contents>
  </StringRefAddr>
 </RefAddresses>
</Reference>

28.4.6 Tuning Performance of RSS News Feeds

To manage overall resource usage for RSS news feeds, you can adjust the refresh interval and timeout in the adf-config.xml file.

If you must modify these properties, post deployment, use the System MBeans Browser.

The following is a sample snippet of adf-config.xml:

<rssC:adf-rss-config>
       <rssC:RefreshSecs>3600</rssC:RefreshSecs>
       <rssC:TimeoutSecs>3</rssC:TimeoutSecs>
       <rssC:Configured>true</rssC:Configured>
</rssC:adf-rss-config>

28.4.7 Tuning Performance of Searches

To manage overall resource usage and user response time for searching, you can adjust the number of saved searches displayed, the number of results displayed, and these timeout values:

  • prepareTimeoutMs - Maximum time that a service is allowed to initialize a search (in ms).

  • timeoutMs - Maximum time that a service is allowed to execute a search (in ms).

  • showAllTimeoutMs - Maximum time that a service is allowed to display search all results (in ms).

Post deployment, modify timeout properties through Fusion Middleware Control or using WLST. For details, see:

The following is a sample snippet of adf-config.xml:

<searchC:adf-search-config xmlns="http://xmlns.oracle.com/webcenter/search/config">
         <display-properties>
            <common numSavedSearches="25"/>
            <region-specific>
               <usage id="simpleSearchResultUIMetadata" numServiceRows="5"/>
               <usage id="searchResultUIMetadata" numServiceRows="5"/>
               <usage id="localToolbarRegion" numServiceRows="5"/>
            </region-specific>
         </display-properties>
        <execution-properties prepareTimeoutMs="1000" timeoutMs="3000" showAllTimeoutMs="20000" />
         </execution-properties>
</searchC:adf-search-config>

28.4.8 Tuning Policy Store Parameters

If you are experiencing performance issues post login, especially in the area of permission checks, you may need to tune the policy store parameters as described in Section 27.3.6, "OPSS PDP Service Tuning Parameters". Depending on your use case scenarios, performance of WebCenter Portal and Portal Framework applications can be improved by modifying the following parameters:

  • Set oracle.security.jps.policystore.rolemember.cache.warmup.enable to True

  • Modify oracle.security.jps.policystore.rolemember.cache.size based on the number of active portals in your WebCenter Portal deployment.

    NOTE: Only modify this parameter if your WebCenter Portal deployment expectes to have more than 3000 active portals.

  • Set oracle.security.jps.policystore.policy.cache.size to 5 times the expected number of portals.

Note:

Always refer to your own use case scenarios before modifying the policy store parameters. For more information, see the Oracle Fusion Middleware Security and Administrator's Guide for Web Services before tuning any security parameters.

28.5 Tuning Identity Store Configuration

The following sections describe performance-related configurations that may be required for specific environments.

This section includes the following subsections:

28.5.1 Tuning the Identity Store when Using SSL

When you configure an identity store for WebCenter Portal or your Portal Framework application, you can choose to configure either an SSL port or a non-SSL port. If you choose an SSL port, by default, the JNDI connections are not pooled causing increased response time and decreased performance when looking up users, groups, or other identity store entities. To address this, do the following:

  1. Open the jps-config.xml file under domain_home/config/fmwconfig/jps-config.xml, locate the idstore.ldap service instance and add the line highlighted below:

    <!-- JPS WLS LDAP Identity Store Service Instance -->
        <serviceInstance name="idstore.ldap" provider="idstore.ldap.provider">
           <property name="idstore.config.provider"   value="oracle.security.jps.wls.internal.idstore.WlsLdapIdStoreConfigProvider"/>
           <property name="CONNECTION_POOL_CLASS"    value="oracle.security.idm.providers.stdldap.JNDIPool"/>
           <property name="java.naming.ldap.factory.socket"
    value="javax.net.ssl.SSLSocketFactory"/> 
         </serviceInstance> 
    
  2. Restart all the servers within the domain that are connected to the identity store on an SSL port with the following JVM parameter:

    -Dcom.sun.jndi.ldap.connect.pool.protocol=ssl
    

    You can specify this by modifying setDomainEnv.sh or directly from the console.

28.5.2 Tuning Performance when Using OVD

For Oracle Virtual Directory (OVD), the only object class against which attributes are looked up is inetOrgPerson (and it's parent object classes). Since the Profile Gallery can display attributes not defined in inetOrgPerson, all the additional attributes not covered in inetOrgPerson would require an additional round trip to the identity store.For best performance when using OVD in a production environment, Oracle recommends that you add the following configuration entry (in bold) to the domain-level jps-config.xml file:

<!-- JPS WLS LDAP Identity Store Service Instance -->
        <serviceInstance name="idstore.ldap"
         provider="idstore.ldap.provider">
            <property name="idstore.config.provider"
value="oracle.security.jps.wls.internal.idstore.WlsLdapIdStoreConfigProvider"/>
            <property name="CONNECTION_POOL_CLASS"
value="oracle.security.idm.providers.stdldap.JNDIPool"/>
 
          <extendedProperty>
            <name>user.object.classes</name>
            <values>
               <value>top</value>
               <value>person</value>
               <value>inetorgperson</value>
               <value>organizationalperson</value>
               <value>orcluser</value>
               <value>orcluserv2</value>
               <value>ctCalUser</value>
            </values>
          </extendedProperty>
        </serviceInstance>

28.5.3 Tuning Performance when Using Active Directory

For best performance when using Active Directory in a production environment, Oracle recommends that you add the following configuration entries (in bold) to the domain-level jps-config.xml file:

<serviceInstance provider="idstore.ldap.provider"

         name="idstore.ldap">
           <property value="oracle.security.jps.wls.internal.idstore.WlsLdapIdStoreConfigProvider"

           name="idstore.config.provider"/>
          <property value="oracle.security.idm.providers.stdldap.JNDIPool"

           name="CONNECTION_POOL_CLASS"/>
          <property name="PROPERTY_ATTRIBUTE_MAPPING" value="WIRELESS_ACCT_NUMBER=mobile:MIDDLE_NAME=middlename:MAIDEN_NAME=sn:DATE_OF_HIRE=pwdLastSet:NAME_SUFFIX=generationqualifier:DATE_OF_BIRTH=pwdLastSet:DEFAULT_GROUP=primaryGroupID" />
          <property value="sAMAccountName" name="username.attr"/>
          <property value="sAMAccountName" name="user.login.attr"/>
        </serviceInstance> 

Profiles query for all these attributes and there is no default mapping for these attributes in the Active Directory provider. An out-of-the-box Active Directory installation doesn't have any mapping corresponding to DATE_OF_HIRE, DATE_OF_BIRTH.

Note that these two attributes are simply a mapping to some attribute of the correct data type to reduce unnecessary LDAP server calls as Active Directory really doesn't have corresponding attributes with the same semantic meaning.

28.6 Tuning Portlet Configuration

This section describes portlet performance-related configuration. This section includes the following sub sections:

28.6.1 Tuning Performance of the Portlet Client

The following sections provide tuning consideration for Portlet Client:

28.6.1.1 Configuring Supported Locales

To manage overall resource usage and user response time, you can remove unnecessary locale support, modify portlet timeout and cache size in the adf-config.xml file.

For the Portlet service, 28 supported locales are defined out-of-the-box. You can remove the locales that are unnecessary for your application.

If you must modify these properties, post deployment, you must edit adf-config.xml manually. See "Editing adf-config.xml" in the Oracle Fusion Middleware Administering Oracle WebCenter Portal.

The following is a sample snippet of adf-config.xml:

<portletC:adf-portlet-config xmlns="http://xmlns.oracle.com/adf/portlet/config">
         <supportedLocales>
           <value>es</value>
           <value>ko</value>
           <value>ru</value>
           <value>ar</value>
           <value>fi</value>
           <value>nl</value>
           <value>sk</value>
           <value>cs</value>
           <value>fr</value>
           <value>no</value>
           <value>sv</value>
           <value>da</value>
           <value>hu</value>
           <value>pl</value>
           <value>th</value>
           <value>de</value>
           <value>it</value>
           <value>pt</value>
           <value>tr</value>
           <value>el</value>
           <value>iw</value>
           <value>pt_BR</value>
           <value>zh_CN</value>
           <value>en</value>
           <value>ja</value>
           <value>ro</value>
           <value>zh_TW</value>
         </supportedLocales>
         <defaultTimeout>20</defaultTimeout>
         <minimumTimeout>1</minimumTimeout>
         <maximumTimeout>300</maximumTimeout>
         <parallelPoolSize>10</parallelPoolSize>
         <parallelQueueSize>20</parallelQueueSize>
         <cacheSettings enabled="true">
           <maxSize>10000000</maxSize>
         </cacheSettings>
</portletC:adf-portlet-config>

28.6.1.2 Configuring Portlet Cache Size

You can modify the portlet cache size in the adf-config.xml file. The default portlet cache size is set to 10 MB.

If you must modify these properties, post deployment, you must edit adf-config.xml manually.

For more information, see "How to Edit Portlet Client Configuration" in Oracle Fusion Middleware Developing Portals with Oracle WebCenter Portal and Oracle JDeveloper

28.6.1.3 Configuring Portlet Timeout

You can modify the portlet timeout value in the adf-portlet-config element of the adf-config.xml file.

  • Default: 10 seconds

  • Minimum: 0.1 seconds

  • Maximum: 60 seconds

If you must modify these properties, post deployment, you must edit adf-config.xml manually. See "Editing adf-config.xml" in the Oracle Fusion Middleware Administering Oracle WebCenter Portal.

The following is a sample snippet of adf-config.xml:

<adf-portlet-config> 
     .... 
  <defaultTimeout>5</defaultTimeout>
  <minimumTimeout>2</minimumTimeout>
  <maximumTimeout>300</maximumTimeout>
</adf-portlet-config>

28.6.2 Enabling Java Object Cache for WSRP Producers

For Portal Framework applications, Oracle recommends that you enable the Java Object Cache (JOC) for WSRP producers so that objects written to the persistent store are cached.

For more information, see "Enabling Java Object Cache for Database Persistence Store Access" in Oracle Fusion Middleware Developing Portals with Oracle WebCenter Portal and Oracle JDeveloper

28.6.3 Customizing the Container Runtime Environment Options

Customizing the following container runtime options, can improve overall performance

For more information, see "How to Customize the Runtime Environment for JSR 286 Portlets" in Oracle Fusion Middleware Developing Portals with Oracle WebCenter Portal and Oracle JDeveloper.

28.6.3.1 Suppressing Optimistic Rendering for WSRP Portlets

To suppress the optimistic render of WSRP portlets after a WSRP PerformBlockingInteraction or HandleEvents call, set the Portlet container runtime option in portlet.xml to true. For example:

com.oracle.portlet.suppressWsrpOptimisticRender=true

Normally, if a WSRP portlet receives a WSRP PerformBlockingInteraction request (processAction in JSR168/JSR286 portlets) and the portlet does not send any events as a result, the WSRP producer renders the portlet and returns the portlet's markup in the response to the PerformBlockingInteraction SOAP message. This markup may be cached by the consumer until the consumer's page renders, and if nothing else affecting the state of the portlet happens (such as the portlet receiving an event), the cached markup can be used by the consumer, eliminating the need for a second SOAP call to GetMarkup.

This assumes that the portlet's render phase is idempotent, which is always a best practice. However, if the portlet expects to receive an event, or rendering the portlet is more costly than a second SOAP message for GetMarkup, the developer may use this container option to suppress the optimistic render of the portlet after a processAction or handleEvent call. The portlet still renders normally when the producer receives the WSRP GetMarkup request.

For more information, see "How to Customize the Runtime Environment for JSR 286 Portlets" in Oracle Fusion Middleware Developing Portals with Oracle WebCenter Portal and Oracle JDeveloper.

28.6.3.2 Setting Portlet Container Runtime Options

You can use the WebCenter Portal-specific excludedActionScopeRequestAttributes container runtime option to specify how to store action-scoped request attributes so that they are available to portlets until a new action occurs.

Request attributes which match any of the regular expressions are not stored as action-scoped request attributes if the javax.portlet.actionScopedRequestAttributes container runtime option is used, in addition to any request parameters whose values match the regular expressions defined in the com.oracle.portlet.externalScopeRequestAttributes container runtime option.

If set to true, you can specify a second value of numberOfCachedScopes and a third value indicating the number of scopes to be cached by the portlet container.

For more information, see "How to Customize the Runtime Environment for JSR 286 Portlets" in Oracle Fusion Middleware Developing Portals with Oracle WebCenter Portal and Oracle JDeveloper.

28.6.3.3 Excluding Request Attributes for Portlets

The excludedActionScopeRequestAttributes is a multi-valued, Portlet container runtime property, where each value is a regular expression.

If using the javax.portlet.actionScopedRequestAttributes container runtime option with a portlet, it is possible to optimize which request attributes get stored between portlet lifecycles using the com.oracle.portlet.excludedActionScopeRequestAttributes container runtime option. Any request attributes which are unnecessary to store between lifecycles can be indicated to increase performance.

For more information, see "How to Customize the Runtime Environment for JSR 286 Portlets" in Oracle Fusion Middleware Developing Portals with Oracle WebCenter Portal and Oracle JDeveloper.

28.6.4 Tuning Performance of Oracle PDK-Java Producers

To manage overall resource usage for a Web producer, you can tune the Connection Timeout property:

  • Default: 30000 ms

  • Minimum: 5000 ms

  • Maximum: 60000 ms

Post deployment, modify the Connection Timeout property through Fusion Middleware Control or using WLST. For details, see:

The following is a sample snippet of connections.xml:

<webproducerconnection producerName="wc-WebClipping" urlConnection="wc-WebClipping-urlconn" timeout="10000" establishSession="true" mapUser="false"/>

28.6.5 Setting WSRP Attribute for Portlet-served Resources

To specify the default WSRP requiresRewrite flag to use when generating Resource URLs for portlet-served resources, set the Portlet container runtime option (specified in portlet.xml) as follows: com.oracle.portlet.defaultServedResourceRequiresWsrpRewrite.

This setting is used for all ResourceURLs created by the portlet, unless overridden by the presence of the oracle.portlet.server.resourceRequiresRewriting request attribute when the ResourceURL methods write() or toString() are called. This setting is also used to specify the WSRP requiresRewriting flag on the served resource response, but can be overridden by the presence of the oracle.portlet.server.resourceRequiresRewriting request attribute when the portlet's serveResource() method returns.

Valid values:

  • unspecified - (Default) The requiresRewrite URL flag is not given a value, and the requiresRewriting response flag for a serveResource operation is based on the MIME type of the response.

  • true - The requiresRewrite URL flag and requiresRewriting response flag is set to true, indicating that the resource should be rewritten by the consumer.

  • false - The requiresRewrite URL flag and requiresRewriting response flag is set to false, indicating that the resource does not necessarily need to be rewritten by the consumer, though the consumer may choose to rewrite the resource.

28.6.6 Setting WSRP Attribute for Resources Not Served by the Portlet

To specify the default WSRP requiresRewrite flag to use when encoding URLs for resources not served by the portlet, set the Portlet container runtime option (specified in portlet.xml) as follows: com.oracle.portlet.defaultProxiedResourceRequiresWsrpRewrite.

This setting is used for all URLs returned by the PortletResponse.encodeURL() method, unless overridden by the presence of the oracle.portlet.server.resourceRequiresRewriting request attribute when the PortletResponse.encodeURL() method is called.

Valid values:

  • true - (Default) The requiresRewrite URL flag is set to true, indicating that the resource should be rewritten by the consumer.

  • false - The requiresRewrite URL flag is set to false, indicating that the resource does not necessarily need to be rewritten by the consumer.

28.6.7 Tuning Performance of OmniPortlet

To manage overall resource usage for OmniPortlets, you can tune the Connection Timeout property:

  • Default: 30000 ms

  • Minimum: 5000 ms

  • Maximum: 60000 ms

Post deployment, modify the Connection Timeout property through Fusion Middleware Control or using WLST. For details, see:

The following is a sample snippet of connections.xml:

<webproducerconnection producerName="wc-OmniPortlet" urlConnection="wc-OmniPortlet-urlconn" timeout="10000" establishSession="false" mapUser="false"/>