Skip to content

Recent Articles

1
Feb

Optimizing Your Drupal Site

Drupal is a widely used open-source CMS platform that is becoming increasingly popular by the day. I have personally used Drupal on/off since v4 and have seen it mature over the years into my preferred content management system. Here at the Rackspace Cloud we speak to hundreds if not thousands of new customers and prospects every month that either want to migrate their existing Drupal sites into the Cloud or start fresh with Drupal.

Improving performance is always a concern with any site and after working with countless Drupal installs I have identified a few tools and options that can very quickly make a very noticeable difference in your sites performance. These tweaks are not specific to the Rackspace Cloud platforms and should be considered by any Drupal site admin on any hosting solution. They will not only improve the performance of your site but also reduce back-end resource utilization such as CPU and memory or lower compute cycles on Cloud Sites for example. This is achieved through various levels of static page caching and a highly optimized database. Let’s take a look at the options.

Before we look at any third party modules lets examine what Drupal has built-in that can help. Navigate to Administer –> Site Configuration –> Performance. This section allows users to enable/disable specific caching functions included in Drupal CORE. Here are my recommendations for a typical Drupal site:

  • Caching Mode: Normal
  • Page Compression: Enabled
  • Block Cache: Enabled
  • Optimize CSS Files: Enabled (use in production only, not during theme development or customization)
  • Optimize JavaScript Files: Enabled (use in production only, not during theme development or customization)

Next I highly recommend setting up a cron job to run the Drupal cron.php file regularly, I typically run it once per day but it depends on your site (heavy traffic sites might want to run it more often). While this may not have a direct performance impact it is good general practice as executing this script performs many maintenance tasks including cleaning up old log files and checking for updates. Setting up a cron job is pretty simple and some hosting platforms such as Cloud Sites can make this a point/click configuration. Reference this page for more information on how Drupal uses cron and setup instructions.

Now, lets take a look at two third party modules that I have used for sometime that can have a dramatic impact on your site:

Boost

Boost provides static page caching for Drupal, similar to how WP Super Cache works for Wordpress. This module works extremely well if your site received mostly anonymous traffic. The developers make this module a breeze to set up and configure and I’ve tested it across many platforms including a dedicated Linux server, Rackspace Cloud Sites & Cloud Servers and even a few shared hosting platforms. Boost also includes partial support for Nginx, Lighthttpd and even IIS 7 (Apache is fully supported). Let’s walk-through the set up:

*Note, Boost requires cron and clean-URLs to be enabled FIRST*

  1. Download Boost here: http://drupal.org/project/boost
  2. Extract and upload to your Drupal /modules folder
  3. Navigate to Administer –> Site Building –> Modules
  4. Enable Boost
  5. Navigate to Administer –> Site Configuration –> Performance
  6. Notice the new options for ‘Boost’ on the top navigation menu, click Boost Settings
  7. Review and adjust any settings necessary (I generally stick to the defaults)
  8. Click ‘Boost htaccess rules generation’ in the top nav menu
  9. Copy the automatically generated htaccess rules and paste them in your htaccess file, see below:

# RewriteBase /

INSERT BOOST CODE HERE

#Rewrite URLs of the form ‘x’ to the form ‘index.php?q=x’

Boost should now be up and running. Be sure to check your Administer –> Reports –> Status Report page for any errors.

DB Maintenance

The DB Maintenance module optimizes administrator selected tables in your Drupal sites database during the regular cron.php executions. Keeping your database optimized is one of the easiest ways to ensure a smoothly operating site on any platform and is essential if you want to scale your site effectively for high traffic. Installation is fairly quick and easy:

  1. Download DB Maintenance here: http://drupal.org/node/41588
  2. Extract and upload to your Drupal /modules folder
  3. Navigate to Administer –> Site Building –> Modules
  4. Enable DB Maintenance
  5. Navigate to Administer –> Site Configuration –> DB Maintenance
  6. Select tables in the Drupal database that you wish to optimize during the regular cron execution and enable logging if you prefer
  7. Save and thats it!

It is suggested to keep your selections to tables where there is a lot of data movement such as accesslog, cache, sessions, and watchdog. You can always make a separate and more infrequent cron as part of your regular server management if you want/need to optimize your node tables.

CDN Integration

The final tip I’ll leave you with is one of the most important and that is serving your static content from a CDN platform. There are many options and one of the easiest and most cost effective to leverage is Cloud Files from the Rackspace Cloud, which has built in CDN integration from Limelight Networks. Off-loading your static content such as images, video, audio, documents, etc to a global content distribution network not only decreases even more load on your hosting platform but it makes site load times significantly faster by serving this content as close as geographically possible to your site visitors (local or close to local data centers).

Uploading content to Cloud Files and enabling CDN distribution takes only a few seconds and is the preferred method for embedding static content, especially large video and audio files. Currently there are a few Drupal modules in development that support Cloud Files and other storage/CDN platforms on varying degrees but none that I’m comfortable mentioning just yet. Once these mature it will only make using these platforms even easier.

Deploying these tips and modules should have a significant impact on your sites performance. There are countless other ways to further optimize your site in addition to this so don’t hesitate to explore other options as well. I hope this is helpful to new Drupal users and even seasoned noders alike.

If you found this article helpful or have anything to add please leave a comment below, I’d love the feedback!

P.S. Looks like I’m going to miss DrupalCon this year for the first time in a few years, I’ll be enjoying my Honeymoon instead. Too bad they moved it to late April. I’ll look forward to 2011!

23
Dec

Cloud / VPS Apache Performance Comparison

DISCLAIMER: I am a Rackspace employee. These tests were not sanctioned by the Rackspace Cloud and were preformed on my own time independently. If you have any questions about the testing methodology don’t hesitate to ask.

—–

UPDATE #1: I received several comments about the testing methodology used in these benchmarks so I wanted to explain further. Each server instance at the Rackspace Cloud, Linode and Amazon are running the exact same Linux distribution (Debian 5.0 Lenny), kernel, architecture (x86_64) and version of Apache (2.2.9 w/ worker MPM).

UPDATE #2: After much concern was raised I went ahead and reran the benchmarks on the small instances after tuning a few settings on the Linode server.

echo 99999 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max

Also, instead of running the tests from a consistent remote location I ran them on the local machines this way I could guarantee that network latency wouldn’t impact the test results in any way.

—–

In the past few weeks there has been a lot of talk about the differences between various Cloud and VPS providers (see my post), mainly revolving around performance. I decided to take some time last week to run some very straight forward and real world tests to gauge performance among the most popular providers: The Rackspace Cloud, Amazon EC2 and Linode.

For the benchmark I decided to use ApacheBench and Siege as *most* users on these platforms are serving some type of web content via Apache. Even if different web server software is used, it is unlikely that the results and trends would differ. As part of a series of posts, I will be running the same benchmarks against static content and dynamic content. This way we can be sure to look fairly at all aspects of each particular platform.

As mentioned, I decided to use ApacheBench and Siege as the testing platforms so I performed a default install of Apache 2.2 with the Worker MPM on each server instance. The server OS platform is Debian 5.0 Lenny on all servers.

These benchmarks are very easy to duplicate, so if you would like to test the results simply replicate the total connections or time and concurrency settings mentioned below.

I did not tweak any of the Apache settings on any of the server instances. I used the default settings of:

<IfModule mpm_worker_module>
StartServers                             2
MaxClients                              150
MinSpareThreads                  25
MaxSpareThreads                 75
ThreadsPerChild                    25
MaxRequestsPerChild          0
</IfModule>

I ran the same tests against each platform and since I was only hitting the default HTML page generated by the Apache install I decided to raise the concurrency limit up to something significant to generate some real load. Each benchmark was run three times over three different days and I took the best result from each set of tests.

ApacheBench: 100,000 Total Connections / 100 Concurrent Connections
Siege: 10 Minutes Under Siege / 50 Concurrent Connections

Let’s get to the results!

Small Size Instances

ApacheBench Results

Rackspace 256MB Cloud Server Linode 360MB Media Temple DV 512
Concurrency Level 100 100 100
Requests [#/sec] (average) 10,706.64 4,554.43 N/A
Time Per Request [ms] (mean) 9.340 21.957 N/A
Transfer Rate [Kbytes/sec] Received 3336.14 1,414.39 N/A

Siege Results

Rackspace 256MB Cloud Server Linode 360MB Media Temple DV 512
Transactions 1,587,997 1,165,412 N/A
Availability 100.00% 100.00% N/A
Response Time 0.04 secs 0.05 secs N/A
Transaction Rate 2,647.68 trans/sec 1,942.90   trans/sec N/A
Successful Transactions 1,587,997 1,165,412 N/A
Failed Transactions 0 0 N/A
Longest Transaction 0.42 0.61 N/A
Shortest Transaction 0.00 0.00 N/A

Review

The Rackspace Cloud Server instance, with only 256 MB of RAM, performed well under the stress as did the Linode 360 server, but there is still a significant difference in the overall performance. This could be due to host server utilization, but according to the Linode control panel the host machine my instance was running on is “low”.

In the Siege results we get some similar insights. The 256 MB Rackspace Cloud Server processed significantly more transactions than the Linode server. Importantly, the transaction rate was also much higher.

There is always a lot of discussion around the Linode 360 server instance being a better value than the 256 MB Rackspace Cloud Server, but the tests show otherwise. In my opinion this is most likely due to Rackspace Cloud’s lower utilization of host hardware and a more robust network.

Large Size Instances

Now lets take a look at the larger instances. I wanted to work Amazon’s EC2 platform into these performance tests and their large instance is most comparable to the Cloud Server and Linode instances of the 8GB variety.

ApacheBench Results

Rackspace 8192MB Cloud Server Linode 8640MB Amazon EC2 Large
Concurrency Level 100 100 100
Requests [#/sec] (average) 10,729.61 9,109.91 6,782.93
Time Per Request [ms] (average) 9.320 10.977 14.743
Transfer Rate [Kbytes/sec] Received 3,363.62 2,829.17 2,113.04

Siege Results

Rackspace 8192MB Cloud Server Linode 8640MB Amazon EC2 Large
Transactions 1,564,152 1,636,652 891,956
Availability 100.00% 100.00% 100.00%
Response Time 0.04 secs 0.04 secs 0.07   secs
Transaction Rate 2,606.79 trans/sec 2,727.34   trans/sec 1,485.80   trans/sec
Successful Transactions 1,564,152 1,636,652 891,956
Failed Transactions 0 0 0
Longest Transaction 0.49 0.22 0.65
Shortest Transaction 0.00 0.00 0.00

Review

As we saw with the smaller instances in the ApacheBench test, the Cloud Server with fewer resources is outpacing both the Linode server and the Large EC2 instance. But in the Siege benchmark we see the Linode instance take the crown for total transaction rate. I would note the larger memory allocation on the Linode server instance might have something to do with these results so be sure to compare price for your particular application.

Amazon’s Large EC2 instance was the slowest of the bunch during the ApacheBench testing but did complete all of the transactions thrown at it during the Siege benchmark.

Final Thoughts

The tests show some significant performance benefits when running on the Rackspace Cloud Servers platform on the low end and similar performance to larger Linode and Amazon instances on the high end even though the comparable Cloud Server had much less memory and therefore lower cost. In my opinion, I believe lower hardware utilization and better host server hardware contribute to these results.

Apache settings can definitely be tweaked to increase performance on any of these platforms; this was just a baseline test using the defaults provided. The next round of tests will focus on serving a dynamic web applications.

If you have any thoughts, questions or comments about the benchmarks performed here please leave a comment below. I’d love to hear from you!

10
Dec

The Rackspace Cloud Control Panel – Why It's Better

If you have been in the hosting business or simply hosting your own web sites for any length of time, you are probably familiar with the most popular commercial control panels on the market: Plesk, cPanel & Ensim. These control panels, while powerful in many respects often introduce more trouble than they are worth in the form of increased resource overhead, buggy implementations, cost, usability, etc.

The Rackspace Cloud has taken a different approach and decided to design and develop their own control panel in house from the beginning. Today, the Cloud control panel is an extremely powerful tool that is built specifically for the three product offerings from the Rackspace Cloud (Cloud Sites, Cloud Servers & Cloud Files). This control panel has many benefits over using a generic commercial CP, for example:

  • Developed and built specifically for the Rackspace Cloud architecture
  • Internal development means it can be more tightly integrated and we can be more nimble to customer feedback and feature requests
  • Years of workflow improvements based on feedback
  • Light and efficient
  • Infrastructure runs separate from your Cloud environment so it does not utilize resources within your hosting platform and consequently cannot impact your sites performance/uptime
  • Near real-time reporting on Cloud specific usage metrics (bandwidth, storage, compute cycles)
  • Custom reseller functionality (Cloud Sites)
  • Advanced built-in ticketing platform
  • Web based file-manager utilities for Cloud Sites & Cloud Files

The Rackspace Cloud control panel offers different features for each product, so lets take a look at these individually.

Cloud Sites

  • Quick view listing of all domains and sub-domains (searchable)
  • 3 step linear process to add a new site (Linux or Windows)
  • Near real-time reporting on bandwidth, compute cycles and storage
  • Raw web server access logs
  • Internal testing URL for each domain
  • Multiple FTP user management
  • Quick view for website features (email, databases, logs, advanced features)
  • Domain Management (renewal, transfer, whois, nameservers)
  • DNS Management (quickly add or change any custom DNS records needed)
  • MX Record Management
  • SPF Record Management
  • SSL Certificate Management
  • Email Management (free Rackspace Mail accounts with Cloud Sites)
  • Spam Filtering & Handling Customization (per domain)
  • Database Creation & Management (MySQL and MS SQL Server)
  • TrueHybrid Technology Platform Management
  • Scheduled Tasks & Cron Job Management
  • Full Server-Side Paths
  • Client/Reseller Management (Client List, Client Plans, Client Products, Client Messaging)
  • Integrated file-manager offering FTP like functionality

View a video demonstration below:

Get the Flash Player to see this content.

Cloud Servers

  • Quick view listing of all provisioned Cloud Servers (searchable)
  • 1 step process to create a new Cloud Server
  • Custom server names for easy server identification
  • Near real-time reporting for bandwidth utilization
  • Quick view for server information: current action, age, RAM, disk space, IP, data center, backups
  • 1 step process to initiate a Cloud Server resize
  • Web based AJAX console for logging into your server instances
  • Soft & Hard Reboot Capabilities
  • Rescue Mode (allows you to debug system issues that are preventing a server from booting to a usable state)
  • Easy rebuild from a default OS image or backup server image
  • Ability to reset server instance root password
  • Delete server (stops your hourly billing at that exact time)
  • DNS and Reverse DNS Record Management
  • Backup Management (set schedule for daily/weekly backups and perform a variable backup on the spot)
  • Server Diagnostics (server state, swap i/o and root i/o usage, server load, disk i/o and network i/o usage, CPU % utilization, CPU time, PING from multiple globals locations)
  • API Access

View a video demonstration below:

Get the Flash Player to see this content.

Cloud Files

  • Integrated file-manager for managing containers & uploading data
  • 1 click CDN publish capability
  • Ability to apply a custom CDN TTL per container (default is 24 hours)
  • Metadata editor
  • Multiple file upload capability
  • API Access

View a video demonstration below:

Get the Flash Player to see this content.

General Features

  • Quick view reporting upon login for each product
  • Detailed reporting section for each product
  • Billing Reports (overview, current invoice, billing history, billing settings)
  • Account Contacts
  • API Access
  • Integrated Live Chat Support
  • Developer Resources
  • Cloud System Status
  • Knowledge Base
  • Customer Forums
  • Support Ticketing
  • Direct Support Phone Numbers

If you have any questions about any of the information listed don’t hesitate to ask me or head over to www.rackspacecloud.com and initiate a live chat (or simply give them a call).

9
Dec

[VIDEO] Installing JungleDisk Server Edition on Cloud Servers

Just a few weeks ago the JungleDisk team announced their entirely new product lineup including the highly anticipated server edition. For those unfamiliar, JungleDisk develops a custom backup application which can store your local system data in the Cloud on platforms like Rackspace Cloud Files or Amazon S3. It supports many advanced features such as block level updates, compression, de-duplication, AES-256 encryption and much more. There are three different editions available for a variety of use cases including: Personal Edition, Workgroup Edition & Server Edition. The pricing ranges anywhere from $2/month per user to $5/month per user or server depending on the edition plus storage fees ($0.15/GB on Rackspace Cloud Files).

I recorded a video tutorial showing the process of installing JungleDisk Server Edition on a Rackspace Cloud Server. Many customers ask about the best way to do file-level backups on Cloud Servers and now the answer is simple: JungleDisk Server Edition. This is a great supplement to the snapshot based image backups that are already available with the Cloud Servers platform.

Check out the video below and if you have any questions or want further information about JungleDisk, head over to their site at www.jungledisk.com. For more information on the Rackspace Cloud and Cloud Server, head over to www.rackspacecloud.com.

Get the Flash Player to see this content.

If you have any feedback or thoughts please leave a comment – thanks!