WPS Portal project

Monday, July 14, 2008

Portal stress test

Some people asked me to share my experience about portal stress-testing.
I have done only a few stress test campains (on WPS v5), but here are the some of the main things that you should consider to properly design and conducts your tests:


1/ Estimate the load:
First, try to estimate the load that your portal will have to support. What is very important is the number of concurent users (users which will be working simultaneously), and the corresponding number of hit per seconds (transactions) that will be performed by this audience. You should think about the load at pic hour (i.e during the period of the day when user's activity will be the most important), to size the stress test architecture and especially the number of load injectors you will need.


2/ Define the use_cases:
You have to think about the way users will use your site and how they will navigate between pages (both in anonymous and authenticated mode). My advice is don't take too much time on this phase: define the 4 or 6 main scenarios only (because the more scenario you define, the more the scripting effort will be important). Moreover, it is always difficult to know in advance what will be the real behavior of users on your site.
To identify the use-cases, you can identify the most useful features of your portal: for instance (in an enterprise intranet context) most of the time people are using the directory search, or looking at the stock quote, or using the search engine...so you should focus on these features when specifying the use-cases.

Moreover, if you suspect some Portlets not to be perfectly implemented, and you know that they will have to support a big load, then you can define simple stress test use-case dedicated to these components.

Finally, you will also have to define the ramp up period, that is the way you will have to inject the load (i.e the growing number of users that you want to simulate during a period of time). There are several way to define the ramp up (you should refer to other articles on the web for more informations).


3/ Define the user's profile:
If you have implemented personalization (based on user attributes) or used embedded UserGroups membership for security, you should consider defining a user testing population with distinct profiles (because personalization treatments can affect server performances).


4/ Choose the testing tool:
Depending on your needs, you will have to choose a tool between editor's or open-source solutions. I think open-source solution (like openSTA, or JMeter) can address most of the project needs.
But you will have to make sure that the tool will be able to support the load you want to simulate (hardware could be a limitation, if you need a lot of injectors). Also, you will have to check that the testing tool is able to adapt its script to your portal context (the format of the portal URL might be difficult to analyze, or you might have developed a custom theme with javascript or DHTML which might not be compatible with the way the testing tool works).


5/ Planning
Launching a stress-test phase should be considered as a small project within the project (don't under-estimate the time it will take). You will have to specify test use-cases, develop test scripting, install the testing solution injectors, run the test and finally analyze the results, and most likely you will have to do some tuning.You can plan for 2 month approx for the full load testing phase (1 month for the specification and script dev phase, and 1 month for the test itself, and analysis). The tuning phase duration might of course vary...

In term of ressources: you will need 1 developer which is familiar with the scripting development + 1 developer which is able to modify and optimize the code.
In most cases, you will also need to monitor database and LDAP response under load, and possibly do the tuning actions to improve performances of these components. So a LDAP or DBA will likely be needed, as well as a portal architect (as I said, this should be considered as a small project within the project).


6/ Test a stable version
If you have to modify the portal theme (HTML code) during the optimization phase, be aware that this might impact your testing script (most of the time scripts use the HTML DOM to find a resource in the code, like the URL it has to follows in the scenario ; so one HTML code update can break your scripts). If possible, modify only 1 component at a time (otherwhise you will not be able to know what component modification was responsible for improvement or degradation of performances).


7/ Stress-test analysis
Stress-test result analysis might be difficult, especially if you discover several problems with the same use-case. A good way to find what is wrong is to isolate each component (e.g Portlet) independently and to do a specific test. By example, if you suspect a bug in the theme, then do a test with an empty portal page (without portlet).


8/ Tuning phase
For the tuning phase, my advice is to work with specialist of each component (Database, LDAP, code developer, portal architect). You will save a lot of time if you have the proper expert at the right time. Especially with WPS v6, lots of JCR components (like WCM) rely on the database (so DB administration will likely be required for index creation, etc).
Once again, try to modify only 1 parameter at a time (to clearly identify the result of the optimization).

Finally, if you use caching, consider using a caching strategy at "the highest level" (i.e the web server, or caching HTML output of your Portlet in memory), because this will lead to better performances improvements.

Hope this will help, wish you good luck for your stress test :-)

Friday, July 04, 2008

Good news for PDM users (IBM will help to migrate to WCM or Quickr):

To follow one of my previous post PDM is dead, here is a good news for PDM users:
Even if in WPS v6.1 IBM will not support the PDM tool anymore, IBM plan to provide migration tool to help people to migrate their documents either to WCM or PDM:

Here is what is stated in this recent presentation from Stefan Liesche (IBM):


We (IBM) plan to help customers with PDM data:

– A migration utility will be made available on Passport approximately 90 days from
eGA of Portal 6.1

– We are considering two scenarios
– Migration from PDM to Quickr
– Migration from PDM to WCM (for customers who use PDM to populate WCM)

We are evaluating new integration options between WCM and Quickr in a future WCM release.
Consider each customer situation and engage product management as needed to determine the right time to make the move.

Documentation of the changes will happen in real time on the Portal 6.1 Wiki – Initial round of doc will be released with 6.1

For more details : see

Thursday, July 03, 2008

IBM WPS Portal 6.1 GA is available

You can review download instruction from here

WebSphere Portal 6.1.0.0 detailed system requirements

Link to WebSphere Portal V6.1 Quick Start Guide

Wednesday, July 02, 2008

How to slim down a WPS portal development server

During a training session one attendee asked the trainer if there is a list of IBM Portlet that could be uninstalled to improve performances of a WPS development server (to reduce memory consumption and speed up portal restart).
The trainer was not able to answer but I remembered an IBM Portal conference where the speaker provided us such a list (Walter Haenel / Lotusphere 2008):

These Portles can be deinstalled if not used, without any impact to the system.
No system functions nor configuration actions depend on the availability.

com.ibm.wps.portlets.frequentusers.FrequentUsers
com.ibm.wps.portlets.welcome
com.ibm.wps.portlets.xslt
com.ibm.portlets.cpp.calendar
com.ibm.portlets.cpp.mail
com.ibm.wps.portlets.inotes2.WpsiNotes2Portlet
LotusDocViewer.50d4aea48f06001714ddae8d9778c9f0
com.ibm.wps.portlets.domdoc.WpsDomDocPortlet
com.ibm.wps.portlets.notes.LotusNotesMVCPortlet
com.ibm.wps.portlets.quickplace.WpsQPController
LotusMyTeamWorkplaces.50d4aea48f06001714ddae8d9778c9f0
lotus.web.conferencing
PortletApp_com.ibm.wps.portlets.sametime.WIHPortlet
com.ibm.wps.portlets.mylist.MyListPortlet
com.ibm.wps.portlets.reminder
com.ibm.wps.portlet.Newsgroup_1:1
1308807024
com.ibm.wps.banner
com.ibm.portlets.exchange3
com.ibm.portlets.exchange2003
com.ibm.wps.portlets.worldclock
com.ibm.wps.quicklinks
com.ibm.wps.servletinvoker
com.ibm.wps.JSPServer
com.ibm.wps.fileserver
1331917905
com.ibm.wps.csv
com.screamingmedia.openportlet.wps.WPSPortlet.release.Dazzle3
com.ibm.wps.portlets.stlist.StListPortletController

Note : in our case, an error occured when trying to uninstall the following Portlet "com.ibm.wps.portlets.stlist.StListPortletController" (problem with database constraint). So it
has not been uninstalled.


From my experience, to improve performances, you can also perform the following tasks:

- Set the WCM option to "Subscriber-only" (connect.cfg for pre-v6 version, and WCMConfigService.properties for v6), parameter deployment.subscriberOnly=true.

For more details see : Understanding syndication in IBM Workplace Web Content Management

- Disable the JCR text search (which rebuild jcr indexes automatically) : set the jcr.textsearch.enabled=false (WebSphere\PortalServer\jcr\lib\com\ibm\icm\icm.properties).

Please note that I'm not sure of the exact role of this process, but I think it can be disabled on a development server.
For more details: see


- Reduce as much as possible the volume of WCM content (in v5, the rebuild of WCM indexes during server restart could take a very long time !)

- Another best practice for WCM is to run the clean-up tools (especially the Member fixer tool). See v6 infocenter for more details