PeopleSoft Performance Guidelines April2021
PeopleSoft Performance Guidelines April2021
PeopleSoft Performance Guidelines April2021
Guidelines
April 2021
Copyright © 2021, Oracle and/or its affiliates
Public
Disclaimer
This document in any form, software or printed matter, contains proprietary information that is the exclusive property
of Oracle. Your access to and use of this confidential material is subject to the terms and conditions of your Oracle
software license and service agreement, which has been executed and with which you agree to comply. This
document and information contained herein may not be disclosed, copied, reproduced or distributed to anyone
outside Oracle without prior written consent of Oracle. This document is not part of your license agreement nor can it
be incorporated into any contractual agreement with Oracle or its subsidiaries or affiliates.
This document is for informational purposes only and is intended solely to assist you in planning for the
implementation and upgrade of the product features described. It is not a commitment to deliver any material, code,
or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing
of any features or functionality described in this document remains at the sole discretion of Oracle. Due to the nature
of the product architecture, it may not be possible to safely include all features described in this document without
risking significant destabilization of the code.
Purpose Statement 2
Disclaimer 2
Structure of This Technical Reference Paper 7
Related Materials 7
Working with Application Server Guidelines 8
Determining the Need for Additional Memory 8
Determining Application Server Memory Usage (Microsoft Windows) 8
Determining Excessive Memory Swapping (Microsoft Windows) 9
Determining Application Server Memory Usage (UNIX) 9
Determining Excessive Memory Swapping (UNIX) 10
Managing Application Server Recycle Count 10
Managing Application Server Dynamic Recycle (PeopleTools 8.53 and
Prior) 11
Managing Application Server Recycling with ProcessRestartMemoryLimit
(PeopleTools 8.54 and Later) 11
Working with Application Server Cache Options 12
Understanding Application Server Cache Options 12
Enabling Non-Shared File Cache 12
Enabling Shared File Cache 12
Enabling Database Cache (PeopleTools 8.51 and Later) 13
Loading Application Server Cache (LOADCACHE) 13
Preloading Cache (PeopleTools 8.48 and Later Versions) 13
Using Application Server Cache Over NFS 14
Working with Guidelines for Application Server Instances 15
Managing PSAPPSRV Instances 15
Using Parallel Boot 15
Setting Application Server JVM Options 15
Confirming Oracle Tuxedo Version and Minimum Rolling Patch
Installation 16
Working with Web Server Guidelines 17
Confirming Web Server, Service Pack, and JRE Installation 17
Reducing System Resource Usage Using Jolt Session Pooling 17
Reducing Homepage Loading Time Using Parallel Pagelet Loading 17
Working with Oracle WebLogic Guidelines 19
Confirming the JRE Version 19
Increasing File Descriptors 19
Oracle updates this document as needed so that it reflects the most current feedback from the field. Therefore, the
structure, headings, content, and length of this document may vary with each posted version. To see if the document
has been updated since you last downloaded it, compare the date of your version to the date of the version that is
posted on My Oracle Support.
Related Materials
See the following resources for information on the PeopleSoft systems:
Additionally, you should be familiar with the documentation that is delivered with Oracle Tuxedo, Jolt, and WebLogic.
If you are using IBM WebSphere, we recommend that you read IBM’s documentation on WebSphere. See your
PeopleSoft installation and administration documentation for directions on accessing the Oracle and IBM
documentation.
Manage application server recycling with ProcessRestartMemoryLimit (PeopleTools 8.54 and Later).
Ensure that you don't have too many PSAPPSRV processes booted.
During peak usage times, you should see some small amount of queuing for the PSAPPSRV processes. If you
have too many processes, performance is compromised. The extra PSAPPSRV processes not only take up
memory space and CPU time from the operating system, but also each PSAPPSRV may not be sufficiently cached
(that is, each PSAPPSRV caches only a portion of the user panels). Fully caching each PSAPPSRV process takes
more time. You can use Queue Status in PSADMIN to see the queue length. The # Queued column displays the
queue length for that application server process.
Starting with PeopleTools 8.55, the PeopleSoft Health Center can also be used to monitor the system.
The memory footprint for PSAPPSRV varies between applications. Refer to the hardware requirements for
PeopleSoft PeopleTools in My Oracle Support, Certifications.
Ensure that you include all domains running on the host in your calculations.
A common problem is having too many large domains on one computer with insufficient memory.
Check the memory utilization on the application server when you experience performance problems.
Check for memory swapping by using the memory monitoring procedures outlined in the topics described later in
this section.
If you determine that memory swapping is occurring, add more memory, or reduce the number of domains or
PSAPPSRV processes on the computer. You may scale horizontally by moving excess domains to other available
machines.
2. Start Task Manager and select View from the menu bar, and then select Select Columns.
4. Sort the process by name, and the two memory columns will tell you approximately the amount of memory that
each PeopleSoft process is using.
Memory Usage is not the entire memory consumption of the process, but only the amount of physical RAM that
the process is using. However, with Microsoft Windows, an application may be using much more virtual memory
(that is, the paging file) than physical memory. Therefore, both fields must be considered when determining the
memory consumption of the process.
The Memory Usage column includes the shared libraries loaded into each process; therefore, if you add up all the
processes, you will be “double counting” the shared libraries portion. Because PeopleSoft shares many of the
common libraries, the summation of all PeopleSoft processes is a quick estimator, not an absolute measurement of
memory usage.
Note: The total memory usage and the virtual memory size of the combined PeopleSoft processes should not be
greater than 70 percent of the real memory of the server.
2. Add the Object Counter, under Memory, and then the Page/sec.
Pages/sec is the number of pages read from the disk or written to the disk to resolve memory references to pages
that were not in memory at the time of the reference. This is the sum of Pages Input/sec and Pages Output/sec. This
counter includes paging traffic on behalf of the system cache to access file data for applications. This value also
includes the pages to/from non-cached mapped memory files. This is the primary counter to observe if you are
concerned about excessive memory pressure (that is, thrashing) and the excessive paging that may result.
Note: When page/sec is greater than 100 hard pages per second, there is a swapping problem. Reduce the number of
PSAPPSRV processes or add more memory to the server.
PT84
10
100
Resident memory refers to the real physical memory currently required by the process for its operation.
Virtual memory refers to the process virtual address size, which includes memory that has been paged out to the
physical disk. If the virtual memory continues to increase, you should lower the value of the RecycleCount parameter
of the application server in PSADMIN.
The output of ps_chk_domain.sh script divides the portion of PSAPPSRV processes from the entire domain so that
the system administrator can get a better understanding of the distribution of the memory resources.
To check whether paging is a problem, run the vmstat command and look at the pi column to see if you are doing
much paging in, and the po column for paging out.
You can also run the sar -q command to check paging or run the vmstat -s command and take multiple samples to
see if the page ins and outs to paging space are the majority of the total paging.
Background
Application server processes use physical runtime memory to cache Panel objects in order to speed up user response
time, instead of fetching the PeopleSoft Pure Internet Architecture (PIA) page objects from the database server every
time. However, as the number of requests serviced by the application server increases, the amount of physical
memory occupied by the application server processes also increases. When the amount of memory occupied by the
application server becomes too large relative to the real memory available at the time, paging to a file system occurs
and impacts user experience.
To effectively manage the memory footprint of the application server, keep the recycle count at a realistic level. When
the application server reaches the specified recycle count value, the application server terminates and restarts itself.
When the application server terminates, the occupied memory is released.
Recommendation
The recommended application server recycle count setting is 10000.
Adjust the recycle count so that no memory swapping is introduced because of a high recycle count value. (See the
previous section for information how to determine memory swapping.)
PeopleTools provide a feature to recycle an application server process when its memory growth exceeds a
configurable threshold. When you enable this feature, the application server will service (at a minimum) the number
of requests specified by the recycle count. The application server will continue to accept requests beyond the recycle
count until its memory growth (that is not due to metadata loads) exceeds the configurable threshold. Note that if an
application server exceeds the threshold before reaching the recycle count, then the system logs a delaying recycle
message. To use this feature, consult the product documentation for PeopleTools: System and Server Administration,
“PSAPPSRV Options.”
If interested in this feature, initially experiment with it in a staging environment to determine an appropriate threshold
for your specific applications and environments before using the feature in production. Optionally, you can use the
recycle count achieved using the memory growth option in the staging environment as a static recycle count in the
production environment.
Managing Application Server Recycling with ProcessRestartMemoryLimit (PeopleTools 8.54 and Later)
Starting with PeopleTools 8.54, application server dynamic recycling has been replaced by the
ProcessRestartMemoryLimit parameter, which can be set in the [Domain Settings] or the [PSAPPSRV Options] section
in the application server configuration file.
When the server processes exceed the limit set by this parameter, the system restarts, or recycles, them. If set to zero
(0), this feature is disabled and the system recycles server processes according to the recycle count setting.
For information on how to configure this setting, see the PeopleTools: System and Server Administration product
documentation.
Preload cache.
The server reboots (after reaching the recycle count or manual reboot
The server reboots (after reaching the recycle count or manual reboot).
When the application server rebuilds cache in memory, there will be extra load on the database server. During this
period, cache table retrievals will result in many database reads. After all cached objects have been retrieved into the
application server memory, the extra load on the database server will be eliminated.
Database cache adds slight overhead to the database server in CPU and memory when requested objects are retrieved
from the database cache into the application server memory. A dedicated database connection used to handle cache
table retrieval and updates consumes additional resources on the database server. In contrast, the application server
allocates less memory when using database cache because there are no cache files to be handled.
The end-user response time when using database cache is very comparable to that of using file cache. The exception is
for first-time access when the requested objects have not been loaded into the application server memory. Because of
the slower speed of database access compared to file access, the application server spends a longer time loading cache
from the database than from the cache files for the first access of the object. Once the cache is in the application server
memory, the performance is exactly the same because all requested objects come from the application server memory.
For Oracle databases, refer to the document “Optimize PeopleTools DB Caching network parameters in Oracle DB”
(Doc ID 1426813.1) on My Oracle Support for parameter settings that may yield better performance.
Be aware of the noac option. This option tells the NFS server not to cache file attributes. This mount option causes
severe performance degradation especially when running the LOADCACHE Application Engine program. Remove this
option if it is in the option list.
Confirm the Oracle Tuxedo version and minimum rolling patch installation.
<TUXDIR>\udataobj\patchlev
joltPooling=true
For more details on Jolt session pooling, refer to the document “E-AS: Master Note on Jolt Pooling,” My Oracle
Support, Doc ID 1273071.1.
parallelLoading=true
3. You should also enable Jolt session pooling for better performance:
Adjusting Web Server and Application Server Domains for Optimal Performance
Parallel pagelet loading enables you to process multiple pagelets concurrently to shorten the total roundtrip time to
load the homepage. While the overall total server resource usage is similar to non-parallel load, the peak usage may
increase when parallel load is enabled. Adjust the number of web server and application server domains to achieve
optimal performance.
1. PSADMIN, Application Server, Administer a domain, DOMAIN_NAME, Configure this domain, Custom
Configuration.
3. In the series of questions that follow, you can see Client Cleanup Timeout. Change that value.
4. Continue to finish configuring the domain. This will change both the Tuxedo Configuration and psappsrv.cfg.
For more detail, refer to the information on JOLT Listener/Client CleanupTimeout in the product documentation
PeopleTools: System and Server Administration, “Application Server Timeouts.”
A file is opened.
ulimit –n 4096
In Microsoft Windows environments there is not an explicit parameter for the number of file descriptors. The
parameter is implicitly limited by hardware resources (mainly system memory).
1. Minimize the amount of time that you spend doing garbage collection, while,
2. Maximizing the number of clients that you can handle at a given time.
Note that the JVM cannot service user requests during garbage collections.
Sat Nov 24 22:15:34 PST 2001:<I> <GC> GC: Before free/total=46867368/67108856 (69%)
<GC: freed 249213 objects, 15440712 bytes in 396 ms, 95% free (51334096/53687088)>
<GC: init&scan: 6 ms, scan handles: 105 ms, sweep: 124 ms, compact: 161 ms>
<GC: refs: soft 0 (age >= 32), weak 0, final 559, phantom 0>
1. Using the Custom Properties page of the current Web Profile, add a String property named auditPWD and set the
value.
3. In the Oracle WebLogic domain directory, open startPIA.cmd or startPIA.sh and add a command-line option -
Dloggersize=0 to the firing of the java process.
5. Before logging on, submit the following URL to reset the existing log:
A screen of messages appears on the browser window. The messages represent the log that has been collected.
7. Copy and paste the log from the browser to a text file.
<services xmi:type="threadpoolmanager:ThreadPoolManager"
xmi:id="ThreadPoolManager_1208430577007" enable="true">
...
...
...
...
</services>
servers > Application server > server1 > Thread Pool > WebContainer.
1. Expand Servers, Server Types, WebSphere application servers and click your server name.
2. Select Java and process management, Process definition, Java virtual machine.
The JVM Heap size can be adjusted by using the Xms: Initial Java Heap Size and Xmx: Maximum Java Heap
Size command-line parameters.
To adjust the JVM Heap size for IBM WebSphere version 8.5:
1. Log in to the IBM WebSphere admin console with the following URL:
To obtain the admin port number, see the AboutThisProfile.txt file present in PS_CFG_HOME/logs.
2. Enter your admin id and password that you have provided while deploying PIA.
Here you can change all the parameters where you need verbosegc and so on.
<defaultErrorPage xsi:nil="true"/>
<additionalClassPath xsi:nil="true"/>
<webApp href="WEB-INF/web.xml#WebApp_1"/>
<extendedServlets xmi:id="ServletExtension_1">
<extendedServlet href="WEB-INF/web.xml#Servlet_1"/>
</extendedServlets>
</webappext:WebAppExtension>
xmlns:applicationext="applicationext.xmi" xmlns:application="application.xmi"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmi:id="Application_ID_Ext" reloadInterval="0">
<application href="META-INF/application.xml#Application_ID"/>
</applicationext:ApplicationExtension>
1. Using the Custom Properties page of the current Web Profile, add a String property named auditPWD and set the
value.
Expand Servers > Server Types > WebSphere application servers, and click your server name.
4. Click Java and process management > Process definition > Java virtual machine.
6. Before logging on, submit the following URL to reset the existing log:
A series of messages appears on the browser window, which comprise the log that has been collected.
8. After logging on, point to the previous URL again to retrieve the log:
9. Copy and paste the log from the browser to a text file.
For more comprehensive data, repeat steps 5 through 8.
Graphics objects
Style sheets
JavaScript files
Some HTML pages (such as the PeopleSoft Pure Internet Architecture login page)
Note: The main purpose of compression is to reduce the amount of data to be transmitted. However, compression
comes at a price: extra CPU processing time. In cases where high-speed links are used and the gain in transmission
time does not justify the loss in CPU processing time, turn off compression.
The Compress Mime Types text field specifies a comma-delimited list of the MIME-type objects that should be sent in
compressed form to the browser. Note that this is applicable only when Compress Response References is set to true.
Gzip and Compress are supported. Here is the default: application/x-javascript,text/javascript,text/css,text/html.
FIELD DESCRIPTION
Cache Target Content Select the Cache Target Content check box to allow
caching of target content. Clearing this check box
disables all target content caching in the portal servlet,
even if the target tag specifies cached content. By
default, Cache Target Content is enabled.
Cache Portal Objects If Cache Portal Objects is selected, the portal servlet
(psp) will cache the following objects in web server
memory:
Portal registry.
Content references.
Cache Stale Interval The Cache Stale Interval is the amount of time, in
seconds, before portal cache is considered stale and
updated with the latest copy from the application
server. In other words, this is the amount of time before
changes to cached objects take effect. This setting
applies to the same objects as Cache Portal Objects.
Here is the default setting: 86200 (24 hours).
Cache Purge All Hit Count The portal automatically throws away all cache entries
in memory after the number of requests specified in
Homepage Caching
Homepages can also be cached on each user's browser. This means that the browser does not access the web server
after the homepage is initially retrieved. You can turn this feature on or off, and also adjust the specific time interval
that must pass before the web server is accessed again to get a "fresh" homepage. In any case, if a user clicks the
browser's Refresh button, the homepage is accessed from the web server again, overwriting the homepage cached on
the browser.
Caching the homepage is beneficial in either a production or development environment. We recommend that you turn
on homepage cache.
Note: Homepage Caching does not apply to Fluid Homepage. Fluid Homepages are actual components and adhere to
the same rules for loading of components.
The following table lists and describes the settings on the Web Profile Configuration – Caching page for homepage
caching:
FIELD DESCRIPTION
Homepage Stale Interval The default value is 1200 and is measured in seconds.
Note: The Browsers section specifies which web browser that you can use with homepage caching. Verify that your
choice of browser is enabled for caching.
3. Select the Format tab and then select Set Option Default Value in the METAXP row.
/usr/sbin/no –o tcp_timewait =1
The tcp_timewait option is used to configure how long connections are kept in the timewait state. It is given in 15-
second intervals, and the default is 1 (one). Use the default or change the value to 2 (two) for slower networks.
Note: Be careful when you use the no command, which performs no range checks and instead accepts all values for
the variables. If used incorrectly, the no command can cause your system to become inoperable.
export AIXTHREAD_SCOPE=S
export AIXTHREAD_MNRATIO=1:1
export AIXTHREAD_COND_DEBUG=OFF
export AIXTHREAD_GUARDPAGES=4
export AIXTHREAD_MUTEX_DEBUG=OFF
export AIXTHREAD_RWLOCK_DEBUG=OFF
For C Shell users, place the following lines in the .cshrc file:
set AIXTHREAD_SCOPE = S
set AIXTHREAD_GUARDPAGES = 4
Timeout between PeopleSoft Pure Internet Architecture transactions (intertransactional): When the timeout
expires, the user has been idling for too long, and the resources associated with the user are freed. You must log
in again to re-establish the state.
Timeout that "reserves" a resource until the expiration time before putting it back into the pool for recycling (for
example, tcp_timewait).
Values for intratransactional types of timeout should be staged. The end-to-end timeout value should always be
greater than that of its intermediate legs.
Application Server
For the application server (in psappsrv.cfg) the Service Timeout=x sec (default 300) Type=intratransaction, includes the
time it takes at the database server. According to the PeopleTools: System and Server Administration documentation:
Service Timeout. Specifies the number of seconds a PSAPPSRV waits for a service request, such as MgrGetObj or
PprLoad to complete, before timing out. Service Timeouts are recorded in the TUXLOG and APPSRV.LOG. In the event
of a timeout, PSSAPSRV terminates itself and Tuxedo automatically restarts this process.
In other words, it has to be large enough to accommodate the longest acceptable requests and queries. It is
recommended to set x=1200 (20 minutes).
The receive timeout is also intratransactional, and it has to be bigger than application server service timeout.
The receive timeout indicates the maximum number of seconds that the servlet waits for a response from the
application server. If you increase your application server service timeouts, such as the Service Timeout setting for
PSAPPSRV, then increase the tuxedo_receive_timeout parameter to be greater than the Service Timeout values that
appear in the psappsrv.cfg configuration file on the application server.
Servlet Timeout
The servlet session timeout = x sec (default 1200) (in configuration.properties)
This is intertransactional, as one has to relogin when the servlet expires (technically this is a security setting).
The meta refresh tag is in seconds and should be less than or equal to the session.timeout for the servlet.
Jolt Timeout
<session-config><session-timeout>x</session-timeout></session-config>
This is intertransactional and specifies the number of minutes (Oracle WebLogic) to wait before invalidating an unused
session.
Note that setting this value too high ties up web server resources, especially when users close their browsers instead of
logging out. Setting it to be the same as (or a bit higher than) the JOLT cleanup timeout is generally a good idea.
HTTP Timeout
Apache: Timeout = x sec (in httpd.conf)
HTTP timeout, unfortunately, serves as both intertransactional and intratransactional in different scenarios, so it may
or may not be higher than the rest of the timeouts. This directive defines the amount of time Apache will wait on three
occasions:
The amount of time between receipt of TCP packets on a POST or PUT request.
1. Increase the timeout values in servlet session timeout and web server session timeout.
In configuration.properties:
In web.xml:
<session-config>
<session-timeout>60</session-timeout>
</session-config>
Even after initial rendering, the page continues to be unresponsive and unavailable for some additional time.
Use multi-threading to send groups of messages in parallel. (PeopleTools 8.46 and later versions.)
General Parameters
This section describes general pub/sub parameters that impact asynchronous messaging.
Tuxedo Queue Size: The actual Tuxedo message queue size. For Microsoft Windows, the Tuxedo queue size is a
registry parameter. For UNIX systems, it is a kernel parameter. This value is used for Tuxedo queue threshold
determination by the pub/sub dispatchers. This value should be 1 MB or 2 MB instead of using the default of 64 KB.
Note that for AIX, the Tuxedo queue size is dynamic; therefore, you should use an arbitrary value. Otherwise, the
benefits of throttling are not realized.
Dispatcher Parameters
This section describes parameters for pub/sub dispatchers that impact asynchronous messaging.
Recycle Count: The dispatcher automatically recycles itself when this value is reached. By default, the recycle count is
set to 0 (zero). This count is based on the number of Tuxedo requests. In general, you should not have to cycle the
dispatcher. However, if a recycle count is used, it will affect performance because initialization will be performed which
includes rebuilding all the in-memory queues for each active queue assigned to that dispatcher.
Dispatch List Multiplier: This is a parameter used to throttle the number of requests sent to its associated handlers.
The actual list is the number of associated handlers multiplied by this value. The current default is set to 10. This value
was obtained by many performance tests. You should not have to change this value because it scales well.
Scan Interval: This is the interval that the dispatcher runs its on-idle processing. The current value is set to 15, which is
fine if Pub/Sub servers are running in the same domain as the PeopleSoft Pure Internet Architecture application
servers. However, if the Pub/Sub servers are stand-alone, this value should be set to 1, as this is the only mechanism to
initially poll the database queue for work.
Dispatcher Queue Max Queue Size: This value is the maximum number of items (messages) per queue that the
dispatcher retains in memory. The current default is set to 1000, which was obtained after many performance tests.
You should not have to change this value because it scales well.
Memory Queue Refresh Rate: This is the number of actual dispatches that the dispatcher will automatically rebuild in
its in-memory queue for a particular queue. The queues should not be corrupted; however, the current default value of
1000 is set at such a high level that it does not impact performance and is recommended based on performance tests.
You should not have to change this value because it scales well.
Restart Period: This is the time that the dispatcher attempts to re-dispatch messages that are still in the START status.
This value can potentially have a big impact on overall performance of the messaging system. When the dispatcher
dispatches a request, the system sets the status of the message to START. The Tuxedo request is queued, and the next
available handler will attempt to process this request and set the status to WORK. However, when the message system
is under configured (that is, there are not enough handlers to process all the requests), the request stays queued. The
dispatcher again sends the request after the restart period has elapsed. This potentially leads to many redundant
requests that the available handlers must cycle through. This leads to the Tuxedo queue overflowing and potentially
losing requests, requests that must be picked up when the restart period is reached. However, you do not want to set
this value too high, as messages would not be restarted in case of a handler crash. A good guideline is to use the
number of incoming requests per second divided by the number of associated handlers, multiplied by the average
processing time per second. Use this formula:
((Incoming requests per second)/ (# of associated handlers)) * (average processing time per
request)
Handler Parameters
This section describes pub/sub handler parameters that impact asynchronous messaging performance.
Min Instances and Max Instances: These values should always be the same. If the Min Instance is not the same as the
Max Instance, then under load, the system has to wait for the process (the handler) to boot up and initialize before it
can be used. It is better to boot all at one time, avoiding allocations during max load.
Recycle Count: Because the handlers run IB Events that contain PeopleCode, memory leaks are likely. Therefore, you
should have a high recycle count and monitor it to determine if it grows to an undesirable size. The recycle count by
default is 20000; however, depending on the PeopleCode being run, you can set this value higher or lower. The
problem with a recycle count on a handler is that with proper load balancing from Tuxedo, all associated handlers
recycle at approximately the same time. If this becomes a problem, set the recycle count to 0 (zero) and create an
automated script that will stagger the recycling of the handlers by using Tuxedo command line arguments to specify
the specific handler.
Max Retries: This value represents the number of times that the handler will attempt to process a message before the
status is set to TIMEOUT. Therefore, if the PeopleCode being run causes a crash of the process, it will attempt to
process it again. This value should be set to a low value—5 or lower—to limit the amount of handler crashes for one
specific bad message.
Message partitioning.
Publishing PeopleCode.
Notification PeopleCode.
GetMessage method.
Message compression.
Message Partitioning
Publishing PeopleCode
When publishing from PeopleCode, use the enqueue option as much as possible, or publish the message as late in the
transaction as possible. If you publish a message early in a transaction, and the transaction takes a long time to
complete, a lock will be maintained on the queue sequence ID table, blocking other messages in the same queue.
Notification PeopleCode
Notification PeopleCode should be as light as possible. For multi-transaction messages, commits should be frequent to
minimize contention. Component Interfaces (CIs) should not be used for full synchronous processes. They may be
used in incremental synchronous processes where volumes are not expected to be high. Note that CI performance is
dependent on the underlying component. If the component is light, it is possible to have a fast CI. The heavier the base
component, the slower the CI processing.
GetMessage Method
GetMessage is a relatively heavy call. You should use and reference the message that’s passed into the method
whenever possible in PeopleCode.
Message Compression
Message compression is automatic for PeopleSoft-to-PeopleSoft transactions. For third-party applications, set the
HTTP target connector property “sendUncompressed” to N. Compression can reduce response time by 20 to 80-
percent based on message size. By adding a simple relay servlet, third-party messaging can take advantage of
compression.
Enable archiving for Full Sync EIPs or any process where archiving is not required.
After Full Sync is run, the database administrator should update the database statistics for the new (grossly
changed) table sizes.
Using Multi-Threading to Send Groups of Messages in Parallel (PeopleTools 8.46 and Later)
Note: Make sure that you apply PeopleTools 8.46.12 or later and PeopleTools 8.47.06 or later if you are not on
PeopleTools 8.48. These patches fix an important thread leak issue associated with using this feature.
Note: If needed, you can distribute PSPUBHND through a primary/secondary configuration if the number of threads
is limited by the source domain hardware.
PSSUBDSP_dflt.1784 [10/24/00 13:46:22](1) (NET.333): The service PSSUBHND_dflt could not be sent
because of a blocking condition within Tuxedo on the client.
PSSUBDSP_dflt.1784 [10/24/00 13:46:22](1) (NET.333): The service PSSUBHND_dflt could not be sent
because of a blocking condition within Tuxedo on the client.
PSSUBDSP_dflt.1784 [10/24/00 13:46:22](1) (NET.333): The service PSSUBHND_dflt could not be sent
because of a blocking condition within Tuxedo on the client.
Second Error:
Resolution:
The application servers in this domain should not be accessible to the web server.
There is not a need to run MCF servers or most other servers in this domain.
You will need to configure your MCF servers to use the new REN server cluster.
In the psrenconfig.txt file, please ensure the following settings have been made:
tcp_nodelay 1 Set this property in the nssock and nsopenssl sections of the file
listenbacklog 512 NA
maxthreads 512 NA
minthreads 256 NA
reaper_interval 90 NA
More memory may be needed for very large reports. Customers should test and find optimal heap size for their
functional usages. See the Setting Application Server JVM Options section of this document for information on
updating the JVM heap size.
Use PDF format for reports where the PDF template will suffice.
For more complex reports that require the RTF template, take greater care when designing the RTF template and
data source.
Use SQR or other mechanisms to generate the XML file as a preprocessing step, as the XML file is the most
optimal data source for a BIP report.
While PSQuery and Connected Query are supported data sources, they will, in effect, be converted to XML during
report processing. Using SQR or other mechanisms is one optimization technique.
BOE will request data via the integration gateway and Query Access Services (QAS). QAS will make requests to
PSANALYTICSRV to retrieve the actual data. You should set the Max Instance Count of PSANALYTICSRV to a value
equal to or greater than the maximum number of concurrent reports that you must run. By default, PSANALYTICSRV
recycles after each request. If you are running many small reports that take less than 1 minute to finish, it may be
beneficial to set recycle count to a greater value to minimize the cost of restarting PSANALYTICSRV. However, if you
are running large reports, the memory footprint of the PSANALYTICSRV may be high, and it is better to set the recycle
count to 0 (zero). In addition, if there is a burst of report requests, the PSANALYTICSRV processes spawned to handle
the request will continue to consume memory if you set recycle count to greater than 0 (eventually the idle processes
will shut down).
Depending on the size of the document, when generating BOE reports, many physical files are created in various
layers: BOE temporary files, QAS repository files, and Report Repository files. For better performance, configure these
locations such that the physical files are created on fast disks that are optimized for faster read and write.
While submitting BOE reports through your PeopleSoft application, set the Minutes Before an Idle Connection is
Closed setting to a lesser value (1 minute) to free up resources from inactive users more quickly. You can change this
setting from the BOE Management Console.
PeopleSoft Ping.
PSADMIN.
PeopleSoft Ping
PeopleSoft Ping is a convenient monitoring facility using PeopleSoft Pure Internet Architecture, and it shows the time
spent in different tiers of the PeopleSoft system. Select PeopleTools > Utilities > PeopleSoft Ping.
See the PeopleTools: System and Server Administration documentation for more details.
PSADMIN
You can use PSADMIN to monitor Oracle Tuxedo queueing. You can use this information to determine the optimal
number of PSAPPSRV processes.
See the Application Server Guidelines section of this document for more details.
For more information on PPM, refer to the document "PeopleSoft Performance Monitor," My Oracle Support, Doc ID
747510.1.
Starting with PeopleTools 8.55, the PeopleSoft Health Center enables you to monitor the health of your PeopleSoft
application by providing real-time analysis of performance and load. See the product documentation PeopleTools:
Performance Monitor, “Working with PeopleSoft Health Center.”
Modal windows.
Mouse-over pages.
All actions from the Tool Bar, including Next in List, Rev in List, Return to Search, Update, Correction, and
Notification.
All actions performed during grid customization, including copy, share, delete, and customize.
Modal Windows
Modal Windows are used for a number of tasks including:
Messages.
Secondary pages.
To achieve the look and feel of a floating modal window required the use of an HTML tag called an iFrame.
An iFrame is a separate window within the main browser window or HTML page.
This enables the ability to display two HTML pages within the same browser window.
This iFrame can be resized and moved around within the browser window.
For each page with a Modal, the browser makes an additional request to the application server.
The additional request happens at page load time for the iFrame
This iFrame infrastructure is reused for all the Modal lookups on the same page.
We have attempted to minimize the effect of this additional request from a performance perspective; however, it may
be questioned during load testing.
You will see your HTTP requests increase to support this feature and as a result more Jolt requests and some
increase in web server CPU time.
These additional requests may increase the web server and application server CPU time accordingly.
The impact of this enhancement is dependent upon the actual test that is performed during load testing.
Mouse-Over Pages
This feature has been used across the PeopleSoft 9.1 applications to aid in providing additional data to the user on
specific fields. This page generally contains additional data pertaining to Vendor ID, Employee Info, Department ID,
and so on. It provides contextual data in an easy-to-access window on a transaction page without the need to
navigate to another page. It also supplies additional data to the end user while reducing the number of clicks required
to navigate within the application. These pages are loaded in the same application server request as the main page,
so the load time will be a combination of the main page as well as the mouse over page.
Network performance.
Query complexity.
Response data that consists of a large number of columns with fewer rows of data has a slower response than
response data that consists of fewer columns and more rows, even though the response size may be smaller.
Requesting that a query be executed in synch/poll mode with block size = 0 or Max will result in all data in one
block. This is probably not what you want to do.
In sync/poll execution, the larger the response block, the fewer blocks are returned and total response time for all
blocks is less, but the user has to wait longer for the response.
In synch/poll execution, if the heap size in the web server is not sufficient to retrieve the large response block, it
will lead to a Java out of memory exception.
In synch/poll execution, if a smaller block size (less than 100,000) is used, this will result in too many blocks
containing very few rows. Optimal request block size in kilobytes (KB) is in the range from 100,000 to 1,000,000.
Configuration Recommendations
Recommended configuration options include:
Sync/Poll: Optimal Request Block Size in KB in the range from 100000 to 1000000.
Sync/Poll: PSBRKHND instance count needs to be increased as response block count increases.
Client SocketTimeout=600000 ms or Max limit approved for the query response time.
Pivot Grid
Fluid Homepage
Kibana
Push Notification
File Attachment
Pivot Grid
The Pivot Grid enhancement is available in PeopleTools 8.52 and later releases. PeopleSoft Pivot Grid enables users to
display data visually in a dashboard. You can display data in different views by performing operations such as pivoting
and filtering, which enables business analysts to interpret data in a variety of ways.
The performance of Pivot Grid is directly related to the performance of its data source. The data source can either be a
PS Query or a Composite Query. If the data source has poor performance, the same is reflected in the performance of
the Pivot Grid as well. Hence, the queries should be tuned properly for a good and acceptable Pivot Grid performance.
Additionally, Pivot Grid displays aggregated data. It manipulates the data source at run time to render data for different
visualizations. So, the Pivot Grid queries should be conducive for such manipulations as well. Pivot Grid fires two or
three queries per transaction. The first query is to get the unique values for all the dimensions and the second one is
for the actual data to be displayed on the grid or chart. In the case of Fluid Pivot Grid, an additional query may be
executed to display the Detailed View.
We suggest the following general guidelines:
If a Pivot Grid is designed to show both grid and chart, and is published as a tile on a homepage page, you can
create a Pivot Grid View with the "Chart Only" option to replace the original Pivot Grid View used in the tile. The
"Chart Only" Pivot Grid View tile will perform better on the homepage, because the business logic to fetch the grid
content is eliminated. When the user selects the Pivot Grid tile, the additional grid content will be fetched and the
Pivot Grid will display both grid and chart.
A filter column with too many distinct values will take longer to process and render in the filter panel on the Pivot
Grid detail page.
If using an Oracle database, adjust these database parameters according to your hardware for better Pivot Grid
performance. Here are the minimum recommended values:
pga_aggregate_target =10 GB
Use Materialized Views on Oracle, Index Views on Microsoft SQL Server (MSS) and Materialized Query Tables on
DB2.
PeopleSoft systems support Materialized Views on Oracle, Index Views on Microsoft SQL Server (MSS) and
Materialized Query Tables on DB2. In case of complex queries having multiple tables and joins, these features can
also be used for better performance. See application product specific recommendations on materialized view
usage.
Note: Customers should monitor and run performance tests on homepages, and allocate sufficient resources to
ensure adequate responses during peak load.
Here are some items that can help improve overall homepage response time:
Tune each pagelet to handle concurrent users. Even one single slow pagelet can impact all users.
See the section Reducing Homepage Loading Time Using Parallel Pagelet Loading in this document.
See the section Working With Application Server Guidelines in this document for more details.
Monitor system resource usages to ensure adequate hardware is allocated to handle the peak load.
Reduce the number of pagelets on the homepages to only the functionally necessary pagelets that are frequently
accessed.
Remember all pagelets on the default homepage will be loaded whenever the user navigates to the Home button
(including after signing in or clicking the Home button in the Toolbar).
Move less frequently viewed pagelets to Dashboards that are not loaded automatically at sign in, but only loaded
upon specific user request.
Fluid Homepage
A fluid homepage is a PeopleSoft page that aggregates related information and displays tiles that provide access to
fluid applications. Tiles can be compared to pagelets used in the portal technology. For more information on fluid
homepages, see the product documentation PeopleTools: Fluid User Interface Developer’s Guide.
Fluid homepages are accessed when the user signs in using fluid mode, and also when the user clicks on the Home
button in the Toolbar when in fluid mode. Navigational tiles are lightweight and should not impact performance
substantially.
In PeopleTools 8.54, when the user accesses the fluid homepage, all tiles on all fluid homepages will be loaded. Thus,
resources will be used to process all tiles including those on secondary homepages.
Note: In PeopleTools 8.54, accessing the fluid homepage will load all tiles on all fluid homepages. Customers should
monitor and run performance tests on the fluid homepage, and allocate sufficient resources to ensure adequate
responses during peak load.
PeopleTools 8.55 improved performance dramatically by loading only tiles on the visible homepage. Invisible tiles are
no longer loaded by default, with the exception of tiles with “Refresh Timer” greater than 0 in the Fluid Attributes. Tiles
with “Refresh Timer” greater than 0 (zero) will be loaded whenever the fluid homepage is accessed and will be
refreshed according to the timer setting.
Here are some tasks that can help improve overall homepage response time:
Reduce the number of tiles on the homepages to only the functionally necessary tiles that are frequently
accessed.
Remember all tiles on the visible homepage will be loaded whenever the user navigates to Home (including after
signing in or clicking the Home button in the Toolbar).
Move less frequently viewed tiles to secondary homepages so they are loaded only when the user explicitly
selects the secondary homepage.
Limit the use of “Refresh Timer” as the tiles with timer greater than 0 will be loaded and refreshed regardless of
whether the data has changed.
Limit the use of an Event to refresh a tile. Do not use events to refresh a tile if the event can be triggered
frequently by many users.
See the section Tile Event Refresh Considerations in this document for more details.
See the section Working With Application Server Guidelines in this document for more details.
Monitor system resource usages to ensure adequate hardware is allocated to handle the peak load.
PeopleTools installation guide for your database platform, "Configuring Integration Between PeopleSoft
PeopleTools and Oracle SES"
"Oracle Secure Enterprise Search Deployment Considerations for PeopleSoft 9.2," My Oracle Support, Doc ID
1684035.1.
"How To Implement High Availability For Oracle SES 11.2.2.2," My Oracle Support, Doc ID 1611280.1.
Note: Beginning with PeopleSoft PeopleTools 8.55.11, a new search engine, Elasticsearch, can be used. Refer to the
PeopleTools: Search Technology product documentation for your installed PeopleTools release.
Elasticsearch
Elasticsearch 7.10 is supported for PeopleSoft Search Framework beginning with PeopleTools 8.59.
Compared with Elasticsearch 7.0, which was supported for the previous PeopleTools release:
Elasticsearch 7.10 has better data compression and reduced storage size.
Depending on the data, crawl time and CPU usage may be higher for some indexes.
For information on using Elasticsearch with PeopleSoft Search Framework, see the product documentation
PeopleTools: Search Technology.
To install the Elasticsearch, Logstash, and Kibana DPK, see PeopleSoft Deployment Packages for Elasticsearch
Installation (PeopleSoft PeopleTools 8.59) on the Oracle Help Center.
Kibana
The use of Kibana visualizations for PeopleSoft applications analytics is supported beginning with PeopleTools 8.58.
Moving analytics to the Kibana server frees the PeopleSoft Online Transaction environment to do other tasks. To
learn about PeopleSoft Search Framework and Kibana Analytics, see “Elasticsearch Home Page,” My Oracle Support,
Doc ID 2205540.2.
Use horizontal scaling of Elasticsearch nodes to support large concurrent users with heavy Kibana analytic
visualizations. The Kibana server manages the distribution of shards across the Elasticsearch nodes to handle the
concurrent analytic processing workload. Monitor your Elasticsearch usage and add Elasticsearch nodes as required
for your custom usage patterns.
Adjusting Memory
Monitor memory swapping in the Elasticsearch nodes. If you observe excessive memory swapping, utilize the normal
memory management options for your operating system to reduce swapping.
Elasticsearch also comes with an option to lock memory. To enable a memory lock, set “bootstrap.memory_lock: true”
in elasticsearch.yml and restart Elasticsearch. The bootstrap.memory_lock setting tries to lock the process address
space into RAM, preventing any Elasticsearch heap memory from being swapped out. For more details, refer to the
Elasticsearch documentation for your Elasticsearch version.
For more details on the concepts mentioned here, see the Elastic web site, www.elastic.co.
For large data volume indexes and high concurrent transaction loads, monitor JVM heap. If necessary, the Young
Generation heap can be increased up to 30% for better response times and more optimized garbage collection (GCs)
based on your custom usage patterns. The implicit default is 10% of heap. To change the Young Generation heap size,
add the flag "--XX:NewRatio=<value> " to the jvm.options configuration file for Elasticsearch.
For example: “--XX:NewRatio=2” will set the Old Generation to twice the Young Generation (Old Generation = 2 x
Young Generation), giving Young Generation 3 GB out of 10 GB JVM heap.
Be sure to monitor the statistics for your system to find the best setting for your custom usage. The actual value that
you use will depend on factors such as the visualizations you choose.
For more details, refer to the Java documentation for your installed Java version.
Caching
When a user accesses Kibana, the user credentials are cached to improve performance. Kibana related tile loading js
and css requests are cached in the browser to improve performance.
The user’s primary Homepage is processed every time the user navigates to “Home”. By moving Kibana tiles to a
secondary Homepage, the Kibana processing will not be triggered every time the user navigates to Home. Kibana
For Kibana tiles pulling from a large data volume index, use a filter to reduce the data selected.
Use a saved search rather than data table visualization for improved performance.
See information on visualizations in the Kibana documentation for your Kibana release.
Avoid computed scripted field columns in data table visualization as it involves expensive sorting.
See the information on scripted fields in the Kibana documentation for your Kibana release.
Create a separate domain that is referenced by the PeopleSoft Integration Broker gateway and plan for the
number of PSAPPSRV processes in the domain.
When sizing the PeopleSoft system be sure to set the JVM min and max memory settings for each instance of
PSAPPSRV.
Because SES search uses PeopleSoft Integration Broker, and Integration Broker internally needs Java, each
PSAPPSRV process involved in search will load JVM and JVM reserve memory as defined in the domain
configuration files. Though this was also the case with previous PeopleSoft PeopleTools releases, there were
fewer use cases that loaded JVM.
Plan for additional PSAPPSRV processes required to handle the related actions usage.
Frequently updated event: Frequently published events, especially when the events can be published by
multiple users, can bring about continuous rapid refreshes of the tiles subscribing to the event.
Tile used by many users: Event triggered refresh of tiles viewed by many concurrent users can cause a spike in
resource usages. Whenever the event is published, all visible tiles subscribing to the event for all live users will be
refreshed. Since all tiles subscribing to the event for all users viewing the tiles will refresh at the same time, this
creates a peak load on the servers.
Event for multiple tiles: All visible tiles subscribing to the same event will be refreshed at the same time. If the
tiles subscribe to different events, then the peak load will reduce since not all events will be published at the same
time. Use different functionally specific events for different tiles to reduce unnecessary concurrent tiles refreshes.
Tiles with heavy processing: If the tiles are lightweight, then concurrent refreshes are fine. Limit auto refresh (by
timer or event) of tiles requiring heavy processing. If the application tile processing code takes time, then
application server queuing can occur and can delay other transaction processing as well.
File Attachments
PeopleTools supports a set of PeopleCode built-in functions to upload and download file attachments: AddAttachment,
MAddAttachment, ViewAttachment, and DetachAttachment. Files are transferred in chunks between the source
location and the target location.
In PeopleTools 8.52, non-database attachment uploads and downloads use a fixed chunk size of 16KB for upload and
download. In PeopleTools 8.53, for non-database repositories, like FTP, change to the Maximum Attachment Chunk
Size will affect all add, view, and detach attachment actions. The downloads will use the chunk size as specified by the
Maximum Attachment Chunk Size value. The uploads will use the chunk size as specified by the Maximum Attachment
Chunk Size value, but is limited to a maximum of 1 MB.
For database Add attachments, the chunk size is governed by the value in the Maximum Attachment Chunk Size field
on PeopleTools Option page. The system administrator can adjust this value to improve the performance of file
attachment features. A larger chunk size (where supported by your database) will result in fewer chunks, thus better
performance. For Oracle database, we recommend setting Maximum Attachment Chunk Size to 1 MB. When using a
database repository, viewing or detaching of the attachments will ignore change to the value of Maximum
Attachment Chunk Size. The chunks will be retrieved in the exact same size they are stored in the database.
DATE CHANGE
Removed the section Confirm that the Posix Performance Pack is loaded.
Call +1.800.ORACLE1 or visit oracle.com. Outside North America, find your local office at: oracle.com/contact.
Copyright © 2021, Oracle and/or its affiliates. All rights reserved. This document is Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be
provided for information purposes only, and the contents hereof are subject to change trademarks of their respective owners.
without notice. This document is not warranted to be error-free, nor subject to any other
Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC
warranties or conditions, whether expressed orally or implied in law, including implied
trademarks are used under license and are trademarks or registered trademarks of SPARC
warranties and conditions of merchantability or fitness for a particular purpose. We
International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
specifically disclaim any liability with respect to this document, and no contractual
registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open
obligations are formed either directly or indirectly by this document. This document
Group. 0120
may not be reproduced or transmitted in any form or by any means, electronic or
mechanical, for any purpose, without our prior written permission. Disclaimer: This document is for informational purposes. It is not a commitment to deliver any
material, code, or functionality, and should not be relied upon in making purchasing decisions.
This device has not been authorized as required by the rules of the Federal
The development, release, timing, and pricing of any features or functionality described in this
Communications Commission. This device is not, and may not be, offered for sale or
document may change and remains at the sole discretion of Oracle Corporation.
lease, or sold or leased, until authorization is obtained.