Amdmb.com Server Upgrade Summer 2002
The Design Ideas and Choosing Hardware
This content was originally featured on Amdmb.com and has been converted to PC Perspective's website. Some color changes and flaws may appear.When I initially sat down and spoke with Warren about what kinds of options we had for our server upgrade, there were tons of ideas to throw around. My first, and least expensive idea was to simply upgrade the servers that currently existed. At the time, the Athlon MP 2000+ processor was the fastest available and we could merely put 4 of those in the servers and be done. Upgrading the memory on the servers would also have helped. However, this solution didn’t allow for a lot of room for growth. The true bottle neck that we were finding on the servers was in the I/O subsystem – the hard drives just couldn’t read and write the data fast enough to keep up with the onslaught of visitors.
We quickly decided that all new hardware was needed, as well as a new operating system with all the bugs worked out, if we were going to do things the right way. I began to look at a lot of other websites, both hardware review based and other commercial sites, to see how their server setups were configured and how much success they had with them. There were two distinct and varying options that we were going to have to choose between: centralized or independent database servers.
All of the data you are reading or seeing on the Amdmb.com websites is driven by a database. The reviews, the news and the forums are all stored in a database format on servers that dynamically generate the pages that you see. This makes upkeep and updating the site very easy and quick to do, but makes the site much more demanding on the server hardware than a static HTML website would be.
The difference between a central database and independent database setup is pretty simple to understand. The below image attempts ( to demonstrate this idea. My thanks goes to "xiphoid" for the image!
In a centralized database setup, there is a single server (or multiple servers) whose only purpose is to store and serve the database. There are no direct web interfaces that someone can access from the public and no data is stored on them other than the database. This means that you need separate web servers running whichever platform you want (Apache, IIS, etc) to actually field requests from readers, then query the database for the information, then send it back to the web server to be published to the reader.
An independent database setup means that each server has its own database and its own web server services. When a call comes in to the server for a page, the web server does not have to go to an outside server to find the database information, it only does an internal query and sends it back to the internal web server that sends the information to the reader. In all reality, the differenced between the two different types as far as software is concerned are very small. Only a few lines of code need be changed to cycle between the two in most cases. However, as far as hardware goes, the differences between the requirements of a database and web server are quite dramatic.
Web servers, for the most part, are very dependent on processor speed than anything else. The programs do not take up a lot of memory and because of that do not require a lot of it. The server programs do not require a fast I/O subsystem because they are only making a few writes to the server, and they are mostly logs – not imperative for site performance.
Database servers, on the other hand, use a lot of memory and require a fast I/O subsystem. This is not to say that they do not take advantage of a faster processor, but the main bottleneck arises in the memory and hard drives of the system. The more memory the database server has, the more of the actual database the server can retain in memory for quick access when queried. As you might guess, the faster the memory the better. Database servers that have large databases that do not fit completely in memory or those that do a lot of writing to the databases need fast I/O systems as well. With a forum database that is over 2 GB and that has people making posts all the time, you can see that we needed a fast hard drive setup as well.
In the end, our decision was to combine the web server and database server onto a single machine for each site – basically choosing the independent database setup but increasing the centralized idea by giving each prominent Amdmb.com site its own machine. This would keep the sites very fast and prevent a single server going down or being under maintenance from taking the entire site offline.
And now, we needed to choose the hardware. :)