tags:

views:

454

answers:

5

Often times people talk in their (optimization & performance related) questions and answers about 'heavy load'.

I'm trying to quantify this in the context of a regular web application on a typical server (take SO & its fairly small infrastructure as example) in a number of Requests per Minute, assuming that they return immediately (to simplify and take database speeds etc. out of the equation).

I'm looking for a nominal number/range, not 'where the CPU maxes out' or similar. A rough approximation would be great (e.g. >5000/min). Thank you!

+1  A: 

If I had to pick a number, I would call more than 10000 requests/minute heavy load.

chaos
+1  A: 

It's hard to answer, because load isn't simply a matter of requests per unit time. It depends on what those requests are doing and how they're implemented.

For example, more reads than writes might mean a lighter load.

Asynchronous processing of writes might mean a lighter load than having to wait for synchronous processing to complete.

One extreme would be stock trading systems that handle billions of transactions each trading day. Look at the typical volume on the NYSE or NASDAQ and use that to estimate a high value per minute.

Let's say 2B transactions in a trading day is representative for NASDAQ. Markets open at 9AM and close at 4PM, so that's 7 hours*3600 seconds/hour = 25200 seconds. That would give an average of 2B transactions/25200 seconds = 79,365 transactions per second - a very high load, indeed. They obviously use lots of servers, so you'd need that number to figure out what the load per server should be.

If SO can be considered a good benchmark, you might ask about its volume on meta.

duffymo
yes and OPRA > 1.2 million messages/sec NASDAQ and NYSE feeds are a piece of cake......
pgast
OPRA = http://www.opradata.com? Thanks for the info, pgast.
duffymo
+6  A: 

I would think that the proper answer to this, given that you don't want the hardware load measure (CPU, memory, IO utilization), is that heavy load is the amount of requests per time unit at or over the required maximum amount of requests per time unit.

The required maximum amount of requests is what has been defined with the customer or with whomever is in charge of the overall architecture.

Say X is that required maximum load for the application. I think something like this would approximate the answer:

0 < Light Load < X/2 < Regular Load < 2X/3 < High Load < X <= Heavy Load

The thing with a single number out of thin air is that it has no relation whatsoever with your application. And what heavy load is is totally, absolutely, ineludibly tied to what the application is supposed to do.

Although 200 requests per second is a load that would keep small webservers busy (~12000 a minute).

Vinko Vrsalovic
+1 - I like the nice approximation. A good way to think about it.
duffymo
+1 - Nice explanation, much better than I could have done, so much explained so concisely.
James Black
Nice answer. Thank you
Alex
+2  A: 

This is not a straight forward answer that can be answered with a simple requests/minute number.

In the telecoms sector, we often do performance testing and we simulate running lots of calls per second to try and find out the limit. We keep upping the call rate until the server fails to keep up.

So, it depends on your server and what it can handle. It also depends on your perspective. For example, an old 386 might only handle a measly 50 requests / minute. I'd call that a light load. But a high spec'd server might be capable of handling 60000 requests / minute. This is just guessing. I have no idea whether apache could do this. Our telecoms software certainly can.

I think it's best to answer this from the server perspective. I would say very heavy load is when you come within 10% of what your server is capable of handling sustained over several minutes or tens of minutes. Heavy load within 15%.

Matt H
A: 

Heavy load is whatever your system can't handle. ;-)

David Plumpton