How much traffic can one server handle
Posted on Feb 5, 2013 by Paul White
This has to be the most asked question by anyone who is thinking of either getting a dedicated
server, or colocating their own box. Even though I can't give you an exact answer. I can shed some light on the variables that will affect what kind of load a single server can handle.
What kind of Role your server plays makes a big difference in how much traffic it can handle. In my case I run a multipurpose server running MySQL
5, IIS 7.5, SmarterMail
10, SmarterStats 7. Its running about 70 Websites
. Most are dynamic, meaning they utilize the MySQL
database to retrieve their content.
My Web Server Specs
16 GB DDR2 Memory
Dual Gbit Ports ( Port bonding not supported, so only running 1 )
This server was cutting edge back 2004. Think of that. Its an 9 year old server, and its still getting the job done. I originally bought it off ebay for about $400 back in 2009. Then I installed 8 GB of memory, and added the SAS
drives and RAID
card. After the OS and Software costs I had about $2k invested into this box. Then 2 years later I upgraded the memory to 16GB.
As you can imagine today this server is not worth very much. Technology typically doubles every 18 months. It also looses half its value every 18 months. So what costs $8k today in 3 years will only cost $2k.
My point is you don't need the newest stuff to get stuff done. A $500 used server off ebay will be more than enough for most websites
How much traffic does my server handle?
Keep in mind it is by no means maxed out.
As you can see on peak days its moving just under 100K page views, and Serving about 30K visitors. Moving about 20 GB per day. I am utilizing about 2 Mbits of bandwidth ( when averaged out ). Its sitting on a Gbit port, and yes at times it does utilize the full available bandwidth.
What Bottlenecks will I run into when I exceed my server's Capacity?
The first is likely to be memory. Especially if you are running dynamic websites
. Every user who visits your website will maintain a session with the server. Each Session requires some memory to be set aside for the user. This allows the server to track their interactions with the application. After the user has left the website, this memory isn't returned to the system for about 20 minutes. Even though the amount of memory needed per user is relatively small, once you get thousands of users on the website at the same time, you can easily exceed your server's resources. Windows Servers especially tend to have issues once you break 50% usage. This is because they rev up the page file at that point and this can have a huge negative impact on performance. For this reason you never want to use more 50% memory on a windows server. Mine sits around 40% usage.
Hard Disk IO
Even when running Enterprise grade 15K SAS
drives in raid
10, you still are limited to about 400 IO. IO is the number of random 4K files the server can retrieve in a second. Databases can be very intensive on IO. The easiest way to overcome the IO problem is to either Cache your data to an SSD
, or upgrade your hard drives
drives can handle up to 100,000 IO, and when on a 6 Gbit SATA
connection can exceed 500 MB / second. This is one of the bottlenecks I have run into with my server. Its not that things are crashing, but as your load increases you will start to notice things getting a little slower. Especially when Daily backups and the stats server are running at the same time.
If you are running a server out of you home, or in an office environment your limited bandwidth is going to be a huge problem. This bottleneck could be hit before anything else especially if you are running on anything slower than 100 Mbits. I recommend you colocate your server to a datacenter where Gbit ports are provided. Colocation
costs are relatively cheap. I pay about $200 / month for colocation
on a Gbit port ( though keep in mind I am not doing high traffic ). Getting a Gbit port to your home or office would be cost prohibitive, if its even supported by your local ISPs.
Unless you are running some old processors, or your server does heavy database lifting ( think SQL queries written by a college math professor ), you are not likely to max out your CPUs. However even if you do, its possible to upgrade to faster ones that will fit the same socket. If you are already running the fastest CPUs for your socket, then its time to upgrade to a new server.
I estimate my server could easily handle 250K page views per day. At that point I would be close to breaking 50% memory usage. So before you run out and buy a brand new server for $4K, you might want to consider a used server especially if you are just starting out. Used doesn't mean unreliable. My Server has never lost a hard drive, or a Power Supply, or gone down for any server based issue. However the datacenter has had a few issues. A bad network switch, Lost Power, ect.