Search

About Me

I am the "Lotus Technology & Productivity Advisor" for IBM Asia Pacific. I'm based in Singapore.

Visitors to wissel.net

My (business) network meberships

Darwin at work. Business networks sprout like pimples on a teenager's face. Only few will survive, this are my bets:
Ryze Business Network
OpenBCXING
LinkedIn
Orkut
Friend-of-a-friend
4friends.net
Rotary Tanglin

Gaping Void

GTD

MiscLinks

« But I want to play Linux, Daddy! | Main| Santosh - Composite Hero! »

Stress-Testing Lotus Domino applications with JMeter

QuickImage
There is a current discussion going on if and how to use webQueryOpen Agents. Jake has some excellent examples what you can achieve, while Michel didn't find performance differences between an embedded view and a WQO agent. I was actually not surprised, since a single user would show any difference. My suspicion is that the results will change once you put a server under load. So I was looking around for a tool that anybody could use to run a little test (so Rational Performance Tester was out of the picture).
The search was short. Apache offers a tool called JMeter. I don't know how it stacks up against other frameworks and/or tools, but it does everything we need for the little test. What is also quite nice about JMeter: there is a Wiki and plenty of online information how to use it. Once you download the binaries and expand them into a directory, you are good to go.
JMeter is started as Java application using the jmeter.bat file. You also have the option to run a command-line or even start remote instances. To work with JMeter successfully you need to understand a few concepts. JMeter is hierarchically organized. JMeter executes TestPlans, TestPlans contain ThreadGroups and ThreadGroups contain Tests. A Test consists as a minimum of one or more sampler. You also want to add a listener to show your result graphically or as table. You have a lot of options to configure and script, so it will take quite a while until you can take advantage of all the functionality. However the good news: it takes only a few minutes to configure a simple load test like "Hammer this URL with 1000 users".

These are the steps:
  1. Start JMeter
  2. Right click on Test Plan: add Thread Group. Specify the number of users (a.k.a threads) and the ramp-up time. This is the time how long JMeter will take to open all the treads. Also you can specify the number of loops to run.
  3. Right Click on the Tread Group and add a "HTTP Request HTTP Client" Sampler. Define the web server, port and relative URL (typically "/myNSF.nsf?OpenForm,  ...?OpenDocument or ...?EditDocument").
  4. Right Click on Test Plan and add some listeners like the "Summary Result" or "Graph Result"
  5. Save the file (Ctrl+S)
  6. Run the plan (Ctrl+R)

That is all. You can look at the results in a tabular or graphic form, depending on the listeners you defined. Next step: run it against your favorite WQO.

Some screen shots:
A picture named M2

Specify the load to be generated:
A picture named M3

URL settings:
A picture named M4

The test results
A picture named M5

Comments

Gravatar Image1 - JMeter is definitely one cool software. I recently use it to stress test Websphere Portal Server. We get some quite interesting results. Highly recommended for those who do not have budget to invest in software like Rational Tester.

Gravatar Image2 - Stephan, you are the wizard. I can't believe I haven't heard of using JMeter against a Domino app. Thanks !

Gravatar Image3 - Brilliant! Thanks for sharing!!

Gravatar Image4 - Good (and simple) explanation! Didn't know it was that easy to set up a basic stress test.

I've played around with jMeter and configured it to also simulate user logins (when using session authentication on the Domino server). Here's how to set it up:

- Add a "HTTP Cookie Manager" config element to the thread group (via add -> config element). This will automatically "record" any cookies received.
- Add a HTTP Request that simulates the login: set the path to "/names.nsf?login", the method to "POST", disable "Redirect automatically" and enable "Follow Redirects". Add the following parameters: Username and Password. Set the values of these parameters to the credentials you'd like to login with.
- Any HTTP requests after the login will automatically be performed as the authenticated user.

You should perform a final GET request to /names.nsf?Logout to logoff the user(s).

Post A Comment

:-D:-o:-p:-x:-(:-):-\:angry::cool::cry::emb::grin::huh::laugh::rolleyes:;-)

Disclaimer

This site is in no way affiliated, endorsed, sanctioned, supported, nor enlightened by Lotus Software nor IBM Corporation. I may be an employee, but the opinions, theories, facts, etc. presented here are my own and are in now way given in any official capacity. In short, these are my words and this is my site, not IBM's - and don't even begin to think otherwise. (Disclaimer shamelessly plugged from Rocky Oliver)

© 2003 - 2008 Stephan H. Wissel - all rights reserved as listed here: Unless otherwise labeled by its originating author, the content found on this site is made available under the terms of an Attribution/NonCommercial/ShareAlike Creative Commons License, with the exception that no rights are granted -- since they are not mine to grant -- in any logo, graphic design, trademarks or trade names of any type.

Get Firefox Use OpenDNS