Rackspace Cloud Essentials - Choosing the right-size cloud server
One of the great advantages of using Rackspace Cloud Servers (product page) 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 (product page).
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.
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 various flavors or server types including: General Purpose Compute optimized, Memory-optimized, and I/O optimized servers. The Memory, Compute, and I/O flavors offer faster disk access and network speed than General Purpose flavors. 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.
VMs running on multi-tenant hosts.
VMs running on multi-tenant hosts.
API-driven, instantly provisioned,
|General purpose||Workload optimized||Workload optimized|
|Class name: General Purpose v1
|Class name: Compute v1||Class name: OnMetal Compute|
|I/O optimized||I/O optimized|
|Class name: I/O v1||Class name: OnMetal I/O|
|Memory optimized||Memory optimized|
|Class name: Memory v1||Class name: OnMetal Memory|
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
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
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
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
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 choose a more powerful server flavor on which to run 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.
Additional resources: Scaling, tuning, and load balancing
© 2015 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