IBM WebSphere Portal software family
Your world. Your way.
IBM WebSphere Portal 6.1.X
Performance Tuning Guide
IBM WPLC Performance Team
March 2009
Document version 2.1
Contents
PERFORMANCE TUNING OVERVIEW
Environment Considerations
32-bit and 64-bit Considerations
Hardware Multithreading (Hyper-Threading)
BASE PORTAL TUNING
Application Server Tuning
JVM Initial and Maximum Heap Size
JVM Heap Large Page
JVM Heap New Area Size
Additional SUN JVM Arguments
Session Timeout
Web Container Thread Pool Size
Security Attribute Propagation
VMM Context Pooling
ORB Service Tuning For z/OS
WebSphere Portal Services
Navigator Service
Registry Service
Cache Manager Service
Database Tuning
Datasource Tuning For DB2
DB2 Database Server Tuning
Oracle Database Server Tuning
Other Database Considerations
Directory Server Tuning
Web Server Tuning
Operating System Tuning
This white paper provides a basis for parameter and application tuning for IBM WebSphere
Portal for Multiplatform V6.1. Remember that both tuning and capacity are affected by many
factors, including the workload scenario and the performance measurement environment.
For tuning, the objective of this paper is not to recommend that you use the values we used
when measuring our scenarios, but to make you aware of those parameters used in our
configuration. When tuning your individual systems, it is important to begin with a baseline,
monitor the performance metrics to determine if any parameters should be changed and,
when a change is made, monitor the performance metrics to determine the effectiveness of
the change.
1
PERFORMANCE TUNING OVERVIEW
Tuning a WebSphere Portal environment involves tuning and configuring the various
systems and components of the environment. This chapter discusses some general
concepts and details the specifics of the configuration used in our measurement
environments. These specifics entail:
Configuring the application server and the resources defined for that application
server
Tuning the database(s) and database server
Tuning the directory server and its database
Tuning the web server and/or proxy server
Tuning the operating system and network
Tuning the WebSphere Portal services
When tuning your individual systems, it is important to begin with a baseline, monitor the
performance metrics to determine if any parameters should be changed and, when a
change is made, monitor the performance metrics to determine the effectiveness of the
change.
In addition to the tuning changes we made in our measurement environments, there are
some additional tuning options available which can improve performance in certain
circumstances; these will be discussed in a separate section.
WEBS PHE RE POR TAL V6 .1 TUNING GU IDE
2
Environment Considerations
Before beginning your install of WebSphere Portal you should consider how to use the
environment in order to achieve ideal performance. Topics to consider include:
• Choosing between 32-bit and 64-bit JVMs
• Use of hardware multithreading, also known as Simultaneous Multithreading or
Hyper-Threading.
3 2 - B I T A N D 6 4 - B I T C O N S I D E R A T I O N S
The choice of a 32-bit or 64-bit JVM involves some trade-offs. The key advantage of a 64-bit
JVM is its vastly larger address space. Heap sizes of 2.5GB or larger can be practical on
modern server systems. This can be a significant benefit for applications with high memory
demands.
A 64-bit JVM does have disadvantages as well. Machine instructions and memory
references in a 64-bit JVM are larger than in a 32-bit JVM. This means that Java objects,
which typically contain multiple memory references, are larger in a 64-bit JVM than
compared to a 32-bit JVM. Therefore a 64-bit JVM will need a larger heap than a 32-bit JVM
for the same population of objects.
The increased size of instructions and memory references imposes a second performance
penalty. They increase the demand on the memory subsystem of the system, causing more
cache misses and a higher demand for memory bandwidth. As a result, executing a set of
operations in a 64-bit JVM can be slower than executing the same operations in a 32-bit
JVM.
When considering a deployment of WebSphere Portal 6.1, consider the memory demands
your applications will have. If you expect a high demand for memory, the best performance
will probably come from a 64-bit JVM. On the other hand, if the memory demand is lower, a
32-bit JVM is likely to give superior performance.
H A R D W A R E M U L T I T H R E A D I N G ( H Y P E R - T H R E A D I N G )
Many modern processor architectures support hardware multithreading. For example, this is
known as Hyper-Threading (HT) on Intel processors and Simultaneous Multithreading
(SMT) on Power-series processors. Our experience is that using hardware multithreading
provides an improvement in capacity in all of the scenarios and platforms reported in this
report, so we would recommend its use on platforms where this is an option.
WEBS PHE RE POR TAL V6 .1 TUNING GU IDE
3
2
BASE PORTAL TUNING
The Base Portal Scenario covers user login, page navigation, and interaction with simple
portlets. Users can see a small set of pages, some of which are visible to all authenticated
users, with access to others based on their group membership.
We have also benchmarked a number of other scenarios, which focus on different functions
or use cases for WebSphere Portal. For example, there are scenarios which make use of
Web Content Management (WCM), and a scenario where users have access to thousands
of pages. While we have used different tuning to optimize performance for some of those
scenarios, the tuning is all based on the tuning done in the Base Portal Scenario.
In all of our measurement environments, we use a separate database server and directory
server, in addition to the WebSphere Portal server. We run these servers on separate
systems to avoid resource contention on the system running the WebSphere Portal server.
This helps improve the maximum capacity achievable.
WEBS PHE RE POR TAL V6 .1 TUNING GU IDE
4
Application Server Tuning
There are many aspects to configuring and tuning an application server in WebSphere
Application Server. We found that those aspects presented here were critical to a correctly
functioning and optimally performing WebSphere Portal in our laboratory environment.
For more details on tuning a WebSphere Application Server, see the Tuning Section of the
information center located at:
There are two methods to get to WebSphere Administrative Console.
• Start Server1 and use port 10001
1. In <WAS_root>/profiles/wp_profile/bin
2. ./startServer.sh server1
3. http://yourhost:10001/admin
• Start Portal and use port 10027
1. In <WAS_Root>/profile/wp_profile/bin
2. ./startServer.sh WebSphere_Portal
3. http://yourhost:10027/ibm/console
Customer ports can differ from the ports 10001 or 10027 mentioned on this page. To find out the
ports in use for your installation, look for ‘adminhost’ in <wp_profile
root>/config/cells/<cell_name>/nodes/<node_name>/serverindex.xml.
The following are settings based on our experience with the Base Portal workloads
described above:
J V M I N I T I A L A N D M A X I M U M H E A P S I Z E
Java Virtual Machine heap size: The value of the JVM Heap size is directly related to the
amount of physical memory on the system. Never set the JVM heap size larger than the
physical memory on the system.
How-To Set: In the WebSphere Administrative Console: Servers Application Servers
WebSphere Portal Server Infrastructure: Java and Process ManagementProcess Definition
Java Virtual Machine
- Initial Heap Size
- Maximum Heap Size
See JVM Max Heap Size Limits for further discussion.
See instruction on How to get to Admin Console
WEBS PHE RE POR TAL V6 .1 TUNING GU IDE
5
JVM MAXIMUM H E AP SIZE LIMITS
When setting the heap size for an application server, keep the following in mind:
Make sure that the system has enough physical memory for all of the processes to fit
into physical memory, plus enough for the operating system. When more memory is
allocated than the physical memory in the system, paging will occur, and this can
result in very poor performance.
We set the minimum and maximum heap sizes to the same values since we’re using
the gencon garbage collection policy available in 1.5 IBM JDK which avoids heap
fragmentation, this may not be the best choice if you plan to use a different garbage
collection. In our measurement runs, the system is under load for a relatively short
time (around 3 hours), and it is running with portlets which do not have large memory
requirements. When using portlets which have larger memory requirements, or for
continuous operation, it may be possible to reduce heap fragmentation by setting the
initial heap size to 320 megabytes.
After doing any tuning of heap sizes, monitor the system to make sure that paging is
not occurring. As mentioned above, paging can cause poor performance.
32-bit operating systems have an address space limit of 4GBytes, regardless of the
amount of physical memory in the system. This space limits the maximum size of
each individual process in the system. In addition, some operating systems restrict
the size of processes to be even less than this limit. Many versions of Windows limit
processes to 2GBytes in size; you can find more information at
http://support.microsoft.com/default.aspx?scid=kb;en-us;555223.
The address space limit further restricts the size of the JVM process. If the process
grows larger than the limit imposed by the operating system, it may terminate
unexpectedly.
Due to the demands on native memory by WebSphere Portal V6.1 and its underlying
components, we chose a maximum heap size of 1408MB in our Windows environments.
There is a balance between JVM heap and native memory, all of which must fit within the
2GB restriction in 32-bit Windows. 1408MB was the largest value we could use to
successfully measure all of our Windows configurations and workloads. If your application
has additional native memory requirements then you may need to choose a smaller
maximum heap size. For more information, see the WebSphere Application Server
information center.
On Solaris and zLinux, we use 3.5GB heap size in 64-bit environment.
Parameter
Initial and
Maximum
heap size
(Mbytes)
AIX
POWER5
1792 2048 3584 1408 3584 2048
WEBS PHE RE POR TAL V6 .1 TUNING GU IDE
Linux Solaris
6
Windows
2003
z/Linux z/OS
J V M H E A P L A R G E P A G E
Large pages can reduce the CPU overhead needed to keep track of heap. With this setting
we have seen 10% throughput improvement in our measurements.
This setting does improve performance on Windows, we did not set it for our measurements because
Portal doesn’t start reliably when –Xlp is set, sometimes it requires a system reboot to get the jvm to
start.
How-to Set: In the WebSphere Administrative Console: Servers -> Application Servers ->
WebSphere Portal -> Server Infrastructure: Java and Process Management -> Process Definition ->
Java Virtual Machine -> Generic JVM Argument. Add –Xlp.
Large pages are supported by systems running Linux kernels V2.6 or higher. See JVM
Large Page Tuning for AIX Operation System.
JVM LARGE P AGE TUNING ON AIX OP ER A TI N G SYSTEM
To use JVM Large Page, AIX operating system must be configured to support large pages.
How-To Set:
1. We use the following steps to allocate 4GB of RAM as large pages (16MB) . We chose
this amount based on having 8GB of physical memory in these systems. These values
may need to be adjusted on systems with different amounts of physical memory.
2. Add: -Xlp command-line option as described above.
3. In the WebSphere Administrative Console: Servers Application Servers
WebSphere Portal Server Infrastructure: Java and Process ManagementProcess
Definition-> Environment Entries New EXTSHM=OFF (note: When EXTSHM is
on it prevents use of large page).
4. Restart Portal Server. To verify if large pages are being used, run the AIX command
vmstat -l 1 5 and check the "alp" column which is the active large page used. It should
be a non-zero value if large pages are being used.
Parameter AIX
POWER5
Linux
Solaris
Windows
2003
z/Linux z/OS
JVM Heap
Large page
-Xlp -Xlp Not
Applicable
Not
Applicable
Not
Applicable
Not
Applicable
WEBS PHE RE POR TAL V6 .1 TUNING GU IDE
7
J V M H E A P N E W A R E A S I Z E
The Generational Garbage Collector introduced in Java 5.0 is efficient to Portal application JVM
memory management, and it is set as default by installation with the –Xgcpolicy:gencon commandline option. Use –Xmn to further fine tune the Java heap new area (Nursery).
The –Xgcpolicy:gencon option does not apply to Solaris.
How To Set: In the WebSphere Administrative Console: Servers Application Servers
WebSphere Portal Server Infrastructure: Java and Process ManagementProcess Definition
Java Virtual Machine -> Generic JVM Arguments:–Xmn256m
On the Solaris platform, we use the following Java HotSpot parameters to achieve optimum
performance.
Table 1: Additional Sun JVM Settings
Parameter Value
-server
-XX:MaxPermSize
-XX:+UseConcMarkSweepGC
-XX:SurvivorRatio
-XX:+UseParNewGC
Offers higher throughput than the "client" mode.
768m
Use concurrent mark-sweep collection for the tenured
6 By default concurrent low pause collector uses the
generation. The application is paused for short periods
during the collection; we found this collector works best
in Portal.
default, single threaded young generation copying
collector. Set this parameter to use parallel young
generation collector for new area.
Additional Information
-XX:ParallelGCThreads
5 Reduces the number of garbage threads. On the Chip
multithreading processor based system, we set the
threads no higher than one quarter of the hardware
threads. We also distribute the threads for 6 JVMs. Our
system has 128 virtual processors, we set a total of
(128/4)=32 GC threads across all the JVMs. So 5 or 6
GC threads per JVM.
-XX:+PrintGCDetails
Print more details at garbage collection. This does not
improve performance, but it provides additional
information related to garbage collection activity, which
is useful in tuning garbage collection.
-XX:+PrintGCTimeStamps
WEBS PHE RE POR TAL V6 .1 TUNING GU IDE
Print timestamps at garbage collection. See above.
8
S E S S I O N T I M E O U T
Session timeout: The default value of Session Timeout is 30 minutes. Reducing this
value to a lower number can help reduce memory consumption requirements, allowing a
higher user load to be sustained for longer periods of time. Reducing the value too low can
interfere with the user experience.
For Solaris, on a T5240 hardware, we used a much lower think time, 5 seconds, than was
used for other platform hardware measurement of 12 seconds. With a lower thinktime, fewer
vusers will result in a heavier load on the system. The reason we lowered the thinktime was
specifically to decrease the number of vusers required for this measurement. Our pool of
LoadRunner vuser licenses was inadequate to generate enough load with the higher think
time. With a shorter think time than is used in the other measurements, the duration of each
virtual user's interaction with the site is shorter by approximately 2 minutes. To compensate
for this, and keep the sessions live on the server for the same period of time, we increased
the session timeout by 2 minutes, to 12 minutes.
How To Set: In the WebSphere Administrative Console: Servers Application Servers
WebSphere Portal Container Settings: Web Container Settings Session Management
Session Timeout -> Set Timeout
W E B C O N T A I N E R T H R E A D P O O L S I Z E
Servlet engine thread pool size: Set this value and monitor the results. Increase this value if
all the servlet threads are busy most of the time.
How To Set: In the WebSphere Administrative Console: Servers Application Servers
WebSphere Portal Additional Properties: Thread Pools Web Container Thread Pool
- Minimum size threads - Maximum size threads
Parameter
Web Container
Thread pool
size
AIX
POWER5
50 50 50 50 50 50
Linux Solaris
Windows
2003
z/Linux z/OS
WEBS PHE RE POR TAL V6 .1 TUNING GU IDE
9
S E C U R I T Y A T T R I B U T E P R O P A G A T I O N
To reduce the Security Attribute Propagation (SAP) overhead, please use a custom property
'disable Callerlist'. If SAP is not used, you can disable that, to remove the extra overhead to
improve the login performance.
If Subject has not been customized, then there is no need to enable Security Attribute
Propagation. Security Attribute Propagation can add extra overhead due to some extra
processing that is required. However, there are certain configurations where performance
might be better with security propagation enabled due to reduction of remote registry calls.
See the WebSphere 6.1 InfoCenter (search for 'security attribute propagation') for a
discussion of when propagating security attributes is desirable. If you want to enable SAP
for functional reasons, you can improve the performance with CallerList tuning mentioned
below.
These settings apply to all platforms.
How to Set: In the WebSphere Administrative Console: Security->Secure Administration,
Applications, and Infrastructure -> Custom properties ->
Number of open connections to maintain to
LDAP server.
maxPoolSize
20 0.
A value of 0 allows the pool to grow as large
as needed. If access to the LDAP server is
shared by many systems, this setting may
allow an excessive number of connections to
the LDAP server; in such a case, set the
maximum pool size to a value appropriate to
your environment.
O R B S E R V I C E T U N I N G F O R Z / O S
In the WAS Admin Console, set the ORB Service to be "pass by reference" instead of
"pass by value" (default) for both server1 and WebSphere_Portal
How to Set:
- Servers Application Servers server1 Orb Service
- check box for "Pass by Reference"
- Servers Application Servers WebSphere_Portal Orb Service
- check box for "Pass by Reference"
WEBS PHE RE POR TAL V6 .1 TUNING GU IDE
11
WebSphere Portal Services
WebSphere Portal has a number of configurable “services”; each service has several
parameters available to it. This section describes which services we tuned, the tuning values
used, and the rationale for those changes.
3. run <wp_profile_root>/ConfigEngine/ConfigEngine.sh update-properties
The changes should appear on WAS Console -> Resource Environment Providers ->
WP_xxxService -> Custom properties
N A V I G A T O R S E R V I C E
The navigator service manages the content model for unauthenticated users, which controls
the pages those users are able to see. This content model is periodically reloaded by
WebSphere Portal; new pages which are visible to unauthenticated users will not be
available until the next reload occurs. Our environment assumes a low rate of change for
pages, so we set this reload to only occur once per hour. In a production environment where
new pages for unauthenticated users are rarely created, setting this reload time to an hour
or more will give better performance. In a test or staging environment where updates to
unauthenticated pages need to be seen more often, a lower reload time is more appropriate.
This service also controls the HTTP cache-control headers which will be sent on
unauthenticated pages. While our environment did not exploit HTTP page caching,
increasing these cache lifetimes in a production environment can reduce load on the portal.
For more discussion of the use of HTTP cache-control headers with WebSphere Portal,
refer to the “Caching” section of the “Tuning” topic in the WebSphere Portal V6.1 InfoCenter.
Table 4: Navigation Service Settings
Parameter
public.expires (seconds)
public.reload (seconds)
remote.cache.expiration
(seconds)
WEBS PHE RE POR TAL V6 .1 TUNING GU IDE
NavigatorService.properties
Default
Value
60 3600 Determines cache expiration time for caches
60 3600 Determines cache expiration time for the portal
60 28800 Determines cache expiration for caches outside
Value
Used
outside of WebSphere Portal and for
unauthenticated portal pages only. If the setting
remote.cache.expiration is also set to a value
greater than or equal to 0, the smaller one of the
two values is used.
internal cache for unauthenticated pages
of portal server for authenticated as well as for
unauthenticated pages
12
Definition
R E G I S T R Y S E R V I C E
WebSphere Portal maintains information about many resource types in its databases. Some
of these resources are replicated into memory for faster access; this is provided by the
registry service. This replicated information will be periodically reloaded from the database,
thus picking up any changes which may have been made on a peer node in a clustered
environment.
The registry service allows configuring a reload time, in seconds, for each type of data which
it is managing. In a production environment, we expect this type of information changes very
infrequently, so we used very long reload times for the registry service. A full list of the types
of information managed by the registry service is in table 4.
Table 5: Registry Service Settings
RegistryService.properties
Parameter
Default
Value
Value
Used
Definition
default.interval 1800 28800 Reload frequency for any object types not
explicitly specified in the file.
bucket.application.interval 600 28800 Reload frequency for application definitions
bucket.portlet.interval 600 28800 Reload frequency for portlet definitions
bucket.theme.interval 3000 28800 Reload frequency for theme definitions
bucket.skin.interval 3500 28800 Reload frequency for skin definitions
bucket.client.interval 19000 28800 Reload frequency for client definitions
bucket.markup.interval 20000 28800 Reload frequency for markup definitions
bucket.transformation
application.interval
600 28800 Reload frequency for transformation
application definitions
bucket.transformation.interval 600 28800 Reload frequency for transformation
definitions
WEBS PHE RE POR TAL V6 .1 TUNING GU IDE
13
C A C H E M A N A G E R S E R V I C E
The cache manager service in WebSphere Portal is used to cache a wide variety of types of
information in memory. These caches are somewhat similar to the registries maintained by
the registry service, as each type of information gets its own cache. The key differences are:
The information stored in the cache manager service’s caches tends to be more
dynamic than the information stored in the registry service’s registries.
The caches used by the cache manager service are limited in size, and entries will
be discarded when the caches become full. The registries used by the registry
service are not size-limited; they contain all entries of the specific data type.
Expiry times are managed individually for each entry in the cache, managed by the
cache manager service. In contrast, when the reload time is reached for a registry,
the entire contents of that registry are reloaded.
Each cache has several configurable options. A full discussion of these options, along with a
list of the caches in WebSphere Portal V6.1, is given in chapter 2. Table 5 lists the changes
which we made to the cache manager service configuration file. Size values are specified in
“number of objects” and lifetime values are specified in “seconds”.
Multiple databases are used to hold information in WebSphere Portal V6.1. We used six
separate DB2 databases, each representing a separate database domain and having their
own datasources. These are:
Table 7: DB2 Database Domains
Database Database name Datasource name
Release
Community
Customization
Feedback
Likeminds
JCR
All datasources are configured in a similar manner by logging on to the WebSphere
Application Server administrative console. For the prepared statement cache size, the path
is Resources → JDBC Providers → provider name → Data Sources → datasource name.
The provider name and datasource name are based on the names selected for that
database during the database transfer step. Look for the parameter Statement cache size.
For the connection pool settings, the path in the WebSphere Application Server
administrative console is Resources → JDBC Providers → Provider name → Data Sources
→ Datasource name → Connection Pools. The settings are Minimum connections and
Maximum connections.
The default settings were used for the prepared statement cache size, and connection pool
minimum and maximum sizes.
D B 2 D A T A B A S E S E R V E R T U N I N G
WebSphere Portal V6.1 uses database servers for core functionality. In our measurement
environment, we used DB2 database server for the Portal application. The LDAP server,
IBM Tivoli Directory Server also included a DB2 database as a repository, but it is largely
unseen and was operated as an out of box configuration.
We recommend using a remote database server for the largest capacity. For our
measurements we used IBM DB2 Enterprise Edition V9.1 fixpack 5 as our database server.
WebSphere Portal V6.1 uses the concept of Database domains to designate either groups
of tables belonging to one domain, or even entirely separate databases to store the data
specific to each domain.
WEBS PHE RE POR TAL V6 .1 TUNING GU IDE
15
We built six separate databases within one database server to house the tables and data
needed to support each domain. For the Base Portal and Many Pages measurements, the
Release domain is the primary database being exercised.
The databases and related domains supported by Portal V6.1 are:
1. Release (release domain). This is the primary database domain used by the Base
Portal and Many Pages Scenarios.
2. Customization (customization domain). This database receives some light traffic in
our scenarios.
3. Community (community domain). This database receives some light traffic in our
scenarios.
4. JCR (JCR domain). JCR database is used heavily in WCM (Web Content
Management) Scenario. This database receives light traffic in all other scenarios
measured in our Benchmark report.
5. Likeminds database, used for Likeminds enabled systems. This database is not used
in the scenarios measured in our Benchmark report.
6. Feedback database, used by the feedback subsystem. This database is not used in
the scenarios measured in this report.
DB2 ON AIX S E T U P
We configure our DB2 database on AIX using the following setup,
• Set the filesystem which will hold the Portal databases to be a Enhanced
Journal File System (JFS2) because a large file system is limited to 64GB.
• Turn on concurrent I/O (CIO) for Enhanced Journal File System as this improves
performance.
To enable CIO, use the following command to mount the database fileset.
Mount –o cio /portaldb
• Increase AIX maximum number of processes per user to 4096.
The default 500 processes per user is too low for database server, we increase
it to 4096 in our AIX environment. To increase it,
chdev –l sys0 –a maxuproc=’4096’
WEBS PHE RE POR TAL V6 .1 TUNING GU IDE
16
While the Portal databases are configured for high capacity performance, various tuning
adjustments may be necessary from time to time. Typically these tuning needs are based
on the volume of database traffic and the size of table populations.
Our database tuning settings is documented in the Portal Info Center under ‘Creating
Remote Database’ section.
DB2 ON Z/OS S E T U P
After transferring the database tables, first Identify what tables need to be reorganized.
Perform a re-org check to improve performance.
• Run the EJPSDBTC job after database transfer
.
This job contains the DB2
check and RUNSTATS utility for the JCR, Likemind and Feedback database.
• For details on re-org DB2 database, visit WebSphere Portal Info Center.
Create a Re-org job to re-org all table spaces in WPSDBJCR database.
RECOMMENDED D AT AB ASE MAIN TEN A N C E FOR DB2 LUW
Two of the database attributes, which DB2 relies upon to perform optimally, are the
database catalog statistics and the physical organization of the data in the tables.
Catalog statistics should be recomputed periodically during the life of the database,
particularly after periods of heavy data modifications (inserts, updates, and deletes)
such as a population phase. Due to the heavy contention of computing these statistics,
we recommend performing this maintenance during off hours, periods of low demand,
or when the portal is off-line. The DB2 runstats command is used to count and record
the statistical details about tables, indexes and columns. We have used two techniques
in our environment to recompute these statistics. The form we recommend is:
db2 runstats on table tableschema.tablename on all columns with
distribution on all columns and sampled detailed indexes all
allow write access
These options allow the optimizer to determine optimal access plans for complex SQL.
A simpler, more convenient technique for recomputing catalog statistics is:
db2 reorgchk update statistics on table all
Not only does this command count and record some of the same catalog statistics, it
also produces a report that can be reviewed to identify table organization issues.
However, we have found instances where this produces insufficient information for the
WEBS PHE RE POR TAL V6 .1 TUNING GU IDE
17
optimizer to select an efficient access plan for complex SQL, particularly for queries of
the JCR database.
We have determined a technique that has the same convenience of the reorgchk
command and provides the detailed statistics preferred by the optimizer.
db2 -x -r "runstats.db2" "select rtrim(concat('runstats on table
',concat(rtrim(tabSchema),concat('.',concat(rtrim(tabname),' on all
columns with distribution on all columns and sampled detailed indexes
all allow write access'))))) from syscat.tables where type='T'"
db2 -v -f "runstats.db2"
The first command is used to create a file, runstats.db2, which contains all of the
runstats commands for all of the tables. The second command uses the db2 command
processor to run these commands.
To determine which tables might benefit from reorganization, we use the command:
db2 reorgchk current statistics on table all > "reorgchk.txt"
For those tables which require reorganization, we use the command:
db2 reorg table tableschema.tablename
to reorganize the table based upon its primary key.
You should also ensure that your database servers have adequate numbers of disks.
Multiple disks allow for better throughput by the database engine. Throughput is also
improved by separating the database logs onto separate physical devices from the
database.
You should ensure that the database parameter MaxAppls is greater than the total
number of connections for both the datasource and the session manager for each
WebSphere Portal application server instance. If MaxAppls is not large enough, you will
see exceptions in your connection pools.
You should use System Managed Storage (SMS) for temporary table spaces to benefit
complex SQL which require temporary tables to compute their result sets. This saves
time in buffer writes and improves disk utilization.
Database performance is very important for obtaining good performance from
WebSphere Portal. The maintenance tasks and practices mentioned here were found
to be critical to the performance and correct operation of WebSphere Portal in our lab
environment. Additional database maintenance and tuning may be needed in your
production environments. For further information on DB2 administration and tuning,
refer to the DB2 Information Center.
WEBS PHE RE POR TAL V6 .1 TUNING GU IDE
18
O R A C L E D A T A B A S E S E R V E R T U N I N G
WebSphere Portal V6.1 uses database servers for core functionality. In this measurement
environment, we used Oracle database server for the Portal application. The LDAP server,
IBM Tivoli Directory Server included a DB2 database as a repository.
PLANNING FOR O R AC L E ENTERPRISE E DI TI O N DATABASE
For our Solaris platform measurements we also used Oracle 10g R2 as our database
server. WebSphere Portal V6.1 uses the concept of Database domains to designate either
groups of tables belonging to one domain, or even entirely separate databases to store the
data specific to each domain.
On Oracle, we built a single database and create Oracle users to own the tables and data
needed to support each domain. The domains are listed in PortalDatabaseDomain, above.
For the Base Portal measurements, the Release domain is the primary database being
exercised.
A well designed database can save a lot of trouble later down the road, and improve
database performance. We recommend that you refer to the Oracle Administrator’s
Guide to help you make informed database design decisions. Here are the key choices
we have implemented in our Oracle database.
• To avoid I/O contention and allow for better throughput, you should ensure your
database server have adequate number of disks. Our database is on seven stripped
disks.
• For better management and performance of storage structures, Oracle-Managed
Files are used for database, as well as redo logs, and control files.
• Database block size: 8k
• The following tablespace sizing was required to support roughly a medium sized
Portal, with 100,000 authenticated users, approximately 180 installed portlets and
220 pages, which the load generally consisting of database read operations. We
recommend monitoring your tablespace sizing and growth on a regular basis. We
used DBCA to create database with the following Tablespace size:
o SYSAUX: 800MB
o SYSTEM: 800MB
o TEMP: 800MB
o UNDOTBS: 1024MB
o USERS: 2048MB
• Redo log groups: 500MB each.
WEBS PHE RE POR TAL V6 .1 TUNING GU IDE
19
ORACLE O N AI X S ET U P
We configure our Oracle database on AIX using the following setup,
• Set the filesystem which will hold the Portal databases to be a Enhanced
Journal File System (JFS2).
• Turn on concurrent I/O (CIO) for database filesystem as this improves
performance. Do not enable CIO for Oracle product filesystem, ie, /u01, as
Oracle could fail to start.
To enable CIO, use the following command to mount the database fileset.
Mount –o cio /u02
• Increase AIX maximum number of processes per user to 4096.
The default 500 processes per user is too low for database server, we increase
it to 4096 in our AIX environment. To increase it,
chdev –l sys0 –a maxuproc=’4096’
• Enable AIX async I/O, and increase MinServer to 5.
• We also set in oracle user’s profile as Oracle Installation Guide for AIX
recommends,
AIXTHREAD_SCOPE=S
ORACLE ENTERP R I S E EDITION DATABASE P AR AM ETER TUNI NG
Database performance is very important for obtaining good performance from WebSphere
Portal. Below is a list of tuning applied on our Oracle database server with the alter system
command. Additional database tuning maybe needed in your production environments. For
further information on Oracle database tuning, refer to Oracle Performance Tuning Guide at
Optimizer statistics are a collection of data about the database and the objects in the
database, these statistics are used by the query optimizer to choose the best execution
plan for each SQL statement. Because the objects in a database can be constantly
changing, statistics must be regularly updated so that they accurately describe these
database objects, particularly after periods of heavy data modifications (inserts,
updates, and deletes) such as a population phase. We have used the following
commands in our environment to recompute these statistics:
execute
dbms_stats.gather_database_stats(dbms_stats.auto_sample_size,
method_opt=>'FOR ALL INDEXED COLUMNS SIZE AUTO',cascade=>TRUE);
O T H E R D A T A B A S E C O N S I D E R A T I O N S
WebSphere Portal maintains some information about users in its database tables, which
grow when a user first logs in. We were interested in the steady-state performance of
WebSphere Portal, not the performance of a user’s first login to the site. Therefore our
performance evaluates after all users logged in at least one time.
One of the most important database tuning factors is bufferpool sizing. It is important to
evaluate the database's physical versus logical reads and size the bufferpools to achieve as
much as a 95% logical read rate if possible.
WEBS PHE RE POR TAL V6 .1 TUNING GU IDE
21
Directory Server Tuning
Our measurements used IBM Tivoli Directory Server versions 6.0 as the directory server.
These products use a database for storing user information; DB2 Enterprise Server was
used for this database in our environment. This database is typically located on the same
system as the directory server. If your workload involves creating, updating, or deleting
users, then database maintenance described above may be needed on this database.
The following table shows the tuning values used for the directory servers in our Solaris
Base Portal Scenario measurements
How-to-Set: These values are in the file /opt/IBM/ldap/V6.0/etc/SchemaV6.0/ibmslapd.conf. You
must restart the LDAP server after changing these values.
The IBM Tivoli Directory Server uses IBM DB2 as the database server. The database
instance and alias are named IDSLDAP. We applied the following tuning to this database:
db2 “update db config for idsldap using dbheap 4800”
db2 “update db config for idsldap using num_ioservers 10”
db2 “update db config for idsldap using num_iocleaners 5”
db2 alter bufferpool LDAPBP size 3690
db2 alter bufferpool IBMDEFAULTBP size 88500
WEBS PHE RE POR TAL V6 .1 TUNING GU IDE
22
Web Server Tuning
We used IBM HTTP Server 6.1 in our measurement environment. The cluster configuration
and the Solaris configuration has a remote web server, find the tuning in Web Server Tuning
in Cluster Tuning section. All other configurations have the web server running on the same
system as the WebSphere Portal application server. If, during your monitoring, you notice
insufficient processor capacity on the system when running the web server and the portal
application server on a single system, consider separating the servers onto different
systems. We used the following tuning on our web servers:
Table 10: Web Server Tuning
Parameter AIX
POWER5
KeepAliveTimeout
ThreadsPerChild
MaxKeepAliveRequests
5 5 5 5 This value is less than the think
25 25 2000 25 The higher number of threads per
0 0 0 0 Selecting 0 lets an unlimited
Linux
Windows
2003
z/Linux
Additional Information
time defined in our scripts to
ensure that testing is
conservative. Each user is
assumed to open a new TCP
connection for each page view.
However, in a live environment, it
can be helpful to increase the
KeepAlive Timeout. A higher
timeout value can increase
contention for HTTP server
processes, if you are running out
of HTTP processes, decrease
this value.
child on Windows is due to a
different process model for IHS
on Windows.
number of requests on a single
TCP connection.
MaxRequestsPerChild
StartServers
Access logging
0 0 0 0
2 2 N/A 2
off off off off This was turned off by
commenting out the following
configuration line:
CustomLog
/usr/HTTPServer/logs/access_log
common
ThreadLimit
ServerLimit
25 25 2000 25
150 120 N/A 180 Set it
WEBS PHE RE POR TAL V6 .1 TUNING GU IDE
23
MaxClient/ThreadsPerChild.
MinSpareThreads
MaxSpareThreads
MaxClients
25 25 N/A 25
3750 4500 N/A 4500 Set it same as MaxClients.
3750 4500 N/A 4500
We also enabled the server-status module so that we could monitor the number of
running and available Web server processes. This enables appropriate tuning of the
MaxClients and ThreadsPerChild parameters.
We did additional Web Server tuning in Web 2.0 Scenario. See Web 2.0 section for details.
Note: For z/OS, no Web Server was configured.
WEBS PHE RE POR TAL V6 .1 TUNING GU IDE
24
Operating System Tuning
In any high-load environment, the network must be closely monitored to ensure that its
performance is acceptable and consistent. Note that, the following is not to suggest that all
network parameters are set to these values, but merely make the reader aware that the
network is also an entity in the performance environment and bottleneck resolution process.
A I X
NETWORK T UNI N G
Use smitty->Performance and Resource Scheduling->Tuning Kernel and Network
Parameters->Tuning Network Option Parameters->Change/Show Current Parameters to
change. These will take effect immediately, improving the network layer performance in high
volume environments.
Then remember to ‘Save current parameters for Next Boot’.