How to choose a dedicated server!

How to choose a dedicated server!

So you’ve outgrown your shared host and it’s time now to move on to the real stuff. 
Yes we are talking about dedicated servers, those byte crunching beasts. Figuring out all of the options and services can be very confusing.
But No Worry!!
I will try and give you some tips and hopefully guide to your perfect server.

So let’s not waste any time and start with first segment.

What is a Dedicated Server?

Dedicated Server is a single computer connected to a network (internet). This computer and all of it’s processing power is dedicated to a single person or organization. Meaning that the computer resources are not shared by anyone else. You have the full control of the machine and you are free to run any software you want on that computer. 

Generally dedicated servers are used to serve web page requests ( html, images, videos …etc) but they can be used for many other purposes as well.

Do I need one or more servers  ?

To simplefy things we will divide the use of dedicated servers into these two groups:

Full Web site Hosting
Specific Service Hosting (Database, email , httpd …etc)
Single Web site Hosting

Hosting of a single or several web sites. In this kind of setup , all of the services/programs (http software, DB software, email software…etc) are installed and running on one dedicated server. Sometimes these services/programs can also be referred as “servers” them self.
This is the common setup for small to medium trafficked web sites since all of the necessary software needed to run the web site are located on one physical machine.  
Advantage to of this setup is that it lowers the cost, but disadvantage is that all of the machine resources are shared by all of the software and processes.

Specific Service Hosting

Hosting of a single software or service on it’s own dedicated machine. All of the resources on the machine are dedicated mainly for one type of service or functionality. For example, one might host only Database Software on the server so that all of the resources on that machine are only dedicated for processing of Database Queries. You are able to handle more queries, or deliver more pages.
Usually medium to high trafficked web sites will run this kind of setup.  

Traditional setup will consist of one or more server that will only handle web (http) request , then one or more servers only handling database requests and maybe one or more servers only handling processing of the emails. Theoretically there is no limitation on the amount of servers. As a group working together these servers are used to process in millions of requests a day.

Which setup do you choose ?

This of course depends on the amount of requests and traffic that your web site will be receiving. So to be able to answer this question we need to first understand little bit about what services are needed in order for web site to be accessed by the user.

Generally today’s dynamic web sites require two main service types to deliver a full working web site to the user’s browser.

WEB SERVERS / WEB SCRIPTS ( apache, IIS, php, perl, java )
DATABASE SERVER (MYSQL, MSSQL, ORACLE)

Use of the word “servers” in the above text is referring to the application / software and not to the physical machine. This is a common term used to describe the type of application.

Web server handles all of the initial requests from the browser and decides on how and where data from the Database is returned. 
Database server handles requests from the web server in a form of queries. These queries retrieve data from the storage (hard disk) and return it to the web server.

As you can see both web and database server work together to deliver the final product (web page) to the user. 

Usually web server handles more of the logic part so FASTER CPU and bigger MEMORY are always in need more then Hard Drive speed.
While database server handles more of data retrieval so FASTER HD and bigger MEMORY are always in need more then cpu speed.

In any case more memory is always needed 🙂

It’s important to note that all of the server software always uses some of the CPU, MEMORY and HARD DISK resources. Eventually they start fighting over the available resources. 
One way to stop this fight over the resources is to separate them onto each own dedicated server.

Another reason to separate service types is that is easier to optmize the machine to run well for one specific task then it is for all of the tasks.
For example:

Since we now know that Database needs faster Hard Drives , maybe we use more expensive faster Hard Drives in DB machine , and leave the cheaper hard drives on WEB machines where HD speed is not as important.
But maybe instead we use faster processors on WEB machines since they perform most of the logic.

Doing it like this we have optimal performance without wasting resources and $ $ $ !

These are just general suggestions , and depending on the web site and it’s functionality these configurations will vary.

Server Features and Components.

Ok now that you understand what each (web, db) server is hungry for, how do you know what components to get?
Because of the sheer amount of different types and models of each component I would need to write several books just to cover that subject. 
So I am just going to give you some general guides for each type of component, which whould help you on your next server purchase.

CPU Speed:

This is a no brainer. More speed (Ghz) that processor has the faster it can do the calculations and faster the pages are going to get returned to the user.
Some CPU architectures are known to perform better then others in server setups so I suggest you do some research on that subject. 

Number of CPU Cores / Processors:

Another no brainer. More cores or processors your server has, more taks it can do simultaneously. Since most of the actions on the server are based on requests and each request usually spawns a separate process, you can see how more CPU Cores enables the server to handle multiple requests at the same time.

Amount of RAM:

I think you see the pattern here “MORE”. Needless to say that more RAM your server has, more requests it can handle at the same time. Reason for that is that each request requires certain amount of RAM so that it can be processed. This amount is dependent of various factors like: Software type, Operating System , Installed Modules …etc
For example popular web server software APACHE can take about 7mb to 15mb of RAM per request or process and that’s not accounting for any other processes already running or being spawned to compliment that each request.

Memory is probably best investment you can make in your dedicated server.

Hard Drive RPM speed

Again the faster the disk spins, quicker it can get to the data on disk. Some popular Har Disk speeds are : 7200RPM , 10000RPM and  15000RPM. 
Biggest performance increase by faster Hard Drives will be seen by applications which access the Disk often. Some of those applications are: Database servers, File Servers and Video Streaming servers.

SATA vs SCSI vs SAS

If you were wondering what all of these acronyms are related to , they are the 3 most common Hard Drive interfaces used in dedicated servers. 
Starting from left with SATA being the most affordable but usually not being the best performer.  While with SCSI generally you get better performance then SATA but at much higher cost and with a lot less disk space. With SAS you get better performance then SCSI and you also get more disk space.
Of course there is a lot more differences between these interfaces. Luckily there is tons of articles on the internet explaining it all. I suggest you spend some time researching.

Generally unless you are running very High Transaction DB server you are fine with SATA. And if you are looking for best performance and you don’t care about the cost then go with SAS.

To RAID or not to RAID

So yes we are still stuck with the hard drives. When you see a word “RAID” being used in a server setup , that means that server has 2 or more HD’s joined in an array forming one logical unit. Raid usually provides increased storage reliability through redundancy. There are different RAID setups and you’ve probably seen some: RAID 0, RAID 1, RAID 5 , RAID 10 …etc
Two most common ones you will see in server setups are RAID 1 and RAID 5

What you need to know about RAID 0 is that provides you with some performance and increased total disk space but has no redundancy. If one drive fails, you loose your data. 

RAID 1 provides redundancy thru mirroring and in certain cases performance increase, but you do not get increased disk space. If one drive fails you can still continue operating and be able to replace the broken drive without loss of data. This setup requires two Hard Drives.

RAID 5 provides redundancy and increased disk space. It requires minimum on 3 Hard drives. Maximum of disk space you can have is :(Size of Smallest Drive) * (Number of Drives – 1). If one HD fails you can still continue your operations.

RAID can be implemented via two common methods, via software or via hardware. 
Software RAID uses Computer resources  while Hardware RAID uses it’s own dedicated resource on the card.
If you have a powerful machine then performance difference