3 Replies Latest reply: Oct 13, 2010 2:25 PM by jschellSomeoneStoleMyAlias RSS

    On bench marking the scalability of a Java server grade application

    803697
      Hi,

      We are building a Java web application which consists of multiple Timers, Threads and database accesses. This application is intended to run on a 24/7 basis on a Server .We are trying to bench mark our application on 2 aspects:
      1) Find the maximum number of Timers & Threads supported by the application, and the maximum uptime without restart
      2) Find the maximum hardware or hardware requirements such as RAM size, CPU for which the application would run 24/7

      For 1), we are already running the application in a test mode with different loads and running on a 24/7 basis.


      For 2), is there any standard way of determining the hardware requirements?
      Currently we are looking at the maximum memory used( Total - Free memory of java Runtime class) over a 60-120 hr period.

      Any suggestions are welcome.

      Thanks in advance,
      Prakash

      Edited by: 800694 on Oct 7, 2010 3:57 AM
        • 1. Re: On bench marking the scalability of a Java server grade application
          jschellSomeoneStoleMyAlias
          Attempting to extropolate the impact of CPU/RAM means that you must have multiple boxes with different CPU/RAM. You then run the same test scenario on each and then compute.

          Maximum memory is a function of usage and implementation. You want the server to have enough memory to prevent thrashing As long as you throttle processes such that you do not run out of physical memory (and you have no leaks) then that is all you do.
          • 2. Re: On bench marking the scalability of a Java server grade application
            803697
            Hi,

            Thanks for your response.
            What you have mentioned is true when the usage of the number of Timers/Threads are pre-defined to some extent.

            In our case, atleast the Timers are fixed, but the number of threads created depends upon some dynamic events for which this java process does not have a control. For example, consider an application such as a network monitoring tool, where the events generated are high when the traffic is high.
            In such case, the number of threads created would be very high corresponding to the events received, and may get processed in parallel which would lead to sudden increased memory usage and even doing a GC may also not clear the memory as the threads would still be processing their call backs.
            Pls. let me know your comments.

            Thanks,
            Prakash

            Edited by: 800694 on Oct 13, 2010 1:46 AM

            Edited by: 800694 on Oct 13, 2010 2:06 AM
            • 3. Re: On bench marking the scalability of a Java server grade application
              jschellSomeoneStoleMyAlias
              In our case, atleast the Timers are fixed, but the number of threads created depends upon some dynamic events for which this java process does not have a control.
              You might not have control of the events.
              You would certainly have control of the threads as long as you designed it that way.
              You can queue events and/or throttle event acceptance.

              And although one option is to just assume that the events will not overwhelm the system that only works if you know that something further up stream is throttling them. If not and you ignore the problem then you must allow for the possibility that the server will fail if there is an event flood.

              Exclusive of that my answer doesn't change - you must set up a network that is suitable for generating the events and then monitor the server as you increase the number of events. You probably want burst and sustained but that depends on the traffic.