Making Drupal fly with Pressflow, varnish and more for performance

This article is currently a work in progress.

Drupal I believe is one of the best Open Source content management systems available and it's constantly improving. One of the reasons for its appeal is the amount of modules available that give it a vast array of functionality. This is however a drawback as well. All of this functionality comes at the cost of performance. Even a modest amount of modules left without any performance enhancements turned on will make the most basic of sites very slow. Turning on Drupal's Normal caching offers a significant boost because it caches pages to the database so they don't need to be built again but there's a hell of a lot more you can do. In a nutshell, imagine serving a cached version your website completely from memory without even touching the web server or file system. Of course, at some point requests do need to go through to Drupal and when that happens we can make Drupal perform close to the speed of compiled code.

The technologies that make this possible are reverse proxy caches such as Varnish, and OpCode caching such as APC and database caching with Memcache.

Notes:
Don't check cache for "SESS" (User is logged in - only Pressflow), "NO_CACHE" (User has recently posted), cron.php
Varnish module

Amazon instances

http://thecloudmarket.com/image/ami-9f9f70f6--pantheon-mercury-32-bit-1-0

Innodb

There are various advantages to using Innodb vs Myisam for some database tables. One big issue with Innodb can be the fact that the filesize cannot shrink when rows are deleted and of course the larger a file is, the longer it takes to process. However there is a setting, 'Using Per-Table Tablespaces', that offers several advantages, especially if you are dealing with large tables.
http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html
The advantages are things like being able to store tables on separate physical disks.

Other stuff

Post new comment

By submitting this form, you accept the Mollom privacy policy.

User login

Author of...

  • @Casablanca Looks like a great time last night. Sorry I couldn't make it :( 13 years 26 weeks ago
  • Our new homepage is live http://t.co/iwNX1tWZ 13 years 26 weeks ago
  • Can you help with conditionally setting the 'from' in mails sent with notifications/messaging modules #drupal http://t.co/ItE75IlW 13 years 26 weeks ago
  • My post about highjacking #Drupal menu items with 'drupal_get_form' callbacks for creating popups or #ahah goodness http://t.co/Pe9wSz6k 13 years 27 weeks ago
  • Oh the conflict within. An entire section of a #drupal site was built bespoke, do I add a bespoke subsection, or rewrite the entire section? 13 years 30 weeks ago
  • @psd It depends. Serving static pages means https has a larger relative impact. If there's a lot of processing, https is relatively small. 13 years 31 weeks ago
  • Just had a play with the #drupal Field collection module. goo.gl/p6sEn A really nice Drupal 7 implementation of the multigroup module. 13 years 31 weeks ago
  • @philhawksworth @a_alfredo When will scampcat have the descriptions pop up when you hover over the markers? 13 years 31 weeks ago
Oliver Polden