Archive

Archive for March, 2009

Tempo Tasks List Performance, Load Testing and some Ruby scripting

March 12, 2009 Leave a comment

A customer reported some performance degradation with the task list under a bit of load, (~500 active tasks per user), so decided to have a quick look and boost off a bit the different components involved in sorting, displaying and all the jazz that the Tempo task list is doing.

graphic24x7

So, a few quick ruby scripts later, we’re ready to unleash a nice crafted bomb on the Workflow.

First one, create_tasks.rb, allows you to load as many tasks as you want, most of the parameters are in the script, you can modify them at will. The default is to load a mere 5000 active tasks and I think this is going to be enough for the purpose of this post. Below is the time it took on a tomcat install, with persistence to derby, (worst case scenario).

./create_tasks.rbĀ  60.02s user 18.83s system 60% cpu 2:09.49 total

That’s almost 100 tasks created per second.

Now I can log in with the default Tempo account in the task list, and look at all the loaded tasks:

picture-3We do have the 5000 items, and believe me or not, (for now), the page loaded pretty quickly.

There is a threaded ruby client, which sends requests to the server.

With 20 clients in parallel accessing each their *5000 tasks* task list, we got a sensible curve:

timeperclients1

Horizontally is the time since the start of the test, so all in all, it took 200 seconds for 20 clients to retrieve 20 times their task list.

Last, the script to delete the tasks, to remove all those annoying activity tasks we’ve created, and the server is back to its original freshness.

Now if some people are ready to use those scripts to test on different database, with remote clients, I would love to get the results.

Voila !

Advertisements
Categories: Uncategorized