Rackspace Cloud Essentials - Choosing the right-size cloud server


One of the great advantages of using Rackspace Cloud Servers is the flexibility that you have to purchase only the amount of computing power you need.  When business is good and you need increased server capacity, you can scale your implementation horizontally by distributing your traffic over multiple servers by using Cloud Load Balancers.

So, the question is, how much computing power do you need?

One way to answer this question is to install and test your application on a few different-size implementations.  Then, perform load testing of your application while simulating traffic to your site.  It is best to test your site from a URL that does 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.   

This article shows some of the standard tools for viewing your server's performance, and helps you determine whether the server size that you chose is up to the task.

Considerations

One thing to consider is that Rackspace Cloud Servers are virtual partitions of larger physical machines that allocate resources based on a process called CPU scheduling.  They do 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.

OnMetal Cloud Servers are also available. OnMetal servers are single-tenant, bare metal servers provisioned via the same OpenStack API as our cloud server. They can be created or deleted as quickly as VMs to offer the agility of multi-tenant environments with the performance of single-tenant hardware.

Also consider that cloud servers come in Performance and standard flavors (server types). The Performance flavors offer faster disk access and network speed than standard flavors, and disk size and virtual CPU allocation are different for equivalent flavors. Compare the offerings based on the performance needs that 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 determine how well your server is handling the load.  The main statistics you should examine are the load average on the server and the available memory while your application is running.

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

 

Top: This utility is useful for more than just checking available memory.  You can also view the load average on the server, and the processes that are using the most resources on your server.  Read the detailed article about how to use the top command.

 

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

dstat: The dstat command also shows you the I/O statistics and other information with more versatility than other commands, in terms of reporting.  Read the detailed article about how to use the dstat command.

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 excessive memory usage, you need to tune either your application or (more likely) increase the size of the server on which you are running it.  Following 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 - Use this module with Apache to see how many connections are being used, and how you might need to change its setup.  Read the detailed article on the apache mod_status module.

ApacheBench - This HTTP load generating tool reports how many requests per second your application can process.

Apache JMeter - provides load testing and performance monitoring for web applications.

Munin - This monitoring system enables 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