Upload
chapter-three
View
13.712
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Presentation from BADCamp 2009 on high performance Drupal: how to make your website fast and scalable.
Citation preview
High Performance DrupalMaking Your Site Fast Fast Fast
Drupal Is Powerful
Drupal is Slow
Databases are Slow
PHP Is Slow
Consumer-Grade Networks Are Slow
Increasing Speed Means Diving Less Deeply Into The Stack
Fast Is Making Fewer Requests From Faster Sources
The Life Of A Pageload
• Browser Request
• Browser Cache?
• Network Request
• Server Response
• Associated Assets (back to top)
Optimizing For The Browser
• Make Your HTML/CSS Images Efficient
• Use CSS/JS Aggregation
• Use a CDN
• Yslow is good for profiling this
Optimizing Server Response
• Reverse Proxy/Drupal Page Cache
• PHP OpCode Cache
• Drupal System Cache
Reverse-Proxies Are Very Fast
Faster Than Apache
Much Faster Than Drupal
Don’t Bother Your Power Tools With Simple Tasks
Implementing Varnish
• Use Pressflow
• Implement A Simple VCL Based On Sessions
• Enable Aggressive Caching
• Enjoy, Experiment, Excel
OpCode Caching Keeps Drupal Loaded In Memory
Don’t Touch The Disk
Don’t Load Up Apache Threads With Copies of Drupal
Implementing APC
• The Biggest/Cheapest Win
• Install via apt-get, yum, or pecl
• Monitor with apc.php
• Lots of modules? Bump the SHM size
• Enable apc.stat=0 with caution
Drupal Freezes It’s Code Before Launch
Most Real-World Scaling Information Comes After Release
Drupal Supports A Crazy Array Of Use Cases
$5/month Shared Hosting Is Not High Performance
Pressflow
• “Pressflow Makes Drupal Scale”
• Drop-in Replacement For Core
• Backports many Drupal 7 features
• PHP 5.x/MySQL 5.x Required
• Enables robust reverse-proxy, mysql replication and more
• Runs drupal.org and many other high-performance sites
Drupal Has A Cache And That Is Good
But... Drupal’s Cache Is In The Database
And Serialized.
That Works Anywhere, But Is Both Slow and Expensive
CacheRouter
• Use settings.php to plug in cacherouter instead of /includes/cache.inc
• Pick your poison: APC, XCache, Memcached, Filesystem, or classic db caching.
• Change caches per table.
• Vital for high-speed logged-in pageloads.
Coming Soon: Advcache
• Cache Nodes, Users, Taxonomy Terms and other common objects via cacherouter.
• Extends the notion of drupal’s static cache to whole objects.
• Still in development, but if you’re into writing patches...
Other Tips
• Search is among the slowest and most expensive queries. Use Solr instead.
• InnoDB can help with locking in MySQL
• Hardware is faster and often more cost effective than code cleanup.
• Monitor load and scale ahead of problems.
Benchmarking/Profiling
• Cachegrind to profile code.
• Jmeter to simulate load.
• Slow Query logs, cactai, etc.
Vertical/Horizntal Scaling
• Start with all services you need.
• Separate services into layers.
• Add more servers at each layer as needed.
• Shameless plug: Project Mercury: http://getpantheon.com
More Resources
• http://groups.drupal.org/high-performance
• http://pressflow.org
• http://tag1consulting.com
• http://2bits.com
• http://getpantheon.com