Your SlideShare is downloading. ×
High Performance Drupal
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

High Performance Drupal

13,637
views

Published on

Presentation from BADCamp 2009 on high performance Drupal: how to make your website fast and scalable.

Presentation from BADCamp 2009 on high performance Drupal: how to make your website fast and scalable.

Published in: Technology

1 Comment
17 Likes
Statistics
Notes
  • This resource will be useful for those who are dealing with Drupal performance and optimization tasks: http://drupalperformanceblog.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
13,637
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
218
Comments
1
Likes
17
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. High Performance Drupal Making Your Site Fast Fast Fast
  • 2. Drupal Is Powerful
  • 3. Drupal is Slow
  • 4. Databases are Slow
  • 5. PHP Is Slow
  • 6. Consumer-Grade Networks Are Slow
  • 7. Increasing Speed Means Diving Less Deeply Into The Stack
  • 8. Fast Is Making Fewer Requests From Faster Sources
  • 9. The Life Of A Pageload • Browser Request • Browser Cache? • Network Request • Server Response • Associated Assets (back to top)
  • 10. Optimizing For The Browser • Make Your HTML/CSS Images Efficient • Use CSS/JS Aggregation • Use a CDN • Yslow is good for profiling this
  • 11. Optimizing Server Response • Reverse Proxy/Drupal Page Cache • PHP OpCode Cache • Drupal System Cache
  • 12. Reverse-Proxies Are Very Fast
  • 13. Faster Than Apache
  • 14. Much Faster Than Drupal
  • 15. Don’t Bother Your Power Tools With Simple Tasks
  • 16. Implementing Varnish • Use Pressflow • Implement A Simple VCL Based On Sessions • Enable Aggressive Caching • Enjoy, Experiment, Excel
  • 17. OpCode Caching Keeps Drupal Loaded In Memory
  • 18. Don’t Touch The Disk
  • 19. Don’t Load Up Apache Threads With Copies of Drupal
  • 20. 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
  • 21. Drupal Freezes It’s Code Before Launch
  • 22. Most Real-World Scaling Information Comes After Release
  • 23. Drupal Supports A Crazy Array Of Use Cases
  • 24. $5/month Shared Hosting Is Not High Performance
  • 25. 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
  • 26. Drupal Has A Cache And That Is Good
  • 27. But... Drupal’s Cache Is In The Database
  • 28. And Serialized.
  • 29. That Works Anywhere, But Is Both Slow and Expensive
  • 30. 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.
  • 31. 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...
  • 32. 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.
  • 33. Benchmarking/Profiling • Cachegrind to profile code. • Jmeter to simulate load. • Slow Query logs, cactai, etc.
  • 34. 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
  • 35. More Resources • http://groups.drupal.org/high-performance • http://pressflow.org • http://tag1consulting.com • http://2bits.com • http://getpantheon.com