PPT Slides - UniForum Chicago

bammobInternet και Εφαρμογές Web

4 Δεκ 2013 (πριν από 3 χρόνια και 6 μήνες)

76 εμφανίσεις

Make Drupal Run Fast

increase page load speed


www.prometsource.com



‹#›


http://www.flickr.com/photos/joconnell

‹#›

About Promet Source


Build websites


we built using open source tools on LAMP stack,
specializing in Drupal development


www.prometsource.com



Drupal Websites for Associations


FREE websites?? Maybe. Ask me.


www.isupportdigital.com



Managed hosting in our Chicago Data center


History


Founded in 2003


WHQ in Chicago, but mostly virtual


Customers

‹#›

Who is this guy?

‹#›

More about me


my beatifull & supportive wife



‹#›

More about me


shichon.blogspot.com

‹#›

What is page speed? And what is this presentation
about?


What is page load speed?


Tools used to measure performance of your pages and site


Six Key Improvements to make Drupal "run fast"


Performance Module settings and how they work


Caching
-

biggest gainer and how to implement Boost


Other quick hits: off loading search, tweaking settings & why running crons
is important


Ask your host about APC and how to make sure its set up correctly


Dare we look at the database? Easy changes that will help a lot!


‹#›

Other related best practices


Monitoring Best practices
-

what to set up to
make sure you know what is going on with your
server


What if you get slashdoted? Recommendation
on how to quickly take cover from a rhino.


‹#›

Why care about performance?

Google announced earlier this month:

We encourage you to start looking at your site’s speed


not only to improve your
ranking in search engines, but also to improve everyone’s experience on the
Internet.



‹#›

Definitions


Front End Performance Improvement


“In sampling the top ten U.S.
websites, all but one spend less than 20% of the total response time
getting the HTML document. The other 80+% of the time is spent
dealing with what's in the HTML document, namely, the front
-
end.
That's why the key to faster web sites is to focus on improving front
-
end
performance. “**


Back End Performance Improvement


Server related to increase time
to First Byte


Performance


How fast does the page load


Scalability
-

The ability for a distributed system to easily expand and
contract its resource pool to accommodate heavier or lighter loads.


High Availablity

‹#›

Performance and Scalability










How fast do I get my page


… and now when im not the only
one?

Creative Commons Images

http://www.flickr.com/photos/joiseyshowaa/

http://www.flickr.com/photos/matt512/

‹#›

Front End vs. Back End


In sampling the top ten U.S. websites,
all but one spend less than 20% of
the total response time getting the
HTML document. The other 80+% of
the time is spent dealing with what's
in the HTML document, namely, the
front
-
end. That's why the key to faster
web sites is to focus on improving
front
-
end performance.

‹#›

Waterfall diagrams


Start
-

when browser sends request to server


Connect


when server acknowledges the request


First Byte


take it takes the server to render the page and send the first
byte of the HTML


Last Byte


time it takes to transform the data

‹#›

Tools


Yslow for firebug


http://developer.yahoo.com/yslow/



Page Speed
-

firebug


http://code.Google.com/speed/articles/



Web Page Test


http://www.webpagetest.org


Apache Bench


http://httpd.apache.org/docs/2.0/programs/ab.html



JMeter


http://jakarta.apache.org/jmeter/



Devel


http://drupal.org/project/devel




Speed Tracer


chrome



http://code.Google.com/webtoolkit/speedtracer





http://www.flickr.com/photos/bike
/

‹#›

Yslow


Steve Souders, while he
was Chief Performance at
Yahoo! Created YSLOW and
best practices


Firefox firebug plug in


Grades your site based on
yahoo best practices


Scores


higher is better

‹#›

Page Speed



Steve Souders is now
at Google


Google

Recommendations
based on Google best
practices

‹#›

Web Page Test (www.webpagetest.org)



‹#›


‹#›

Jmeter


Java based load testing tool


‹#›

Apache Bench


Very simple “It is designed
to give you an impression of
how your current Apache
installation performs. This
especially shows you how
many requests per second
your Apache installation is
capable of serving.”


Ab

n #
-
c # http://[site]/




‹#›

Devel


great but check views stats separately


‹#›


http://www.flickr.com/people/13809318@N00

‹#›

Six Key Improvements to make Drupal “run fast”


On Site, on page changes (use Yslow and Page speed)


Performance Module settings and how they work


Caching


biggest gainer and how to implement Boost


Other quick hits: off loading search, tweaking settings & why running
crons is important


Ask your host about APC and how to make sure its set up correctly


Dare we look at the database? Easy changes that will help a lot!



Performance improvements are implemented at many levels, are iterative


Change, test, analyze, repeat

‹#›

On Site, on page changes (use Yslow and Page speed)


Make Fewer HTTP requests


Use a CDN


Add Expires headers


Compress components with gzip
deflate


Put CSS at top


Put JavaScript at Bottom


Configure entity tags (ETags)


Use cookie
-
free domains

‹#›

On Site, on page changes (use Yslow and Page speed)


Make fewer HTTP requests


Problem: Make fewer HTTP requests


80% of the end
-
user response time is spent on the front
-
end. Most of this
time is tied up in downloading all the components in the page: images,
stylesheets, scripts, Flash, etc. Reducing the number of components in turn
reduces the number of HTTP requests required to render the page. This is
the key to faster pages.


Drupal Solution


Performance module


turn on Bandwidth optimizations for CSS and
Javascript files


Manual CSS sprite generator

‹#›

On Site, on page changes (use Yslow and Page speed)


-

With lots of objects


serve objects from multiple domains


Serve objects from multiple domains


There is trade off between dns look ups and parallel downloads


Browsers do matter (
www.browserscope.com
)

‹#›

On Site, on page changes (use Yslow and Page speed)


-

Use a CDN


CDN brings your content closer to the edge of the
network, much faster response and download time


Drupal Modules:


http://drupal.org/project/simplecdn



http://drupal.org/project/cdn

by

Wim Leers, needs a cron to run

a fileconveyor


Media Mover


‹#›


http://www.flickr.com/photos/vincepal/

‹#›

Don’t let your traffic get to the DB


it wants to kill it!

Browser


Cache

CDN


Cached
static
content

Reverse Proxy


Cached
Content

Application

Server


APC


Memcache


Boost


Performance
Module **

MySQL


MySQL

caching

Your Data center

‹#›

Performance Module Settings and how they work


‹#›

Apache tuning for Drupal


Extend mod_expires setting (make sure its on)
in drupal .htaccess


Compress content before sending it


Apache deflate_module


Solution nginx


gzip module


.htaccess move to httpd.conf eliminates
Apache parse and search on every load


Browser


Cache

‹#›

Caching


reverse proxy


Caching
-

Very high performance gain


Advanced Step: Squid/Varnish
(
http://drupal.org/node/91813

)


Very high performance gain


Sidesteps web servers, may be implemented on
separate servers



Reverse Proxy


Cached
Content

‹#›

Cache


Cache Router


Uses
fastpath
setting, bypassing default cache use


Enables different caching options


Faster because it by
-
passes database


Further configuration is necessary


Application

Server


APC


Memcache


Boost


Performance
Module **

‹#›

Cache


Memcache module


Very simple caching mechanism


uses pair values stored in memory


Very fast


Using memcache by
-
passes the database caching


Is scalable and distrubuted


May live on other servers

Memcache

Serverer1

Bin:cache

Bin:Cache_block

Bin:Cache_filter

Bin…

Memcache

Server2

Bin:cache

Bin:Cache_block

Bin:Cache_filter

Bin…

Memcache

Server3

Bin:cache

Bin:Cache_block

Bin:Cache_filter

Bin…

Application

Server


APC


Memcache


Boost


Performance
Module **

‹#›

Caching using Boost


Extension of Performance module


Instead of caching results in tables, stores them in files
bypassing PHP and MySQL


Limited to anonymous visitors


so good for slashdot but
not for sites with high number of authenticated visitors


How it works:

Uses apache mod_rewrite directives in .htacess to check if GET

Logged in cookie does not exist

HTML file cached on fiilesystem




Application

Server


APC


Memcache


Boost


Performance
Module **

‹#›

Boost Logic


http://drupal.org/files/images/Boost.preview.png

‹#›

Back End


PHP Accelerator



APC is the Alternative PHP
Cache, which is a free, open, and
robust framework for caching and
optimizing PHP intermediate
code.


APC caching PHP code in a
compiled state


Needs to be looked at after
installation for proper
configuration, but generally a big
performance boost


Xcache and eacceletarotor are
other options


Application

Server


APC


Memcache


Boost


Performance
Module **

‹#›

MySQL caching


Enable MySQL Query Cache & give it memory


Index Slow queries that run often


Log
-
slow
-
queries


Use explain


Index indicies used


Some configuration considerations


InnoDB Buffer Pool ++


Key_buffer is important for temp tables


Core Search Runs Better on MyISAM (but don’t use core
search)


MySQL


MySQL

caching

‹#›

Back End


MySQL is core of Drupal


MySQL tuning is important but may performance gain may not be as
great as that of caching or front end


Always run and check slow query log often /Prune Drupal cache tables
on busy sites


Database Performance/MySQL


Convert Tables to InnoDB


Row level locking, less problematic on inserts than MyISAM


Advantages debated, but Drupal 7 install will be on InnoDB

‹#›


http://www.flickr.com/photos/howar
dlake

‹#›

Other quick Hits: off loading search, tweaking settings &
why running crons is important
-

search


Search is resource intensive


Consider moving to Apache Solr
or using Google Search free or
Google Custom Search Engine


Especially if converting tables to
innoDB


‹#›

Drupal settings for performance improvement


Always run cron


Set minimum cache lifetime to 0 and increase garbage collector run
frequency for busy sites


Settings.php:


Session.gc_maxlifetime


Session.cache_expire


Write watchdog entries to syslog instead of db table




‹#›

Monitoring Tools


Must have in server tuning


Trend spotting



You can not fix back end
problems if you do not know what
they are


Capacity & Load


Review impact of changes


Analyze Trends


Failure & Uptime


Nagios


3
rd

party tools

‹#›

What if you get slashdotted?


RUN! PANIC!

ANDY@PROMETSOURCE.COM

Blog: www.linuxsysadminblog.com

Site: www.prometsource.com

Questions ?