0

Possible Duplicate:
Please help me select a webserver configuration

I have a website, which has grown from 10 visits per day, to 100 per day in couple of months, and now to about 800 unique visits per day. So far, I have been using a VPS with 512MB RAM, and shared CPU (I think its between 500 Mhz to 1 Ghz).

I think some of the requests serving might be slow, because I see high bounce rate (The main traffic is when its night in my country. Also the whole server in general is free when its daytime in my country. So when I check during my day time, load time seems to be fine.).

In any case, can someone tell me a minimal dedicated server configuration (Ram and CPU and port speed) that can handle the following without slowing down any requests:

  • 100K unique visits per day (its keeping in mind future).
  • 500K page views per day. (5 per visit avg.)
  • Each page is say 100KB (one image, few thumbnails, some misc. stuff.. usually it will be much lesser but being pessimistic in computation).
  • Assume that peak load can be 5X the average load (load is never evenly distributed in 24 hours)

Right now I am unsure what will be bottleneck. I only want a general idea.

On other hand, you can even suggest how many page views per day (assuming similar 5X peak load distribution) can following server support:

  • 2 GB RAM
  • 2 GHz CPU
  • 100 Mbps uplink port (I dont even know if this will be dedicated to me or not, but many providers mention this).

EDIT:

I am serving PHP pages. Most of them have no or few database lookups (say upto 5 simple queries). Apart from them, some session variable maniputation, etc. Average number of database lookups/queries would be say 2 per page, with no more than few thousand records in the tables

1 Answers1

1

It is practically impossible to give any sort of accurate answer to this question as the performance you get will depend largely on your specific application. For example, I have PHP pages I can get 10k req/sec and others I can only get 10 req/sec. Having said that, here are a few general things you might find useful:

  • How much are you able/willing to spend? If you have a larger budget you can start with a larger, or more, machines. On a smaller/minimal budget you'll save money on a smaller setup but will need to scale more often as the site grows.
  • Have you already looked into basic optimizations? PHP opcode cache, mod_expires, caching layer(s), lighttpd/nginx for static content, etc.... These can significantly reduce the the server's load meaning you can run more for less.
  • Benchmarking your site with programs like ab (ApacheBench) or siege is an important step in scaling and optimizing a site. Do it for a variety of page types: static, dynamic, logged in, logged out, etc... to get an idea of how many pages you server can actually handle and what the current bottlenecks are. This will also help you during optimization and scaling as it will tell you what effect on performance each change has.
  • A typical low-end dedicated server to consider is around $100/month with 4GB of RAM. This should serve your current traffic load. Only benchmarking it will tell you what maximum traffic is going to be.
  • As you get more traffic you're going to have to decide whether to scale up (vertical, larger server) or out (horizontal, more servers). There is no wrong answer but depending on your application one or the other may be a better fit. Benchmarking is also important to understand your server's bottlenecks so you scale the right thing when needed. I wouldn't start with larger or more servers yet: at your scale it will likely be overkill.
  • Another thing to consider when purchasing a dedicated server is the monthly bandwidth. Some low-end dedicated servers don't include very much and you'll end up paying through the nose once you exceed that amount. For a basic estimation just take your current bandwidth and use it to calculate how much bandwidth 500k page views/day will require.

You may note I didn't answer your two specific questions as they are largely unanswerable without intimate knowledge of your application and configuration. I would suggest the following steps in scaling you server:

  1. Benchmark your current server
  2. Optimize your current server (benchmark after each step)
  3. Evaluate your current server's performance and maximum load with your current load and traffic trends. Decide whether to scale up.
  4. Upgrade to a low to middle-end dedicated server.
  5. Benchmark new server.
  6. Monitor new server's load/traffic and decide when to scale up/out again.

Note that even you've decided to upgrade to a dedicated server regardless I would still perform steps 1-3. Any optimizations you make on the VPS will carry over to the dedicated server.

uesp
  • 3,414
  • 1
  • 18
  • 16