How fast does my net connection need to be?

The following response to this very-frequently-asked-question was provided by Mike Meyer (mwm@contessa.phone.net).
The answer is "It depends." What it depends on is what kind of things you want to provide on your server. Here are some rules of thumb to use when deciding what kind of connection you need for your server.

The first rule of thumb is:

Don't worry about simultaneous access.

Unless you have a very large site, simultaneous access is not a problem. If you have a very large site, you need as much bandwidth as you can afford. There is a bit more about this below.

The second rule of thumb is:

It should take at most 5 seconds to send a page.

The five second rule dates from command line days, when that was about how long people would wait before getting impatient with the system. It seems like a reasonable number to use now.

Since external images/audio/etc. are somewhat exceptional, allow more time for them. If you think they should have the same restrictions as above, buy the bandwidth your site will need to do so. However, the rule of thumb for external images/audio/etc is:

It should take at most 30 seconds to send an external file.

Given these rules, it's pretty straightforward to work out how large an HTML page and external files can be. At least, it's easy after you simplify things by ignoring IP overhead on the line, compression on modem lines, and anything that's less than 10% of the total (or even a little bit more than 10%).

The one simplification not to ignore is the multiple packet round-trips it takes to get data flowing through an HTTP channel. For modem lines, this is nearly a second for each HTTP connection, which is significant. For leased lines, it's more like .1 or .2 seconds, which is not significant.

On a 14.4 line assumed to be sending 1.4K bytes of data/second, with a 1 second startup, you get 4 * 1.4 or 5.6K of HTML. If you want to include a single inline image, that's 2 seconds of startup, so you're down to 3 * 1.4 or 4.2K of HTML + image. This means smallish HTML pages, and simple inline images. For external files, you get 29 * 1.4 or 40K, which is still a small image. If you have a 28.8 line, you get to double those figures; for a 9600 line, figure 2/3rds of that size.

On a 56K leased line assumed to be sending 5K/second, you get 25K of HTML, or mixed HTML/data. For external images, it's 150K. That should cover any reasonable HTML document, and small to medium external files. An MPEG movie might be a bit much.

With a T1 line assumed to be sending 150K/second, you get 750K of HTML, or 4.5 megabytes in an external file. Barring very large animations, this should be sufficient for anything you want to serve. More would be faster, but it also gets drastically more expensive.

Given the above guidelines, let's look at simultaneous access again. Under the worst case conditions, you're using all of your line for HTML pages, each of which takes 5 seconds to send, so your server is sending 12 pages a minute, or 720 pages an hour, or 17,000 pages a day (pages, not accesses; each inline image in a page generates an access, unless the client cached it). This makes you one of the busier sites on the web. While you'll have contention problems before you get to this point, anything but a modem connection will be sending most pages in a small fraction of five seconds, which should leave plenty of bandwidth with no contention. If you have this kind of access rates on a modem line, you should seriously consider upgrading your connection.

The bottom line on simultaneous access is that the WWW server is more likely to have contention with other uses of the line than with itself. Since I don't know what else you use your line for, I can't factor it in. You'll have to consider that issue yourself.


World Wide Web FAQ