Running web application under large concurrent user loads
By narayanaa on Jul 11, 2008
Whenever we talk about the load/performance
typically it depends on all the tiers on which the application is
working. Hence we need to look at the following things.
- Nature of the Application vs.Hardware on which the application
runs because -- " machine which appears slower in a single-threaded
test will likely be faster in a multi-threaded world."
- Tune the DB/EIS tier,
- Tune the Application Server for the middle tier (where POJOs
& SLSBs run) and also
- Tune the Web/portlet Container where the eVision application
- Apart from that the application since it can have some really
"messy code" which takes longer time to load the page or loads in
Ideally in in such cases we should think of load balancing the Application under
consideration in a cluster. Once you do this there are few other things you need to
look at with respect to the following:
- JVM options of the Application server. A set of properties like Heapsize, Garbage Collection properties etc. depending upon the Application's nature.
- Increase the pool size of the DataBase that is being hit from the connector/JCA perspective with in the Application Server
- Do DB/EIS tuning: Tuning the database performance is not a simple task and it
depends on Application specific requirements, the operating system
and the target hardware. There is no single approach.
The goal is to avoid obvious slowdowns and balance the available
resources (I/O bandwidth, memory and CPU).
- From the Web/portal server perspective.We need to tune the
- AccessManager (Manages Sign on) - this can have issues if running behind firewall or the network settings.
- Directory Server
- Run some tuning scripts those come by default with the portal
- Thread Pools : The Java Virtual Machine (JVM) can support
many threads of execution
at once. To help performance, both Access Manger and Portal Server or Application Server
one or more thread pools. Thread pools, allow you to limit the total
of threads assigned to a particular task. When a request is passed into the web container from a browser
it will flow
through several thread pools. A thread pool contains an array of WorkerThread
objects. These objects are the individual threads that make up
the pool. The WorkerThread objects will start and stop
as work arrives for them. If there is more work than there are WorkerThreads,
the work will backlog until WorkerThreads free up. Assigning an
insufficient amount of threads in a thread pool can cause a bottleneck
the system which is hard to see. Assigning too many threads to a thread
is also undesirable but normally is not critical. These can be managed either using Admin console or any script provided or using any other means given by the vendor.