Question

Lets say a Java EE based e-commerce web site is performing well giving expected response time and throughput. The web site is undergoing major ui changes and it is expected to bring 3 times more traffic.

How do I find out whether the projected web traffic could be handled by the existing environment?

Is there a way to find it out using some empirical formula without actually load testing the system if I have the system utilization (CPU, memory utilization), throughput, response time of the existing system. (The goal is to determine whether the SLAs could be met in the design stage itself)

Was it helpful?

Solution

No there is no formula for this, there are just too many interdepend factors for this. The only way to get realistic numbers is by empirical tests. If you can't do this, you're only option is to go for overcapacity in hardware and do an educated guess that would go something like this:

  • Does the new UI impact CPU usage?
  • Does it take longer to render and transfer a page? Estimate the increase in concurrency.
  • Does more traffic also mean more data? If yes, how does this impact performance?
  • Are there any bottlenecks that could lead to an unexpected increase in concurrency?
  • How does the increased concurrency impact memory usage?
  • How does memory usage impact file system cache, database cache, JPA cache, etc.
  • Is performance IO bound? And how much spare capacity is available?
  • Is performance CPU bound? And how much spare capacity is available?
  • How much spare capacity in memory do you have?

OTHER TIPS

I partly disagree with the previous answer. For sure any capacity planning involves the creation of a model with a set of (potentially dangerous) assumptions.

Nontheless, having a good historical perspective of:

  • transactional load (e.g. web hits on Apache logs)

  • CPU and memory utilization

load-performance analyses can be built to determine the "Service Demand" (roughly speaking the amount of resources used to process a single request) through analytical statistical techniques. The same parameter can then be fed into queuing network models to estimate expected response time and throughput (whose behaviour can become highly non-linear at high levels of resource saturation).

Despite what just said: - it's no easy formula

  • you need to assume that the new UI's effect is 3X load generation and nothing else (same Service demand for a request, same efficiency)

  • you're taking the risk of experiencing issues with the non-modelled possible bottlenecks (e.g. saturated connection pools, network bandwidth, ...) which is a general problem of capacity planning.

Testing is the only safe option, unfortunately too often an option that is not available.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top