3

Currently I have a web app running where I have 9 VPS servers connected to a Load Balancer. As my web app has been getting traffic, I've been purchasing new VPSs to handle the load. Managing so many of them is pretty annoying and I don't really have time to learn Puppet/Chef.

I am wondering, would I get more output if I purchase say 2 high end dedicated servers assuming that my Ubuntu/Apache config would be cloned over to them? Is there any way to estimate the gains/loses in hit/sec that I would get? Right now most of my VPSs are 8GB ram with low CPU priority.

This is my level of volume right now: http://cl.ly/image/47361d15472p

Often times I have spikes of up to 2k/sec. My VPS system seems to cap at around ~850/sec.

Would going dedicated by the next logical step?

AXM
  • 175
  • 1
  • 1
  • 5
  • Also worth reading for some insight: [When should an organization invest in a private infrastructure versus a hosted solution?](http://serverfault.com/questions/577424), and [our series of questions on capacity planning](http://serverfault.com/questions/384686/can-you-help-me-with-my-capacity-planning) for some ways to determine if/when you've outgrown your cloud. – voretaq7 Feb 27 '14 at 16:53

2 Answers2

5

Generally you would consider going to dedicated hardware:

  • When you need more performance.
    Cloud machines are notoriously low power compared to even midrange servers. A midrange server is a dual socket machine ("per definition" for the last few years: more than 2 sockets being high end, the single socket machines being lower end servers) and I have problems finding comparable virtual machines.
  • When you need a lower price per month.
    The price of most VPS is quite high - unless dedicated/prepaid (i.e. reserved for a year). Cloud is scalable but the per hour pricing multiplied by your usage can be multiple times the cost of a server.
  • When some timing issues are critical.
    Virtualization makes the clock unstable under some circumstances. Not an issue in most cases, but I had problems with maintaining proper timestamps with millisecond accuracy for years.
    Newer virtualization platforms are better at this (seems to work with the newest Hyper-V).
  • When you need special configurations.
    Let's say fast or very large disk arrays where you want to have more control over the layout. Higher-end databases (Oracle) are notorious for that sort of requirement.

And that is sort of it.

Note that in your case there is a lot of room on a VPS - I have 8 core machines with 48gb memory running large databases for customers. In your case the decision would possbily run around the price. One of my bridge machines (a machine located at a specific location to run code close to that location, due to timing sensitivity) is a 16gb memory machine with 8 cores + hyperthreading and it is considered to be a low power machine.

I would start taking to your host about this - they may come up with sensible alternatives while also taking the price into consideration. In your case a cloud may be good because you can wind down the number of VM's during off-peak time (saving money) and do rolling updates. This is the ONE main advantage of "cloud" hosting - flexibility of the number of VM's running. Spike? spin up another 10. Night? spin down most. Real servers do not give you this flexibility.

voretaq7
  • 79,345
  • 17
  • 128
  • 213
TomTom
  • 50,857
  • 7
  • 52
  • 134
  • It's worth pointing out that you can get the spin-up/spin-down flexibility with real servers - there are just trade-offs. You can power down / Wake-on-LAN physical machines, with the tradeoff being possibly-reduced hard drive life (on mechanical disks, from spinning the disks up and down), or you can build your own "private cloud" with VMWare or Hyper-V and power off/Wake-on-LAN hypervisors that you don't need to support your current workload. "Cloud" gives you this without having to set up & manage it yourself though, which can be a big advantage. – voretaq7 Feb 27 '14 at 16:51
  • Yes and no - few providers allow real spin down. As in: I can spin down, but I still please pay the bill ;) – TomTom Feb 27 '14 at 17:48
  • This is true - you would have to buy a *cage* or other equivalent large area of floor space where your power usage is independently metered (or be hosting your own gear in your own datacenter) to see benefit from spinning things down anyway - which is why most colo customers just let everything run 24x7x365 - "I'm paying for that power and cooling anyway!" – voretaq7 Feb 27 '14 at 20:11
  • I am spending more time thinking about this and my options. According to the points @TomTom listed above, it seems like dedicated is the way to go. Currently I do not do any of the "spin up/down" because I do not have the knowhow to run an infrastructure with Puppet or Chef. Nor I do not have the time delete/create VPSs as needed. Especially not on a nightly basis. So I just leave them running. I am wondering though, if I just quit my VPS host and rent the highest end server [here](http://asmallorange.com/hosting/dedicated/#dedicated), could 2 of these cover the same load as my 9 VPSs? – AXM Mar 27 '14 at 15:01
  • @AlexMarkov That really depends. Problem is that "A VPS" is a very very varying size. Same with physical server. I haven o idea what you are talking of and you should do basic math here yourself. – TomTom Mar 27 '14 at 15:15
  • @TomTom Totally understand. It wasn't an arithmetic question. I am running a bunch of 1GB VPSs and I am considering replacing all of them with one Dual Intel Xeon E5-2620 2.0GHz, Turbo 2.5GHz 12 Cores, 24 w/ HT dedicated server. I was just wondering if I am thinking about it the right way. – AXM Mar 27 '14 at 20:01
  • @AlexMarkov Pretty much. Make sure you IO budget is ok - IO Is normally where servers that do virtualization fall apart. Because the IO of a set of discs is normally barely enough for a server. Doing your own vm hosting is very very snsible - doing the same here. – TomTom Mar 27 '14 at 20:27
1

This question is becoming more and more obsolete nowadays. However there are still a lot of requirements for dedicated as well for cloud VM.

The pro's:

  • A VM is more flexible
    • dynamic resource assignment (RAM, CPU, storage)
    • in case of hard ware errors or hard ware upgrade, a VM can be migrated transparently to another HW (High Availability and Fault Tolerance)
    • is more secure when assigning an stale CPU model
    • is scalable in performance or throughput

The con's:

  • real HW Nodes are always faster than VM's in case of performance and latency
  • to setup Virtualization is always more difficult and time consuming
  • HW nodes have long recovery time in case of HW failures compared to a VM, so they are inflexible and have more downtime

In your case i'd fist evacuate big static files to storage servers like S3.