guidelines for designing and configuring an xCP 2.0 application to get better performance. Intended audiences include xCP 2.0 designers and administrators.
January 2013
xCP 2.0 PERFORMANCE BEST PRACTICES AND GUIDELINES
2 xCP 2.0 Performance Best Practices and Guidelines
Copyright 2013 EMC Corporation. All Rights Reserved.
EMC believes the information in this publication is accurate as of its publication date. The information is subject to change without notice.
The information in this publication is provided as is. EMC Corporation makes no representations or warranties of any kind with respect to the information in this publication, and specifically disclaims implied warranties of merchantability or fitness for a particular purpose.
Use, copying, and distribution of any EMC software described in this publication requires an applicable software license.
For the most up-to-date listing of EMC product names, see EMC Corporation Trademarks on EMC.com.
3 xCP 2.0 Performance Best Practices and Guidelines Table of Contents Executive Summary ............................................................................................. 5 Audience .............................................................................................................. 5 Abbreviation ........................................................................................................ 5 Background.......................................................................................................... 5 Architecture and Scalability ............................................................................... 6 Design Time .......................................................................................................... 6 General Recommendations ......................................................................................... 7 Limit Business Object Hierarchy Depth .................................................................... 7 Limit Number of Items in a Folder ............................................................................. 7 Limit Number of Grids on a Page ............................................................................. 7 Minimize Nesting of Column Boxes .......................................................................... 7 Minimize Use of Expression on Tab Group ............................................................... 8 Set Height to Tree or Tab Group ............................................................................... 8 Data Services .................................................................................................................. 8 Avoid triggering multiple queries ............................................................................. 8 Avoid Operators Contains, "Ends with" or "Does not contain" .......................... 8 Limit Number of Sortable Output Columns Full-Text ........................................... 9 Avoid Operators "Does not contain", "!=" and "Ends with" Full-Text .................. 9 Use Selective Criterion Full-Text ............................................................................ 10 Avoid Fuzzy Search Full-Text ................................................................................. 10 Discovered Metadata ................................................................................................. 10 Limit Discovered Metadata Usage ........................................................................ 11 Avoid Adding Discovered Metadata of Type Entity Detection ........................ 11 Case and Process (BPM) ............................................................................................. 11 Use package instead of relationship to access BO in task-list query ................ 11 Use business object package to encapsulate many process variables .......... 12 Viewer ............................................................................................................................ 12 Turn Off Thumbnails .................................................................................................. 12 Designer ......................................................................................................................... 12 Limit Number of Open Pages ................................................................................. 12 Deployment Time............................................................................................... 13 Use tomcat.util.scan.DefaultJarScanner.jarsToSkip to exclude jars from annotation scanning ............................................................................................... 13 xPlore .............................................................................................................................. 13 Use Small Repository at Design Time ...................................................................... 13 Bypass Index Rebuilding .......................................................................................... 13
4 xCP 2.0 Performance Best Practices and Guidelines BAM ................................................................................................................................ 14 Use Different MQ Creation Strategies.................................................................... 14 Create Multiple Pipe Jobs ....................................................................................... 14 Move Runtime jars to bam-server.war .................................................................. 14 Content Transformation Services ............................................................................... 15 Minimize Storage Requirement .............................................................................. 15 Runtime ............................................................................................................... 15 Database Tuning .......................................................................................................... 15 General Guidelines .................................................................................................. 15 Sorting with Business Object .................................................................................... 16 Filtering with Business Object .................................................................................. 16 Recommended Tunings with Oracle ..................................................................... 16 Recommended Tunings with SQL Server 2008 ..................................................... 16 Content Server .............................................................................................................. 17 Use DM_NO_EXTRA_JOINS ....................................................................................... 17 Use Group Address to Reduce Mail Sending ....................................................... 17 Case and Process (BPM) ............................................................................................. 18 Oracle Tuning for Complex Task-List Query .......................................................... 18 Business Activity Monitor .............................................................................................. 18 Optimizing Historical Query Aggregation Frequency ......................................... 18 Content Transformation Services ............................................................................... 19 CTS JVM Tuning ......................................................................................................... 19 Change MaxParallelDecoding .............................................................................. 20 Tune Asynchronous CTS Thread Model ................................................................. 20 Tune Synchronous CTS Thread Model ................................................................... 20 Use ACS to Download Content from Content Server ......................................... 20 Viewer ............................................................................................................................ 21 Use Dedicated CTS Instances for Real-Time Requests ........................................ 21 Content Intelligence Services ..................................................................................... 21 Tune CIS ..................................................................................................................... 21 Do Not Allow a backlog of CIS Requests .............................................................. 22 Search ............................................................................................................................ 22 Use Debug Flag to Trouble-Shoot Performance Issue ......................................... 22 Conclusion ......................................................................................................... 23
5 xCP 2.0 Performance Best Practices and Guidelines Executive Summary This document summarizes performance best practices and guidelines based on internal performance studies using xCP 2.0. The document is divided into the three major phases in the lifecycle of an xCP application: design, deployment, and runtime. Audience This white paper is intended for xCP 2.0 designers and administrators. Abbreviation The following list contains terms, abbreviations, and acronyms that appear in the white paper. ACS Accelerated Content Services BAM Business Activity Monitor BE Business Event BO Business Object BPM Business Process Manager CS Content Server CIS Content Intelligence Services CTS Content Transformation Services DM Discovered Metadata MQ Message Queue Background xCP 2.0 is a platform used to develop end user applications. The design, configuration, and tuning of the system impact the performance of the end user application. This white paper provides best practices to follow and guidelines to consider when you develop an xCP 2.0 application. The content for this white paper is taken from a series of internal performance and scalability studies using xCP 2.0 with Documentum 7.0.
6 xCP 2.0 Performance Best Practices and Guidelines Architecture and Scalability An xCP application can involve multiple products and components. To ensure support for a large number of concurrent users, an xCP application can be deployed with scalability provided for different layers. The following diagram illustrates a typical deployment where the system uses more than one instance for each Documentum product. You can also deploy multiple database instances (for example, Oracle RAD) at the database layer.
The diagram above illustrates how the BAM server can be deployed in a clustered environment to provide high availability for end user report viewing. The EMC Documentum xCelerated Composition Platform 2.0 Deployment Guide provides guidelines on deploying BAM in a clustered environment. Design Time You should carefully plan the design of your xCP application because there are limitations on the ability to adjust it later. You should make critical decisions when you are designing the system that impact how the application performs and scales during runtime.
7 xCP 2.0 Performance Best Practices and Guidelines General Recommendations Limit Business Object Hierarchy Depth A business object type can be a subtype of dm_sysobject or another business object type. Each additional level results in additional joins when a database query includes the business objects. Consequently, the query takes more time to execute and negatively impacts application performance. Limit the BO hierarchy to three levels, which includes the dm_sysobject level. Limit Number of Items in a Folder System performance is negatively impacted when an end user navigates to a folder that contains a large number of items. This occurs even when the application includes pagination. For better performance limit the number of items/objects in a folder to 2000. Placing a limit on the number of items in a folder may seem like a runtime issue only. However, a decision made during the design of the application could make it impossible to limit the number of items in a folder during runtime. For example, you might create a folder and for each new customer, a sub- folder is created in the folder to store customer documents and artifacts. When your business expands, you might end up with a large number of customers and navigating to that folder might not have a satisfactory performance. Limit Number of Grids on a Page A data grid is an important widget often used in an xCP application. However, the display of data grids can take time, particularly when the end user uses Internet Explorer. For better performance, it is recommended that you limit the number of grids on a page. An alternative is to use tabs so that each page can be loaded and displayed quickly. Minimize Nesting of Column Boxes The nesting of column boxes results in a DOM (Document Object Model) nesting and more JavaScript executions.
8 xCP 2.0 Performance Best Practices and Guidelines Minimize Use of Expression on Tab Group When you bind a tab to an expression, all of the tab contents in the containing tab group are rendered when the page loads. Without expression, only the contents of the first tab in the tab group are rendered when the page loads. Set Height to Tree or Tab Group Specifying the height of a tree or a tab group can significantly improve the layout performance. Data Services Avoid triggering multiple queries When you select On page load or When an input value changes the system could trigger queries unnecessarily, resulting in a greater load on the server. For example, when you select When an input value changes, and an end user types in a word of four letters for search, the system can trigger the same query four times. This guideline applies to real-time, historical, full-text, and task-list queries.
Avoid Operators Contains, "Ends with" or "Does not contain" Do not use the operators Contains, Ends with, or Does not contain when defining a user input for a real-time, historical, or task-list query. These operators make the database query non-sargable and results in poor system performance.
9 xCP 2.0 Performance Best Practices and Guidelines
Limit Number of Sortable Output Columns Full-Text Do not enable sorting for all columns of a full-text search. Enable sorting only for the columns that provide the most value to the end user. The system creates an index in xPlore for each attribute enabled for sorting. This increases the size of the index which can negatively impact system performance.
Avoid Operators "Does not contain", "!=" and "Ends with" Full-Text Do not use the Does not contain, !=, or Ends with negative operators when configuring a user input for a full-text search. Queries that contain these operators can impact system performance.
10 xCP 2.0 Performance Best Practices and Guidelines Use Selective Criterion Full-Text Add user inputs to a full-text query to make it more selective. The system processes selective queries more efficiently than unselective queries. When you configure an unselective query, especially those issued by an end user without sufficient privileges, system performance can be impacted. xPlore performs a security check when an end user issues a query. It takes more system resources to complete a security check for users that do not have sufficient privileges. Avoid Fuzzy Search Full-Text Fuzzy search is a term to describe including variation, misspelling, and typos in your full-time search. You should use this type of search sparingly because it uses more processing power to generate the matches. By default this option is not enabled.
Discovered Metadata The CIS server computes metadata values by analyzing the content of an object. This computation is performed asynchronously. The volume and format of the content can impact the amount of CPU resources needed to perform the computation. The following table provides example performance metrics for the entity detection and the categorization and pattern detection processing types: Type of Processing Discovered Metadata Throughput Example with Documents of 4KB Entity detection Fax number Organization People Phone number Place postal address 10 MB/hour 2,500 documents/hour Categorization & Pattern detection Business terms (USA) Science and Engineering Email address SSN (USA) URL 1 GB/hour 250,000 documents/hour
11 xCP 2.0 Performance Best Practices and Guidelines This example shows that entity detection is less efficient than categorization and pattern detection. Limit Discovered Metadata Usage Do not add discovered metadata to a content model unless it is used by the end user. This guideline is particularly important for entity detection discovered metadata. Avoid Adding Discovered Metadata of Type Entity Detection The cost of adding a DM is a function of the DM type. Adding the first Categorization DM has a low impact on system performance. The impact of adding a second Categorization DM is lower than the first DM and is almost unnoticeable. Adding the first Pattern detection DM has a low impact on system performance. The impact of adding a second Pattern detection DM has the same impact as adding the first Pattern detection DM. Adding the first Entity detection DM has a high impact on system performance. The impact of adding a second Entity detection DM does not have any impact on the current Entity detector. It does not cost more to have many entity detection DM computed for a Content Model when compared to a single entity detection DM. The following table summarizes the differences: Type of Processing Cost of First Discovered Metadata Cost of Additional Discovered Metadata Entity detection High Unnoticeable Categorization Low Much lower Pattern detection Low Low Case and Process (BPM) Use package instead of relationship to access BO in task-list query You introduce additional table joins when you configure a task-list query that includes attributes of a non-package business object which is accessed through a relationship with another type of business object. You can improve system performance by adding the related business object to a package so that the task-list query can access its attributes directly.
12 xCP 2.0 Performance Best Practices and Guidelines Use business object package to encapsulate many process variables The performance of a task page slows when a process contains multiple packages and process variables. Using a single business object to replace multiple process variables can improve task page performance, especially when there are a large number of process variables. The cost in system resources to save or update a package is comparable to the cost for a process variable. A single business object can contain multiple attributes. Viewer Turn Off Thumbnails If an end user views documents that contain mostly text (for example, Word or PDF documents), clear the Display thumbnail navigator checkbox. Displaying a thumbnail for a text page does not add value to the end user and because the system downloads thumbnails, system performance can be negatively impacted. The impact can be significant under WAN conditions. However, it is important to note that clearing this option also turns off the page modification feature.
Designer Limit Number of Open Pages Limit the number of pages open in xCP Designer. Depending on native memory and java heap settings you could experience performance issues with xCP Designer when you keep a large number of pages open. Native memory: Each page consumes native memory and when you open many pages the system may run short of memory. Java heap: Each page consumes memory in the Java heap and with many open pages the JVM can spend much time doing garbage collection. xCP Designer is a 32-bit application that limits the maximum heap size.
13 xCP 2.0 Performance Best Practices and Guidelines In addition, the number of pages that can be opened without impacting performance is a function of the complexity of the pages. Deployment Time Use tomcat.util.scan.DefaultJarScanner.jarsToSkip to exclude jars from annotation scanning Tomcat 7 includes support for Servlet 3.0 annotations which require more heap memory and results in a longer start up time for the server because of higher heap usage and additional processing. xCP 2.0 does not require support for annotations. You can configure Tomcat to exclude annotation JARs from being scanned during start up. The EMC Documentum xCelerated Composition Platform 2.0 Deployment Guide provides instructions on how to exclude JARs from being scanned. xPlore Deploying or redeploying an xCP application could cause the xPlore index to be rebuilt. Rebuilding the xPlore index is a synchronous operation that negatively impacts the overall deployment performance if the index is large. Based on EMC internal tests, the throughput is 10-30 documents per second with small to medium document size. Use Small Repository at Design Time This is the preferred way before the deployment to the production environment. For example, a repository with 1000 documents can be used during the design time since the purpose at the design time is to ensure the correctness of the application. Bypass Index Rebuilding You can use xMS Server to deploy an xCP application to bypass xPlore index rebuilding. However you cannot bypass index rebuilding when you use xCP Designer to deploy an application. 1. Use xCP Designer to package the WAR and config.xml files. 2. Use xMS Server to deploy an application and specify -xploreindexing false during deployment
For example:
14 xCP 2.0 Performance Best Practices and Guidelines xms>deploy-xcp-application --war-file C:\package\Casual_and_Property_Insurance.war -- configuration-file C:\package\Casual_and_Property_Insurance_capins_1.0.0_config .xml --environment C24-DIY --xploreindexing false
Once deployed, use the xPlore admin console to rebuild the index. If the index is not rebuilt, the system does not make changes in the Full-Text search model available to end users at runtime. For example, if you add a facet to an application and xPlore does not rebuild the index, the end user does not see the facet. BAM Use Different MQ Creation Strategies
Content Server message queues hold business event data generated by the runtime application. The message queue strategy determines the number of message queues the system creates. The strategy correlates with system performance. Generally, the more message queues the system creates the better the BAM server performs.
The EMC Documentum xCelerated Composition Platform 2.0 Deployment Guide provides instructions. Create Multiple Pipe Jobs
The BAM server runs one pipe job for each message queue, taking data from the queue and inserting it into the BAM database. If you have a backlog of data you can add pipe jobs to a message queue as a way to improve system performance. The EMC Documentum xCelerated Composition Platform 2.0 Deployment Guide provides instructions. Move Runtime jars to bam-server.war When you deploy xCP, the runtime JAR files are placed in CATALINA_BASE/lib. You can improve system performance by moving the runtime JAR files to CATALINA_BASE/webapps/bam-server/WEB-INF/lib. BAM throughput can be improved by 50-100%. The EMC Documentum xCelerated Composition Platform 2.0 Deployment Guide provides more information.
15 xCP 2.0 Performance Best Practices and Guidelines Content Transformation Services Minimize Storage Requirement The cost to store renditions and storyboards can be up to five times greater than the cost for the content. Storyboards are required when using xCP Viewer. Storyboards are not required for Daeja Viewer. You can specify when storyboards are not generated, for example, for Microsoft Excel documents. Set richmedia_enabled to 0 for the excel12book format: update dm_format objects set richmedia_enabled=0 where name='excel12book' Runtime Database Tuning General Guidelines In general, database tuning is expected in order to get satisfactory performance. Index creation o This is application and data model specific and not all the required indexes are created out of the box. o For example, 24 indexes were created for the reference application used during the internal performance study. Statistics gathering o Gathering statistics involves a number of options and configuration parameters. It is the responsibility of the DBA to determine the best options based on the application and how it is used. o For Oracle: http://docs.oracle.com/cd/E11882_01/server.112/e16638/stats .htm#PFGRF003 o For SQL Server 2008: http://msdn.microsoft.com/en- us/library/dd535534(v=sql.100).aspx (Oracle) SQL Baseline or SQL Profile o Using hints might be needed to influence CBO (Cost Based Optimizer).
16 xCP 2.0 Performance Best Practices and Guidelines o It is found that SQL Baseline/Profile is efficient if the performance of a query can be improved by passing a hint (without query structure change). Sorting with Business Object The system does not automatically create indexes for each business object type. If an end user experiences inadequate system performance while sorting the results of a real-time or task-list query, manually create an index to help resolve the issue. For example: Business object: Person with attribute last_name Enable sorting for last-name with a query Create an index on (last_name, r_object_id) For full-text queries the system automatically creates an index in xPlore. Filtering with Business Object When an attribute is added to a user input, creating a corresponding index can improve system performance. . This is similar to the case above where manually creating an index for sorting can help system performance. Recommended Tunings with Oracle Set cursor_sharing=FORCE Consider turning off auditing or writing database audit records to OS with large file sizes. The following is not a general recommendation but it can be tried if the execution plan for some queries is not optimal. optimizer_index_caching=95 optimizer_index_cost_adj=5 Recommended Tunings with SQL Server 2008 Parameterization = forced Consider setting "Maximum degree of parallelism" if the host has more than 4 CPUs Enable Snapshot Isolation ALTER DATABASE MyDatabase SET ALLOW_SNAPSHOT_ISOLATION ON ALTER DATABASE MyDatabase SET READ_COMMITTED_SNAPSHOT ON Set "maximum server memory" if the SQL Server is deployed on a shared host
17 xCP 2.0 Performance Best Practices and Guidelines o SQL Server would use as much memory as possible and it may result in poor performance with other components/products deployed on the same machine. Auto Create Statistics = false Auto Update Statistics = true Content Server Use DM_NO_EXTRA_JOINS When views are created, extra/redundant join predicates are added by default. It was to help DB optimizer to choose the best execution plan based on Documentum's past performance investigation. However, it is found that with Oracle 11g, the redundant join predicates present challenges to Oracle optimizer and can result in much worse performance because the Oracle optimizer might choose a sub-optimal execution plan. A support case (Bug 14033569) has been opened with Oracle. It is recommended to use DM_NO_EXTRA_JOINS to eliminate redundant join predicates. Refer to Content Server 7.0 Administration and Configuration Guide for detail. Use Group Address to Reduce Mail Sending By default, the system sends an event notification email to each member of a workqueue group. This setting places a load on the method server and can impact system performance. Set the use_group_address parameter to 1 so that the system sends an event notification email to the address of the group instead of each member of the group. If you are not using email, turn off mail sending: 1. Open server.ini. 2. Locate the [SERVER_STARTUP] section. 3. Set mail_notification = false. These two guidelines are helpful when troubleshooting DM_SERVER_E_NO_MTHD_BUF issues. The EMC Documentum Content Server 7.0 Administration and Configuration Guide provides more information on email settings.
18 xCP 2.0 Performance Best Practices and Guidelines Case and Process (BPM) Oracle Tuning for Complex Task-List Query System response time can be slow when processing a complex task-list query. For example, response time slows when a task-list query includes the attributes of a non-package BO accessed through a relationship. Use the following parameters to improve query performance: optimizer_index_caching=95 optimizer_index_cost_adj=5 These parameters are global and the impact on the performance of other types of queries is not clear. Test and validate this setting in a test environment before using it in a production environment. Business Activity Monitor Optimizing Historical Query Aggregation Frequency The system aggregates data for all historical queries every 5 minutes. If too many aggregation jobs run simultaneously, system performance suffers and charts do not load quickly. The following figure shows spikes in system CPU usage occurring in 5-minute intervals as the number of historical queries increases:
To avoid future performance issues, you can adjust two aspects of historical query aggregation jobs: LAST_RUN and STEP_SIZE.
LAST_RUN is the time an aggregation job starts. By default, the system starts all aggregation jobs at the same time, for example, 10:20 a.m., 10:25 a.m.,
19 xCP 2.0 Performance Best Practices and Guidelines 10:30 a.m., and so on. To enhance system performance, stagger aggregation jobs so they begin at different times, which can decrease the load on the CPU. The system accepts LAST_RUN values expressed in whole minutes. For example, use a LAST_RUN value of 1, 2, 3, and so on. If CPU usage is still too high, adjust STEP_SIZE. STEP_SIZE controls how often an aggregation job runs. The default STEP_SIZE is 5 minutes, which means the system starts aggregation jobs every 5 minutes. You can increase or decrease STEP_SIZE. Decreasing STEP_SIZE can enhance system performance because the system aggregates fewer rows of data. The system accepts STEP_SIZE values as whole minutes expressed in seconds. For example, the system accepts 60, 120, and 180, but does not accept 90, 150, or 210. Adjust LAST_RUN and STEP_SIZE by running scripts against the BAM database. In the following example, the script adjusts LAST_RUN so the aggregation jobs for three historical queries start 1 minute later than the rest of the aggregation jobs. UPDATE BAM_S_JOBS SET LAST_RUN=DATEADD(mi,1,LAST_RUN) WHERE NAME in (QueryLabel_1,QueryLabel_2,QueryLabel_3) In the following example, the script adjusts LAST_RUN so the aggregation jobs for two historical queries run 2 minutes before the rest of the aggregation jobs. UPDATE BAM_S_JOBS SET LAST_RUN=DATEADD(mi,-2,LAST_RUN) WHERE NAME in QueryLabel_4,QueryLabel_5) In the following example, the script changes step_size to 60 seconds for all historical queries with Customer in the name. UPDATE BAM_S_JOBS SET STEP_SIZE=60 WHERE NAME like Customer% This information also appears in the xCP Designer online help documentation. Content Transformation Services CTS JVM Tuning
Depending on the configuration of the system and the required throughput, JVM memory options should be changed accordingly. The Windows registry is used for CTS JVM configuration and the location is at HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->services- >DocumentumCTS->Parameters->AppParameters.
20 xCP 2.0 Performance Best Practices and Guidelines It is also recommended to disable explicit GC by using the JVM Option - XX:+DisableExplicitGC. Change MaxParallelDecoding On a powerful machine (e.g. with 8 cores or plus), setting MaxParallelDecoding to a large value can significantly improve the CTS throughput. pdfstoryboard.xml <MaxParallelDecoding>8</MaxParallelDecoding> doc2.xml <MaxParallelDecoding>8</MaxParallelDecoding> Tune Asynchronous CTS Thread Model To tune the asynchronous thread model update the CTSServerService.xml file. For example: <MaxTaskThreadJobTime>30</MaxTaskThreadJobTime> <MonitorThreadSleepTime>20</MonitorThreadSleepTime> <CTSServer AttributeName="queueInterval" AttributeValue="5"/> <CTSServer AttributeName="maxThreads" AttributeValue="30"/> <CTSServer AttributeName="maxQueueItemsToSignOff" AttributeValue="8"/> <CTSServer AttributeName="thresholdForQueueItemsToSignOff" AttributeValue="8"/> Tune Synchronous CTS Thread Model To tune the synchronous thread model update the WebServerService.xml file. For example: <ServerProperty Key="maxWorkingThreads" Description="Number of working threads" Type="Integer" Value="30"/> <ServerProperty Key="thresholdForSignOff" Description="Threshold for maxium number of requests signed off" Type="Integer" Value="30"/> <ServerProperty Key="TPMMonitorMaxTaskJobTime" Description="Maxium allowed task running time (minutes)" Type="Integer" Value="30"/> <ServerProperty Key="TPMMonitorSleepTime" Description="Sleep time for tasks monitor (minutes)" Type="Integer" Value="20"/> Use ACS to Download Content from Content Server Enable content transfer using ACS to improve the content transfer time. 1. Use DA to create a network location ID. For example, ctsn1. 2. Update the CTSServerService.xml file with the network Location ID. <BocsConfig allowBocsTransfer="true" allowSurrogateTransfer="true" networkLocationId="ctsnl" preferAcsTransfer="true" processOnlyParked="false"/> <CTSServer AttributeName="networkLocationId" AttributeValue="ctsnl"/>
21 xCP 2.0 Performance Best Practices and Guidelines <CTSServer AttributeName="preferAcsTransfer" AttributeValue="true"/> 3. Restart CTS. Viewer Use Dedicated CTS Instances for Real-Time Requests Configure one or more CTS instances to process real-time requests. 1. Access each machine that sends real-time requests. 2. Edit the preferences.xml file. For example: <ServerProperty Key="AvailabilityWait" Description="Number of seconds to wait for rechecking availability" Value="4"/> <ServerProperty Key="CTS_SkipList" Description=" list of cts instances (semicolon separated) to skip (scalability)" Value=A-CTS1;A-CTS2"/> 3. Edit the CTSServerService.xml file for each real-time instance to ensure that a dedicated real-time CTS instance is not processing asynchronous requests. For example: <QueueProcessorContext DocbaseName="xcprepo"> <CTSServer AttributeName="queueItemName" AttributeValue="dm_mediaserver_temp"/> <QueueProcessorContext DocbaseName="xcprepo"> <CTSServer AttributeName="queueItemName" AttributeValue="dm_autorender_win31_temp"/> Content Intelligence Services Tune CIS There are two major tuning options with CIS: cis.server.execution.threads cis.entity.luxid.annotation_server.cpu The default value of cis.entity.luxid.annotation_server.cpu is 1 and it is usually too small in a production environment. It is recommended to start with cis.entity.luxid.annotation_server.cpu set to the total number of CPUs of all Luxid nodes. cis.server.execution.threads should be set to a value sufficiently large so that each Luxid node does not stay idle while there are documents to process.
22 xCP 2.0 Performance Best Practices and Guidelines Usually, the processing speed of the CIS server (Categorization/Pattern Detection) is much faster than the Luxid server (Entity Detection). Tune by starting with cis.server.execution.threads = 1 Do Not Allow a backlog of CIS Requests If a newly created document/object is processed by CIS after it is processed by xPlore, xPlore trigger a new processing. It is important to ensure that CIS can process newly created documents/objects with a short delay. Search Use Debug Flag to Trouble-Shoot Performance Issue The debug mode for query data services can be activated at runtime by adding the debug parameter in the URL calling the services. The debug information is useful to troubleshoot issues such as performance issues. It allows you to check results, execution events, and the query sent to the source. The following example shows how to add the debug parameter to the URL: http://<host>:<port>/<application_name>/application/documents?type=ft_do c&q=active&page=1&start=0&limit=10&debug The following table shows the output from the debug operation. Search for the statistics section which includes four entries all prefixed with JAMon Label: Step Real-Time Full-Text 1 RealtimeAttributeMapperFactory.createMapper DfcAttributeMapperFactory.createMapper 2 RealtimeQueryAdapter.adapt DfcSearchQueryAdapter.adapt 3 RealtimeQueryExecutor.execute DfcSearchExecutor.execute 4 RealtimeResultAdapter.adapt DfcSearchResultAdapter.adapt Each entry represents a step in the service call execution. Steps 1 and 2: The application server prepares and builds the query Step 3: The Content Server database or xPlore execute the query Step 4: The application server processes the results The system calculates the following metrics for each step: "executor":"JAMon Label=DfcSearchExecutor.execute, Units=ms.: (LastValue=969.0, Hits=59.0, Avg=777.8135593220339, Total=45891.0, Min=217.0, Max=8952.0, Active=0.0, Avg Active=1.0, Max Active=1.0, First Access=Tue Oct 30 01:33:43 PDT 2012, Last Access=Wed Oct 31 05:52:21 PDT 2012)"
23 xCP 2.0 Performance Best Practices and Guidelines In this example the execute query step took 969ms (LastValue) and there were 59 query executions (Hits) since application server startup. Label Description LastValue Duration (ms) of this step for the current execution Hits Count of executions since application server startup Avg/Total/Min/Max Avg/Total/Min/Max duration of this step since application server startup The EMC Documentum xCelerated Composition Platform 2.0 Deployment Guide provides more information. Conclusion xCP is not an application but a composition platform for developing applications. Performance should be considered in all the three major phases: design, deployment and runtime. In particular, tuning is generally required at the database level in order to get satisfactory performance. The whitepaper is written based on findings and experience gained through EMCs internal performance study. Most recommendations in the whitepaper are not application specific and depending on how an application is designed and used, additional tuning is required on case-by- case basis. In general, each recommendation should be taken within a context. Depending on the use case and the data volume in a repository, the performance might be satisfactory without following the recommendations. For example, you can use fuzzy search without impacting much the performance if the data volume is small. Performance tuning and optimization is a continuous process and it is the same case with xCP 2.0. Many discussions and articles are expected to be posted on EDN (EMC Developer Network) on solutions to address common or specific xCP 2.0 performance issues. We encourage you to use EDN as a first step when you encounter a performance issue.