Choosing the Right Size Cloud Server

When creating a new Rackspace Cloud Server, you'll make several important selections that determine the success of your deployment. Two major decisions are:

  • What operating system/distribution to use
  • What size Cloud Server you need to run your application

This article helps you choose the size of your Cloud Server. For information on choosing an operating system/distribution, see, Choosing a Linux Distribution

Choosing the Size 

One of the great advantages of using Rackspace Cloud Servers is the flexibility you have to purchase only the amount of computing power needed.

The question is, how much computing power will you need?

One way to determine this is to install and test your application on a few different size implementations.  Next, perform load testing of your application while simulating traffic to your site.  It is best to test with your site from a URL that will do more than just retrieve a static web page (for example, access a page that uses PHP and makes a database query, so the test is more representative of normal traffic).   

Here we'd like to show you some of the standard tools for viewing your server's performance, and to help you determine whether the Cloud Server size that you chose is up to the task.

One thing to keep in mind is that Rackspace Cloud Servers are virtual partitions of larger physical machines that allocate resources based on a process called CPU scheduling.  They will not perform exactly like a dedicated machine with similar resources. You can find out more details about CPU scheduling by reading the Performance section of our Cloud Servers FAQ.

Also bear in mind that Cloud Servers come in Standard and Performance flavors (server types). The Performance flavors offer faster disk access and network speed than Standard flavors, but disk size and virtual CPU allocation will be different for equivalent flavors. Compare the offerings based on the performance needs you identify in the following sections.

Performance Testing in Linux

If your application is running on a Linux system, there are many utilities that you can use to get a good picture of how well your server is handling the load.  The main statistics you will be looking at are the load average on the server and the available memory while your application is running.

free: 'Free' is a quick and easy monitoring utility that gives you a snapshot view of the amount of available memory on your server. Adding the switch '-m' to the command will show you available memory in megabytes (as opposed to the default kilobytes).  Read the detailed article on how to use the free command.

top: 'Top' is useful for more than just checking available memory.  You can view the load average on the server, as well as the processes using the most resources on your server.  Read the detailed article on using the top command.

iotop: You can use the 'iotop' command to monitor disk I/O on a per-process basis.  Read the detailed article on using iotop.

iostat: Use the 'iostat' command to collect and show system input and output storage device statistics.

dstat:  the 'dstat' command also shows you the I/O statistics and otherinformation with more versatility in terms of reporting.  Read the detailed article on using dstat.

Both iotop and dstat might require extra packages to be installed on your server.

If you use these tools while running your web application and you see an excessive load average or a memory usage, you either need to tune your application or (more likely) increase the size of the server you are running it on.  Here are some other tools that you can use to benchmark and monitor your servers and applications.

Resources for Testing Your System

apache "mod_status" module - good for digging around in apache to see how many connections are being used, and how you may need to tweak its setup.  Read the detailed article on apache mod_status module.

ApacheBench - is an http load generating tool that reports how many requests per second your application can process.

Jmeter - provides load testing and performance monitoring for web applications.

Munin - is a monitoring system that allows you to see your server statistics through a web interface.  Read the detailed article on using Munin.

Additional Resources:  Scaling, Tuning, and Load Balancing

VIDEO:  Techniques to Scale Rapidly in Traffic Spikes

Article:  Scaling for the Holidays - To Scale Vertically or Horizontally?

Article:  Scaling for the Holidays - Take Advantage of Caching

Article: Scaling for the Holidays - Web Server Tuning

Article: Scaling for the Holidays - Load Balancers

Was this content helpful?

© 2011-2013 Rackspace US, Inc.

Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

See license specifics and DISCLAIMER