This topic identifies preventive best practices that
can help assure good application performance. Following these
practices does not guarantee good performance, but eliminates
or reduces the impact of factors that can hurt performance. You
can assess performance throughout each development cycle, so
that adverse changes can be detected early.
Show all
Scope
The checklists emphasizes performance items specific to
Process Commander, as these may be less familiar to your
company's IT specialists. However, software systems are
not used in isolation. Numerous factors external to the
Process Commander application and its databases may affect
the overall workload and user's perception of
performance.
Diagnosing and remedying unsatisfactory performance
often requires technical skills and knowledge unrelated to
Process Commander. This task is beyond the scope of this help
system. Use Process Commander tools and other tools to
isolate the problem, and work with the appropriate
specialists to address it. Pegasystems Global Support staff
offers assistance and expertise.
Clarifying performance goals and expectations
A wide range of hardware, software, configuration, and
workload factors can affect performance. Attempting to
improve performance without a clear definition of
"performance" may not be successful.
For interactive users, performance means primarily
response time. Other users are concerned with system
throughput, or with throughput of the entire business,
including users plus systems, or responses to peak workloads.
Changes that improve one dimension of performance may improve
— or may hurt — other dimensions of
performance.
For Process Commander applications, performance is
affected by memory, processors, databases, workstations, and
network bandwidth. Use the Performance tool and other vendor
tools to identify which resources are busiest (most heavily
utilized) in your situation.
Memory
— Performance checklist
These items involve real memory on the server (RAM),
virtual memory on the server, and JVM memory.
- Does the size of the real memory on the server
available for Tomcat (or another application server) meet
the minimum 1 gigabyte defined in the Installation
Guide, after allowances for other programs also in
use?
- Are the JVM settings for
PermSize
and
MaxPermSize
equal to or more than the
minimums? These are described in the Installation
Guide, for the SETENV.BAT
file (or
SETENV.SH
file).
- Are users trained to exit the Process Commander
application by clicking a Log Off link,
rather than by closing the Internet Explorer window or
simply stopping work and leaving Internet Explorer
running?
- Is the Pega-RULES agent running regularly?
Is the SystemCleaner thread of the
Pega-RULES agent enabled?
- Are activities in the application that create new
clipboard pages (with the Page-New method) implemented to
later remove those pages (with the Page-Remove method) when
the pages are no longer needed?
- For summary view and list view reports that don't
use report paging, are the Maximum Value
values (on the Content tab) set
as low as possible?
- For activities that use the Obj-List method, is the
MaxRecords parameter set as low as
possible, consistent with application requirements?
- For Rule-Obj-List rules, are all the
properties that are retrieved truly needed? Are all of
these properties exposed as columns in the database table,
rather than remaining in the Storage Stream (BLOB
column)?
- For activities that use the Obj-List method, are the
properties in the SelectionProperty
parameter exposed as database columns?
- In list view rules, are the properties identified in
the Get These Fields array all necessary
to support the report display and functions? Do they
correspond to exposed columns to the greatest degree
possible?
- If JVM out-of-memory conditions occur only after
extended uptime or high volumes, have activities that
contain custom Java steps been tested for memory leaks? The
verbose garbage collection facility of the JVM may be
helpful in diagnosing memory leaks; details of use vary by
JVM vendor and version.
- For list view reports presented to an application user,
is the paging feature enabled on the Organize tab? (With most but not all
databases, this reduces the number of rows retrieved.)
- On a multinode system, is the System Management
Application installed on a separate node and application
server from the nodes that support users? This affects the
frequency of garbage collection.
Processor
— Performance checklist
These factors can affect processing workload.
- (Tomcat). Are the Connector settings (such as
maxProcessors
, minProcessors
, and
AcceptCounts
) in the server.xml
file appropriate for the scale of usage? See Pega Developer Network article
PRKB-10522 How to configure the Tomcat server.xml
file, which describes additional settings that may
affect performance under Tomcat.
- Is a single specific activity or user interaction a
major source of long response times? Use the
interactionTimeThreshold
setting in the
prconfig.xml
file to isolate server
interactions that are much longer than others. See How to
monitor interactive response time.
- (WebLogic). Is the value for parameter
servlet-reload-check-secs
(in the
weblogic.xml
file) appropriate? See Pega Developer Network article PRKB-18356 Troubleshooting:
"java.lang.UnsatisfiedLinkError.NativeLibrary" in
WebLogic.
- For list view rules, has sorting of rows by the
database software (defined on the Content tab) been used to the greatest
extent possible, and sorting within the clipboard (defined
on the Organize tab) minimized
when possible?
- In a production setting, are debugging lines written to
the system log (through
olog()
calls,
Log-Message method calls, and appender settings) commented
out or turned off the maximum practical extent?
-
Are settings in the prlogging.xml
file
all useful and necessary, or are they set too low,
resulting in numerous useless log messages?
- In a production setting, is the number of distinct
RuleSet lists in use minimized? Tactic to reduce this (and
so reduce rules assembly processing) including turning off
check-out for operators who do not need it, and
consolidating access groups and application rules.
- Are wake-up intervals for agents (set in the
Schedule tab of the Agent
Schedule form) set too low? Each wake-up requires
processing resources, but is not productive if the agent
often wakes up to discover that it has nothing to do.
Choose a value low enough to meet peak business throughput
needs but high enough to avoid useless cycling.
- If the application uses many agents that are often
active, the size of the requestor pool for BATCH agents is
important. You can increase, or decrease, this value in the
prconfig.xml
file to affect the relative
system resources for background versus foreground
processing. See More
about Agent Schedule data instances.
- If a server node has two or more CPUs, setting the JVM
to perform background or parallel garbage collection may
improve response performance. The specific settings differ
by JVM version and vendor.
PegaRULES
database and disk storage — Performance checklist
These database and storage factors can affect
performance:
- Does the PegaRULES database size meet the minimum
presented in the Installation Guide of 1
Gigabyte?
- Is there ample free disk space on the device that
contains generated Java code and compiled Java code? (The
device and directories are specified in two System Settings
data instances.)
- Is there ample free disk space on the device that
contains Tomcat (or the chosen application server) log
files?
- Does the disk that supports Tomcat or your other
application server need defragmentation? Defragmenting
before Process Commander installation is recommended, but
will be helpful when done later periodically.
- Have pooled connections to the database been
configured? Is the number of pooled connections high enough
to support the database traffic, counting agents and
listeners as well as online users? Is the
number of connections in use too high, so that processing
bottlenecks occur within the database operation?
- For heavily performed database searches, does the
application call the standard activity
Rule-Obj-ListView.ShowView rather than the
Obj-List method? This typically offers superior
performance.
- For activities that use the Obj-List method, is the
MaxRecords parameter set as low as
possible, consistent with application requirements? (This
affects both database and memory performance.)
- For activities that use the Obj-List method, are only
the properties truly needed retrieved? Are these properties
exposed as columns in the database table, rather than part
of the Storage Stream (BLOB column)? (This affects both
database and memory performance.)
- If your application uses the RDB-List method to access
the PegaRULES database, are the guidelines above for
Obj-List regarding maximum row counts, exposed columns and
truly needed properties followed?
- For summary view and list view reports, are the
Maximum Value values (on the Content tab) set as low as possible?
- If a specific user interaction — for example,
choosing a certain flow action — causes all or most
rows of an entire table to be scanned, can performance be
improved through a database index?
- If the application includes a custom worklist, are all
properties that appear in the worklist exposed as columns
in the corresponding database table?
- In a production setting, is the
pr_other
table empty, or at worst are only static, low-volume
classes mapped to the pr_other
table? Because
this table is a last resort for table mapping with very few
properties exposed, do not use this table to store
instances of classes that have high turnover, or many
rows.
- In a production setting, are the
pr_data
and pr_history
tables empty, or at worst do
they contain only a modest number of low-turnover,
infrequently accessed rows? Because these tables have only
a few properties exposed, do not use these tables to hold
saved instances of classes that have high turnover or many
rows.
- When the Dynamic Select control is used, is caching of
the results enabled where feasible?
- Is the
batchUpdates
feature enabled to
improve performance of insert, update, and delete
operations, especially in bulk processing? See Commit method for
details.
- For PegaRULES databases supported by Oracle 10, is
database caching enabled for those tables with smaller
average BLOB sizes? By default, such caching is usually
disabled, but enabling caching for assignment tables, work
tables, and history tables may improve response.
Workstations— Performance checklist
These performance items refer to user workstations.
- Does each user workstation meet the minimum processor
and memory meet requirements (800 MHz processor, 256
megabytes of RAM memory).
- Is Internet Explorer caching enabled? Is the cache size
adequate? Does the disk that holds cache files have
adequate free space, and have adequate performance?
- If the workstation accesses two or more Process
Commander systems (which may have different software
versions), are the latest versions of all Process Commander
ActiveX controls installed? (Some application users may not
need these controls; others may need only a certain ones
depending on the nature of their Process Commander
use.)
Bandwidth— Performance checklist
Network bandwidth for HTTP traffic can affect performance.
Check these items:
- Is Internet Explorer caching enabled (and the cache
size adequate) in each user workstation?
- Is HTTP compression enabled?
- In a production setting, have the HTTP expiration
periods for images, CSS files, and JavaScript files been
overridden? The expiration period dictates how often the
server is checked for updated content, an expensive
operation. The default value is once per day for most types
of content. Low values are appropriate in a development
setting, but higher values are typical in production
settings.
- If work object forms contain large, data-rich sections
that are only needed a fraction of the time, are the
sections on the harness rule initially collapsed and marked
for deferred load, so the section HTML code is only sent to
the workstation when explicitly requested?
- When a Dynamic Select controls is used, is a limit
configured for how many values are presented? Can the limit
be lowered?
Resources
The Performance tool can help isolate performance issues
for a single workflow. Use it during the development cycle
— not just near the end — to monitor performance
throughout the development phase.
The DB Trace facility is useful when examining database
activity and performance.
The Alert log can identify SQL statements that require
unusually long times to complete, long-running services and
connectors, and HTTP messages with a large payload.
See also these Pega Developer
Network knowledge base articles:
- PRKB-23116 How to detect and remedy the performance
impact of Obj-List methods and list view reports
- PRKB-21028 Best JVM setting depend on vendor,
version, and other factors
- PRKB-23154 Tuning the IBM JVM 1.4.2 for
performance
- PRKB-24141 Tuning the Sun JVM 1.4.2 and 5.0 for
performance
Troubleshooting