Stress-Testing Lotus Domino applications with JMeter
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:
- Start JMeter
- 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.
- 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").
- Right Click on Test Plan and add some listeners like the "Summary Result" or "Graph Result"
- Save the file (Ctrl+S)
- 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:
Specify the load to be generated:
URL settings:
The test results
- 





Comments
Posted by William Beh At 17:30:12 On 08/17/2007 | - Website - |
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).
Posted by Mark Leusink At 00:47:02 On 10/12/2007 | - Website - |
Posted by jack dausman At 23:11:44 On 08/17/2007 | - Website - |
Posted by Jake Howlett At 22:05:19 On 08/20/2007 | - Website - |