First of all all that matters is “peak load” which is to say that most of the time the website will probably do very little. Most of your users will probably visit at a similar time (lunchtime in New York) this will change as your site gets more popular
Here is the basic maths:
- Find out how much RAM a single user will require. For a normal website, it will be about 100MB but you can get this down to about 30MB if you disable things you don’t need.
- Find out how many users you need at the same time. 5000 per hour ~ 2 users per second which is basically nothing but what will happen is a lot of them will visit at the same time.
- A normal Apache setup will support about 30 requests per second. After that, you need a multi-machine setup. Assuming you have CPU, IO speed and bandwidth.
Basically with a single machine to get maximum speed setup by someone that doesn’t know what they are doing you are looking at:
- 30 * 100 (Apache) = 3000 MB of RAM
- 3000 for the database in memory.
- 1500 for the index to be in memory as well.
- 500 OS overhead
~ 8 GB of RAM + SSD for storage + ??? CPU (I don’t know how complex your site is…)
Normally you want room for growth.
Personally I use Linode. It isn’t the best but it is good enough.
If you want to start of a shared server then it would be roughly $40 or $80 a month:
If you want a dedicated CPU (more reliable) then it is $60 or $120 a month.
If you look at your actual memory usage then you can probably get away with less.