Running web application under large concurrent user loads


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
    runs.

  • Apart from that the application since it can have some really
    "messy code" which takes longer time to load the page or loads in
    memory data.



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

    • WebContainer

    • 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
    maintains
    one or more thread pools. Thread pools, allow you to limit the total
    number
    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
    in
    the system which is hard to see. Assigning too many threads to a thread
    pool
    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.

Comments:

Post a Comment:
  • HTML Syntax: NOT allowed
About

I was part of Sun R&D in Java CAPS and later Glassfish ESB. I moved from R&D to Consulting. I am currently working as a Solution Architect in Oracle Consulting Services (India). I was sharing my experience w.r.t. Java CAPS and other technologies during Sun period. Now in Oracle world I share my experiences with Oracle FMW product line as well as other Oracle Technologies and products.

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today