+ All Categories
Home > Technology > xCP2 0 Performance Best Practices and Guidelines

xCP2 0 Performance Best Practices and Guidelines

Date post: 05-Jul-2015
Category:
Upload: haytham-ghandour
View: 2,626 times
Download: 4 times
Share this document with a friend
23
Abstract This white paper summarizes best practices and 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
Transcript
Page 1: xCP2 0 Performance Best Practices and Guidelines

Abstract

This white paper summarizes best practices and

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

Page 2: xCP2 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.

Page 3: xCP2 0 Performance Best Practices and Guidelines

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

Page 4: xCP2 0 Performance Best Practices and Guidelines

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

Page 5: xCP2 0 Performance Best Practices and Guidelines

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.

Page 6: xCP2 0 Performance Best Practices and Guidelines

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.

Page 7: xCP2 0 Performance Best Practices and Guidelines

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.

Page 8: xCP2 0 Performance Best Practices and Guidelines

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.

Page 9: xCP2 0 Performance Best Practices and Guidelines

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.

Page 10: xCP2 0 Performance Best Practices and Guidelines

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

Page 11: xCP2 0 Performance Best Practices and Guidelines

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.

Page 12: xCP2 0 Performance Best Practices and Guidelines

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.

Page 13: xCP2 0 Performance Best Practices and Guidelines

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:

Page 14: xCP2 0 Performance Best Practices and Guidelines

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.

Page 15: xCP2 0 Performance Best Practices and Guidelines

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).

Page 16: xCP2 0 Performance Best Practices and Guidelines

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

Page 17: xCP2 0 Performance Best Practices and Guidelines

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.

Page 18: xCP2 0 Performance Best Practices and Guidelines

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.,

Page 19: xCP2 0 Performance Best Practices and Guidelines

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.

Page 20: xCP2 0 Performance Best Practices and Guidelines

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"/>

Page 21: xCP2 0 Performance Best Practices and Guidelines

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.

Page 22: xCP2 0 Performance Best Practices and Guidelines

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)"

Page 23: xCP2 0 Performance Best Practices and Guidelines

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 EMC’s 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.


Recommended