Stress testing the OIM web (UI) layer

The default configuration in Oracle IDM reserves 20 threads dedicated for serving front end (UI) requests. This basically means that the application server has a pool of 20 threads which it can utilize to serve users who are accessing OIM via the web console (/identity or /sysadmin).

In case of Weblogic, this is how it is configured


What typically happens is

  • User accesses the OIM URL e.g. http://oimhost:14000/identity
  • Browser sends a simple (HTTP) GET request with some added HTTP request headers and other info of course
  • The application server (e.g. Weblogic) picks up a thread from the pool and uses it to process the request
  • OIM responds back and the browser renders the login page and the user is delighted .. well most of the time! 😉
  • After the request is served, the thread on the application server is sent back to the pool (remember that pool of 20 threads I just mentioned about) and thus it can be reused by another request

I just wanted to play around with this and executed some simple tests via JMeter

Note: This is merely a front end/UI stress testing – not related to business logic


Well there are a few configurations you would need to setup in JMeter – they are pretty much standard and have nothing to do with OIM in specific

  • Set up a Thread Group (represents users)
  • Configure HTTP requests e.g. configure the OIM URL, context path, port (again – pretty basic)
  • Configure Result viewer – tree or table mode. This is for real time tracking of results

The JMeter configuration (.jmx) file is available for your reference – just import it in JMeter and you should be able to figure out the exact configuration parameters and tweak them if interested


Testing parameters

I tried testing with various permutations and combinations by changing the Number of Threads and Ramp-Up Period attributes in the Thread Group setup within JMeter

Number of Threads – equivalent to the number of users you want to simulate
Ramp-Up Period (seconds) – equivalent to the time period/range during which you want JMeter to trigger all the requests

e.g. Number of Threads = 100 and Ramp-Up Period = 20 seconds basically means simulating a scenario where 100 users are accessing your application (OIM in this case) over a period of 20 seconds.

  • Attempt 1: Number of Threads = 100 and Ramp-Up Period = 20 seconds
  • Attempt 2: Number of Threads = 200 and Ramp-Up Period = 20 seconds
  • Attempt 3: Number of Threads = 500 and Ramp-Up Period = 20 seconds
  • Attempt 4: Number of Threads = 1000 and Ramp-Up Period = 20 seconds
  • Attempt 5: Number of Threads = 2000 and Ramp-Up Period = 20 seconds



What I was expecting

To be honest, I expected some delay/latency when 2000 threads (potential users) were fired in a space of 20 seconds. Looks like that did not happen.

Actual Result

All in all, the response was quite healthy.

  • Green results i.e. HTTP 200 (OK) response
  • Low latency and load times


To be noted

  • This was executed in a personal test VM (running OIM 11g R2 PS2) and hence there was not much load on the system
  • Can’t expect much latency when the server I am connecting to is just a guest VM 😉

Still, this was fun and it would be interesting to execute the same test on a server which has running processes in the back end e.g scheduler, some access request processes etc.

If the out of the box configuration of 20 threads does not work for your environment, you can change it using the Weblogic Admin Console – rinse and repeat 🙂

Until then.. Cheers !


About Abhishek

Loves Go, NoSQL DBs and messaging systems
This entry was posted in Oracle Identity Governance, Oracle Identity Manager and tagged , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s