SlideShare une entreprise Scribd logo
1  sur  171
Télécharger pour lire hors ligne
Why Drupal Is So Slow
Why Drupal Is So Slow
Why Drupal is so
SLOW ...?!!!
Why Drupal is so
SLOW ...?!!!
Why Drupal Is So Slow
•   long term drupal user (2001)
•   long term drupal user (2001)

•   schenker domain d.o
•   long term drupal user (2001)

•   schenker domain d.o

•   Permanent Member Drupal Association
•   long term drupal user (2001)

•   schenker domain d.o

•   Permanent Member Drupal Association

•   bertboerland op elk sociaal netwerk
    (hint: @bertboerland op twitter :-)
•   long term drupal user (2001)

•   schenker domain d.o

•   Permanent Member Drupal Association

•   bertboerland op elk sociaal netwerk
    (hint: @bertboerland op twitter :-)

•   werkzaam DOP (“we are hiring”)
“Thank you #ATOS for hosting the #phpbnl
meeting”
Why Drupal Is So Slow
•   Hashtag #phpbnl
•   Hashtag #phpbnl

•   Subhastag @bertboerland #fail :-)
Why Drupal Is So Slow
Why Drupal Is So Slow
Why Drupal Is So Slow
Why Drupal Is So Slow
Why Drupal Is So Slow
•   Wie heeft Drupal geïnstalleerd?
•   Wie heeft Drupal geïnstalleerd?

•   Wie heeft high volume PHP websites gebouwd?
•   Wie heeft Drupal geïnstalleerd?

•   Wie heeft high volume PHP websites gebouwd?

•   Wie heeft high volume Drupal websites gebouwd?
•   Wie heeft Drupal geïnstalleerd?

•   Wie heeft high volume PHP websites gebouwd?

•   Wie heeft high volume Drupal websites gebouwd?

•   Wie is ooit tegen Drupal performance aangelopen?
Why Drupal Is So Slow
•   Google: +0,4 seconde = -0,6% verkeer
•   Google: +0,4 seconde = -0,6% verkeer

•   Yahoo! +0,4 seconde = -7% verkeer
•   Google: +0,4 seconde = -0,6% verkeer

•   Yahoo! +0,4 seconde = -7% verkeer

•   Bing: -2 seconde = +4% verkeer
•   Google: +0,4 seconde = -0,6% verkeer

•   Yahoo! +0,4 seconde = -7% verkeer

•   Bing: -2 seconde = +4% verkeer

•   Shopzilla: -5 seconde = +12% omzet,
    50% minder bandbreedte
•   Google: +0,4 seconde = -0,6% verkeer

•   Yahoo! +0,4 seconde = -7% verkeer

•   Bing: -2 seconde = +4% verkeer

•   Shopzilla: -5 seconde = +12% omzet,
    50% minder bandbreedte
•   Google: +0,4 seconde = -0,6% verkeer

•   Yahoo! +0,4 seconde = -7% verkeer

•   Bing: -2 seconde = +4% verkeer

•   Shopzilla: -5 seconde = +12% omzet,
    50% minder bandbreedte




•   Sneller = beter UX, meer verkeer, meer omzet, minder kosten!
Why Drupal Is So Slow
•   Keten
•   Keten

•   Drupal
•   Keten

•   Drupal

•   Proces
Why Drupal Is So Slow
•   NCRV.nl en RNW.nl

•   Honderduizendenden hits per dag, Tienduizend artikelen per maand
•   RNW.nl
Why Drupal Is So Slow
user > browser > network > site
user > browser > network > site
user > browser > network > site
Why Drupal Is So Slow
Why Drupal Is So Slow
Why Drupal Is So Slow
•   Juiste gestructureerde informatie verkrijgen; “het is langzaam” vs tijd, browser,
    actie, URL etc...
•   Juiste gestructureerde informatie verkrijgen; “het is langzaam” vs tijd, browser,
    actie, URL etc...

•   Redacteur stemt niet met zijn voeten.
•   Juiste gestructureerde informatie verkrijgen; “het is langzaam” vs tijd, browser,
    actie, URL etc...

•   Redacteur stemt niet met zijn voeten.

•   Ingelogd of niet?
•   Juiste gestructureerde informatie verkrijgen; “het is langzaam” vs tijd, browser,
    actie, URL etc...

•   Redacteur stemt niet met zijn voeten.

•   Ingelogd of niet?
•   Juiste gestructureerde informatie verkrijgen; “het is langzaam” vs tijd, browser,
    actie, URL etc...

•   Redacteur stemt niet met zijn voeten.

•   Ingelogd of niet?
Why Drupal Is So Slow
Why Drupal Is So Slow
Why Drupal Is So Slow
Why Drupal Is So Slow
Why Drupal Is So Slow
•   Progressive rendering (HTML en plaatjes)
•   Progressive rendering (HTML en plaatjes)

•   Externe Javascript (extern domain als CDN)
•   Progressive rendering (HTML en plaatjes)

•   Externe Javascript (extern domain als CDN)

•   CSS Sprites
•   Progressive rendering (HTML en plaatjes)

•   Externe Javascript (extern domain als CDN)

•   CSS Sprites

•   Reduce DNS lookups (Google analytics, online AJAX scripts as a service)
•   Progressive rendering (HTML en plaatjes)

•   Externe Javascript (extern domain als CDN)

•   CSS Sprites

•   Reduce DNS lookups (Google analytics, online AJAX scripts as a service)

•   ....
•   Progressive rendering (HTML en plaatjes)

•   Externe Javascript (extern domain als CDN)

•   CSS Sprites

•   Reduce DNS lookups (Google analytics, online AJAX scripts as a service)

•   ....
Why Drupal Is So Slow
Tools:
Tools:

•   YSlow
Tools:

•   YSlow

•   JSLint
Tools:

•   YSlow

•   JSLint

•   NET
Tools:

•   YSlow

•   JSLint

•   NET

•   CSS Sprite generatoren
Tools:

•   YSlow

•   JSLint

•   NET

•   CSS Sprite generatoren

•   HTML, CSS, RSS validatie
Tools:

•   YSlow

•   JSLint

•   NET

•   CSS Sprite generatoren

•   HTML, CSS, RSS validatie
Why Drupal Is So Slow
Why Drupal Is So Slow
•   Asymetrische routering is een feit (en niet te zien!)
•   Asymetrische routering is een feit (en niet te zien!)

•   BGP is niet voor watjes
•   Asymetrische routering is een feit (en niet te zien!)

•   BGP is niet voor watjes

•   Bandbreedte meet je niet in Mbps (“it’s the latency stupid!”)
•   Asymetrische routering is een feit (en niet te zien!)

•   BGP is niet voor watjes

•   Bandbreedte meet je niet in Mbps (“it’s the latency stupid!”)

•   Locatie maakt uit (100ms roundtrip normaal)
•   Asymetrische routering is een feit (en niet te zien!)

•   BGP is niet voor watjes

•   Bandbreedte meet je niet in Mbps (“it’s the latency stupid!”)

•   Locatie maakt uit (100ms roundtrip normaal)

•   Gebruik CDN pas als het een oplossing is (duur, ingewikkeld, USA centric)
Why Drupal Is So Slow
Tools
Tools

•   AS Looking glasses
Tools

•   AS Looking glasses

•   MTR
Tools

•   AS Looking glasses

•   MTR
Why Drupal Is So Slow
•   Doe maar geen Source / Destiantie hash op je loadbalancers :-)
•   Doe maar geen Source / Destiantie hash op je loadbalancers :-)

•   Least connections kan beste zijn
•   Doe maar geen Source / Destiantie hash op je loadbalancers :-)

•   Least connections kan beste zijn

•   Route static direct naar andere webserver
    phpworkers voor echte werk.
•   Doe maar geen Source / Destiantie hash op je loadbalancers :-)

•   Least connections kan beste zijn

•   Route static direct naar andere webserver
    phpworkers voor echte werk.

•   lighttp is een betere vriend dan Apache
•   Doe maar geen Source / Destiantie hash op je loadbalancers :-)

•   Least connections kan beste zijn

•   Route static direct naar andere webserver
    phpworkers voor echte werk.

•   lighttp is een betere vriend dan Apache

•   Varnish is een veeeel betere vriend dan Squid
•   Doe maar geen Source / Destiantie hash op je loadbalancers :-)

•   Least connections kan beste zijn

•   Route static direct naar andere webserver
    phpworkers voor echte werk.

•   lighttp is een betere vriend dan Apache

•   Varnish is een veeeel betere vriend dan Squid

•   Filesysteem kan al uitmaken, inodes, swapspace, netwerkkaarten...
•   Doe maar geen Source / Destiantie hash op je loadbalancers :-)

•   Least connections kan beste zijn

•   Route static direct naar andere webserver
    phpworkers voor echte werk.

•   lighttp is een betere vriend dan Apache

•   Varnish is een veeeel betere vriend dan Squid

•   Filesysteem kan al uitmaken, inodes, swapspace, netwerkkaarten...
Why Drupal Is So Slow
•   Apache tunen is een kunst, PHP tunen is een martial art
•   Apache tunen is een kunst, PHP tunen is een martial art

•   PHP 16 MB is niets, 128 bijna norm (modules vreten geheugen)
•   Apache tunen is een kunst, PHP tunen is een martial art

•   PHP 16 MB is niets, 128 bijna norm (modules vreten geheugen)

•   Keepalive en pipelining helpen (HTTP/1.1)
•   Apache tunen is een kunst, PHP tunen is een martial art

•   PHP 16 MB is niets, 128 bijna norm (modules vreten geheugen)

•   Keepalive en pipelining helpen (HTTP/1.1)

•   Filesysteem (hdparm) optimaliseren
•   Apache tunen is een kunst, PHP tunen is een martial art

•   PHP 16 MB is niets, 128 bijna norm (modules vreten geheugen)

•   Keepalive en pipelining helpen (HTTP/1.1)

•   Filesysteem (hdparm) optimaliseren

•   Log enkel in error reporting wat je nodig hebt
•   Apache tunen is een kunst, PHP tunen is een martial art

•   PHP 16 MB is niets, 128 bijna norm (modules vreten geheugen)

•   Keepalive en pipelining helpen (HTTP/1.1)

•   Filesysteem (hdparm) optimaliseren

•   Log enkel in error reporting wat je nodig hebt

•   Gzip pages op webserver, niet door Drupal :-)
•   Apache tunen is een kunst, PHP tunen is een martial art

•   PHP 16 MB is niets, 128 bijna norm (modules vreten geheugen)

•   Keepalive en pipelining helpen (HTTP/1.1)

•   Filesysteem (hdparm) optimaliseren

•   Log enkel in error reporting wat je nodig hebt

•   Gzip pages op webserver, niet door Drupal :-)

•   Schrijf logging naar raw sockets naar syslog server
•   Do use opcode cachers! (APC)
•   Do use opcode cachers! (APC)
•   Do use opcode cachers! (APC)
•   Do use opcode cachers! (APC)
•   Do use opcode cachers! (APC)
Why Drupal Is So Slow
•   Standaard caching in database
•   Standaard caching in database

•   Helemaal aan het einde van de keten
•   Standaard caching in database

•   Helemaal aan het einde van de keten

•   Beter dan niets
•   Standaard caching in database

•   Helemaal aan het einde van de keten

•   Beter dan niets

•   Daar is alles mee gezegd...
Why Drupal Is So Slow
•   Standaard module
•   Standaard module

•   “Bijna geen issues”
•   Standaard module

•   “Bijna geen issues”

•   Alle anon bezoek cachen
•   Standaard module

•   “Bijna geen issues”

•   Alle anon bezoek cachen

•   Hit rate vaak rond 90%
•   Standaard module

•   “Bijna geen issues”

•   Alle anon bezoek cachen

•   Hit rate vaak rond 90%

•   Load database
•   Standaard module

•   “Bijna geen issues”

•   Alle anon bezoek cachen

•   Hit rate vaak rond 90%

•   Load database

•   Installatie 2 uur max
Why Drupal Is So Slow
•   Standaard module
•   Standaard module

•   Database 1,5 GB waarvan 800MB search
•   Standaard module

•   Database 1,5 GB waarvan 800MB search

•   Geen spider (W.I.P)
•   Standaard module

•   Database 1,5 GB waarvan 800MB search

•   Geen spider (W.I.P)

•   Standaard search geeft veel Slow Queries
•   Standaard module

•   Database 1,5 GB waarvan 800MB search

•   Geen spider (W.I.P)

•   Standaard search geeft veel Slow Queries

•   Search niet meer ‘echt’ geupdate sinds 4.7
•   Standaard module

•   Database 1,5 GB waarvan 800MB search

•   Geen spider (W.I.P)

•   Standaard search geeft veel Slow Queries

•   Search niet meer ‘echt’ geupdate sinds 4.7

•   Veel betere stemming, AJAX, extensies
•   Standaard module

•   Database 1,5 GB waarvan 800MB search

•   Geen spider (W.I.P)

•   Standaard search geeft veel Slow Queries

•   Search niet meer ‘echt’ geupdate sinds 4.7

•   Veel betere stemming, AJAX, extensies

•   het blijft Java :-)
Why Drupal Is So Slow
•   Ook als service te “koop”
•   Ook als service te “koop”

•   Autocomplete modules
•   Ook als service te “koop”

•   Autocomplete modules

•   Faceted search modules
•   Ook als service te “koop”

•   Autocomplete modules

•   Faceted search modules

•   CCK integration
•   Ook als service te “koop”

•   Autocomplete modules

•   Faceted search modules

•   CCK integration

•   Views integration
•   Ook als service te “koop”

•   Autocomplete modules

•   Faceted search modules

•   CCK integration

•   Views integration

•   UTF8
•   Ook als service te “koop”

•   Autocomplete modules

•   Faceted search modules

•   CCK integration

•   Views integration

•   UTF8

•   Bloedsnel
Why Drupal Is So Slow
•   Redelijk goed te doen
•   Redelijk goed te doen

•   Start met MySQLAdmin
•   Redelijk goed te doen

•   Start met MySQLAdmin

•   MySQLOptimize is symptoom bestrijding
    (but so is duckttape)
•   Redelijk goed te doen

•   Start met MySQLAdmin

•   MySQLOptimize is symptoom bestrijding
    (but so is duckttape)

•   Persistent db connecties
•   Redelijk goed te doen

•   Start met MySQLAdmin

•   MySQLOptimize is symptoom bestrijding
    (but so is duckttape)

•   Persistent db connecties

•   InnoDb beats MyIsam (but not always)
•   Redelijk goed te doen

•   Start met MySQLAdmin

•   MySQLOptimize is symptoom bestrijding
    (but so is duckttape)

•   Persistent db connecties

•   InnoDb beats MyIsam (but not always)

•   Elke my.cnf is specifiek
•   Redelijk goed te doen

•   Start met MySQLAdmin

•   MySQLOptimize is symptoom bestrijding
    (but so is duckttape)

•   Persistent db connecties

•   InnoDb beats MyIsam (but not always)

•   Elke my.cnf is specifiek

•   Kijk naar andere databases
Why Drupal Is So Slow
Why Drupal Is So Slow
•   Javascript aggregatie
•   Javascript aggregatie

•   CSS aggregatie
•   Javascript aggregatie

•   CSS aggregatie

•   Logging uit of naar syslog
•   Javascript aggregatie

•   CSS aggregatie

•   Logging uit of naar syslog

•   Caching normaal 5 minuten (block cache als mogelijk)
•   Javascript aggregatie

•   CSS aggregatie

•   Logging uit of naar syslog

•   Caching normaal 5 minuten (block cache als mogelijk)

•   cron.php 5 minuten
•   Javascript aggregatie

•   CSS aggregatie

•   Logging uit of naar syslog

•   Caching normaal 5 minuten (block cache als mogelijk)

•   cron.php 5 minuten

•   Anti spam dienst als Captcha of mollom
•   Javascript aggregatie

•   CSS aggregatie

•   Logging uit of naar syslog

•   Caching normaal 5 minuten (block cache als mogelijk)

•   cron.php 5 minuten

•   Anti spam dienst als Captcha of mollom

•   XML sitemap en Google news views
•   Javascript aggregatie

•   CSS aggregatie

•   Logging uit of naar syslog

•   Caching normaal 5 minuten (block cache als mogelijk)

•   cron.php 5 minuten

•   Anti spam dienst als Captcha of mollom

•   XML sitemap en Google news views

•   Devel uit :-)
Why Drupal Is So Slow
•   SOLR/Memcache
•   SOLR/Memcache

•   Boost
•   SOLR/Memcache

•   Boost

•   Cacherouter
•   SOLR/Memcache

•   Boost

•   Cacherouter

•   Block caching
•   SOLR/Memcache

•   Boost

•   Cacherouter

•   Block caching
•   SOLR/Memcache

•   Boost

•   Cacherouter

•   Block caching




•   DOP: views optimalisatie
•   SOLR/Memcache

•   Boost

•   Cacherouter

•   Block caching




•   DOP: views optimalisatie
Why Drupal Is So Slow
http://groups.drupal.org/node/25617
Why Drupal Is So Slow
•   Groups http://groups.drupal.org/high-performance
•   Groups http://groups.drupal.org/high-performance

•   Drupal Handbook http://drupal.org/node/326504
•   Groups http://groups.drupal.org/high-performance

•   Drupal Handbook http://drupal.org/node/326504

•   Drupal Modules http://drupal.org/project/modules?filters=tid:123
•   Groups http://groups.drupal.org/high-performance

•   Drupal Handbook http://drupal.org/node/326504

•   Drupal Modules http://drupal.org/project/modules?filters=tid:123

•   2Bits heerst! http://2bits.com/articles/drupal-performance-tuning-and-
    optimization-for-large-web-sites.html
Why Drupal Is So Slow
Use real data!
Verander een ding
ter gelijke tijd
Sluit niets uit,

Denk buiten de
doos!
Geen twee
trajecten zijn
het zelfde!
Verleidelijk om op
laureren te rusten
als is opgelost...
... maar het is nooit opgelost
•   ab / jmeter

•   develop module

•   Yslow

•   PHP logging

•   MyTop

•   Explain

•   BRAIN
zakelijk: bert.boerland@dop.nu

prive: bert@boerland.com

http://twitter.com/bertboerland

http://nl.linkedin.com/in/bertboerland
Why Drupal Is So Slow

Contenu connexe

Similaire à Why Drupal Is So Slow

SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014
SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014
SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014Joost de Valk
 
2010 iska - tim m - nosql iska
2010   iska - tim m - nosql iska2010   iska - tim m - nosql iska
2010 iska - tim m - nosql iskaTim Mahy
 
TYPO3 Congres 2012 - Introductie werken met CSS preprocessors
TYPO3 Congres 2012 - Introductie werken met CSS preprocessorsTYPO3 Congres 2012 - Introductie werken met CSS preprocessors
TYPO3 Congres 2012 - Introductie werken met CSS preprocessorsTYPO3 Nederland
 
Robot framework en Browser Library
Robot framework en Browser LibraryRobot framework en Browser Library
Robot framework en Browser Librarychristiantester
 
Autoblog Wordcamp 2009
Autoblog Wordcamp 2009Autoblog Wordcamp 2009
Autoblog Wordcamp 2009Erno Hannink
 
Javascript Intro
Javascript IntroJavascript Intro
Javascript IntroHans Rossel
 
Going live with a Checklist
Going live with a ChecklistGoing live with a Checklist
Going live with a ChecklistRené Kreijveld
 
FMSummit 2011 Sessie scripting
FMSummit 2011 Sessie scriptingFMSummit 2011 Sessie scripting
FMSummit 2011 Sessie scriptingJeroen Aarts
 
HTML5. Waarom HTML5 nu relevant is voor jóu.
HTML5. Waarom HTML5 nu relevant is voor jóu.HTML5. Waarom HTML5 nu relevant is voor jóu.
HTML5. Waarom HTML5 nu relevant is voor jóu.Willem Mulder
 
Headless Drupal - Wat, Waarom, Hoe & Uitdagingen
Headless Drupal - Wat, Waarom, Hoe & UitdagingenHeadless Drupal - Wat, Waarom, Hoe & Uitdagingen
Headless Drupal - Wat, Waarom, Hoe & UitdagingenLuciuswebsystems
 
NL Front-end Guidelines (HTML,CSS,Javascript)
NL Front-end Guidelines (HTML,CSS,Javascript)NL Front-end Guidelines (HTML,CSS,Javascript)
NL Front-end Guidelines (HTML,CSS,Javascript)Mathijs Jong
 
Registreren en publiceren volgens CEST richtlijnen
Registreren en publiceren volgens CEST richtlijnenRegistreren en publiceren volgens CEST richtlijnen
Registreren en publiceren volgens CEST richtlijnenPACKED vzw
 
WordPress core contributions
WordPress core contributionsWordPress core contributions
WordPress core contributionsCoen Jacobs
 
PFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsPFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsRichard Tuin
 

Similaire à Why Drupal Is So Slow (20)

SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014
SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014
SSL, SEO en Snelheid - WP Meetup Nijmegen 11 september 2014
 
2010 iska - tim m - nosql iska
2010   iska - tim m - nosql iska2010   iska - tim m - nosql iska
2010 iska - tim m - nosql iska
 
Drupal8
Drupal8Drupal8
Drupal8
 
TYPO3 Congres 2012 - Introductie werken met CSS preprocessors
TYPO3 Congres 2012 - Introductie werken met CSS preprocessorsTYPO3 Congres 2012 - Introductie werken met CSS preprocessors
TYPO3 Congres 2012 - Introductie werken met CSS preprocessors
 
Robot framework en Browser Library
Robot framework en Browser LibraryRobot framework en Browser Library
Robot framework en Browser Library
 
Autoblog Wordcamp 2009
Autoblog Wordcamp 2009Autoblog Wordcamp 2009
Autoblog Wordcamp 2009
 
Een goede DEV omgeving opzetten
Een goede DEV omgeving opzettenEen goede DEV omgeving opzetten
Een goede DEV omgeving opzetten
 
Javascript Intro
Javascript IntroJavascript Intro
Javascript Intro
 
Introduction to VCS
Introduction to VCSIntroduction to VCS
Introduction to VCS
 
Going live with a Checklist
Going live with a ChecklistGoing live with a Checklist
Going live with a Checklist
 
Speeding up WordPress
Speeding up WordPressSpeeding up WordPress
Speeding up WordPress
 
FMSummit 2011 Sessie scripting
FMSummit 2011 Sessie scriptingFMSummit 2011 Sessie scripting
FMSummit 2011 Sessie scripting
 
HTML5. Waarom HTML5 nu relevant is voor jóu.
HTML5. Waarom HTML5 nu relevant is voor jóu.HTML5. Waarom HTML5 nu relevant is voor jóu.
HTML5. Waarom HTML5 nu relevant is voor jóu.
 
Headless Drupal - Wat, Waarom, Hoe & Uitdagingen
Headless Drupal - Wat, Waarom, Hoe & UitdagingenHeadless Drupal - Wat, Waarom, Hoe & Uitdagingen
Headless Drupal - Wat, Waarom, Hoe & Uitdagingen
 
NL Front-end Guidelines (HTML,CSS,Javascript)
NL Front-end Guidelines (HTML,CSS,Javascript)NL Front-end Guidelines (HTML,CSS,Javascript)
NL Front-end Guidelines (HTML,CSS,Javascript)
 
Registreren en publiceren volgens CEST richtlijnen
Registreren en publiceren volgens CEST richtlijnenRegistreren en publiceren volgens CEST richtlijnen
Registreren en publiceren volgens CEST richtlijnen
 
Radiant
RadiantRadiant
Radiant
 
WordPress core contributions
WordPress core contributionsWordPress core contributions
WordPress core contributions
 
PFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsPFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele tests
 
Zoekmachine Optimalisatie
Zoekmachine OptimalisatieZoekmachine Optimalisatie
Zoekmachine Optimalisatie
 

Plus de Bert Boerland

Drupaljam 2017 opening
Drupaljam 2017 openingDrupaljam 2017 opening
Drupaljam 2017 openingBert Boerland
 
Drupaljam 2017 closing
Drupaljam 2017 closingDrupaljam 2017 closing
Drupaljam 2017 closingBert Boerland
 
Drupal jam 2015 closing
Drupal jam 2015 closing Drupal jam 2015 closing
Drupal jam 2015 closing Bert Boerland
 
Wunderkraut Pub Quiz
Wunderkraut Pub QuizWunderkraut Pub Quiz
Wunderkraut Pub QuizBert Boerland
 
presentatie natuurlijke user interface nui
presentatie natuurlijke user interface nuipresentatie natuurlijke user interface nui
presentatie natuurlijke user interface nuiBert Boerland
 
Drupaljam 2013 rotterdam opening
Drupaljam 2013 rotterdam openingDrupaljam 2013 rotterdam opening
Drupaljam 2013 rotterdam openingBert Boerland
 
DOP Drupal marketing initatief
DOP Drupal marketing initatiefDOP Drupal marketing initatief
DOP Drupal marketing initatiefBert Boerland
 
Drupaljam 8 zoetermeer opening
Drupaljam 8 zoetermeer openingDrupaljam 8 zoetermeer opening
Drupaljam 8 zoetermeer openingBert Boerland
 
Drupaljam 7 aanbesteden sessie
Drupaljam 7 aanbesteden sessieDrupaljam 7 aanbesteden sessie
Drupaljam 7 aanbesteden sessieBert Boerland
 
PMLF Congres: Sociale Media
PMLF Congres: Sociale MediaPMLF Congres: Sociale Media
PMLF Congres: Sociale MediaBert Boerland
 
Presentatie sponsoring en opensource conferenties FOSS11
Presentatie sponsoring en opensource conferenties FOSS11Presentatie sponsoring en opensource conferenties FOSS11
Presentatie sponsoring en opensource conferenties FOSS11Bert Boerland
 
Closing talk DrupalJam 6
Closing talk DrupalJam 6Closing talk DrupalJam 6
Closing talk DrupalJam 6Bert Boerland
 
Open Source Software in a nutshell
Open Source Software in a nutshellOpen Source Software in a nutshell
Open Source Software in a nutshellBert Boerland
 

Plus de Bert Boerland (17)

Drupal voor nllgg
Drupal voor nllggDrupal voor nllgg
Drupal voor nllgg
 
Drupaljam 2017 opening
Drupaljam 2017 openingDrupaljam 2017 opening
Drupaljam 2017 opening
 
Drupaljam 2017 closing
Drupaljam 2017 closingDrupaljam 2017 closing
Drupaljam 2017 closing
 
Drupal jam 2015 closing
Drupal jam 2015 closing Drupal jam 2015 closing
Drupal jam 2015 closing
 
Wunderkraut Pub Quiz
Wunderkraut Pub QuizWunderkraut Pub Quiz
Wunderkraut Pub Quiz
 
presentatie natuurlijke user interface nui
presentatie natuurlijke user interface nuipresentatie natuurlijke user interface nui
presentatie natuurlijke user interface nui
 
Drupaljam 2013 rotterdam opening
Drupaljam 2013 rotterdam openingDrupaljam 2013 rotterdam opening
Drupaljam 2013 rotterdam opening
 
DOP Drupal marketing initatief
DOP Drupal marketing initatiefDOP Drupal marketing initatief
DOP Drupal marketing initatief
 
Drupaljam 8 zoetermeer opening
Drupaljam 8 zoetermeer openingDrupaljam 8 zoetermeer opening
Drupaljam 8 zoetermeer opening
 
Drupaljam 7 aanbesteden sessie
Drupaljam 7 aanbesteden sessieDrupaljam 7 aanbesteden sessie
Drupaljam 7 aanbesteden sessie
 
PMLF Congres: Sociale Media
PMLF Congres: Sociale MediaPMLF Congres: Sociale Media
PMLF Congres: Sociale Media
 
Presentatie sponsoring en opensource conferenties FOSS11
Presentatie sponsoring en opensource conferenties FOSS11Presentatie sponsoring en opensource conferenties FOSS11
Presentatie sponsoring en opensource conferenties FOSS11
 
Closing talk DrupalJam 6
Closing talk DrupalJam 6Closing talk DrupalJam 6
Closing talk DrupalJam 6
 
Gast College
Gast CollegeGast College
Gast College
 
Locatie2.
Locatie2.Locatie2.
Locatie2.
 
Open Source Software in a nutshell
Open Source Software in a nutshellOpen Source Software in a nutshell
Open Source Software in a nutshell
 
Drupal Ncrv
Drupal NcrvDrupal Ncrv
Drupal Ncrv
 

Why Drupal Is So Slow

  • 3. Why Drupal is so SLOW ...?!!!
  • 4. Why Drupal is so SLOW ...?!!!
  • 6. long term drupal user (2001)
  • 7. long term drupal user (2001) • schenker domain d.o
  • 8. long term drupal user (2001) • schenker domain d.o • Permanent Member Drupal Association
  • 9. long term drupal user (2001) • schenker domain d.o • Permanent Member Drupal Association • bertboerland op elk sociaal netwerk (hint: @bertboerland op twitter :-)
  • 10. long term drupal user (2001) • schenker domain d.o • Permanent Member Drupal Association • bertboerland op elk sociaal netwerk (hint: @bertboerland op twitter :-) • werkzaam DOP (“we are hiring”)
  • 11. “Thank you #ATOS for hosting the #phpbnl meeting”
  • 13. Hashtag #phpbnl
  • 14. Hashtag #phpbnl • Subhastag @bertboerland #fail :-)
  • 20. Wie heeft Drupal geïnstalleerd?
  • 21. Wie heeft Drupal geïnstalleerd? • Wie heeft high volume PHP websites gebouwd?
  • 22. Wie heeft Drupal geïnstalleerd? • Wie heeft high volume PHP websites gebouwd? • Wie heeft high volume Drupal websites gebouwd?
  • 23. Wie heeft Drupal geïnstalleerd? • Wie heeft high volume PHP websites gebouwd? • Wie heeft high volume Drupal websites gebouwd? • Wie is ooit tegen Drupal performance aangelopen?
  • 25. Google: +0,4 seconde = -0,6% verkeer
  • 26. Google: +0,4 seconde = -0,6% verkeer • Yahoo! +0,4 seconde = -7% verkeer
  • 27. Google: +0,4 seconde = -0,6% verkeer • Yahoo! +0,4 seconde = -7% verkeer • Bing: -2 seconde = +4% verkeer
  • 28. Google: +0,4 seconde = -0,6% verkeer • Yahoo! +0,4 seconde = -7% verkeer • Bing: -2 seconde = +4% verkeer • Shopzilla: -5 seconde = +12% omzet, 50% minder bandbreedte
  • 29. Google: +0,4 seconde = -0,6% verkeer • Yahoo! +0,4 seconde = -7% verkeer • Bing: -2 seconde = +4% verkeer • Shopzilla: -5 seconde = +12% omzet, 50% minder bandbreedte
  • 30. Google: +0,4 seconde = -0,6% verkeer • Yahoo! +0,4 seconde = -7% verkeer • Bing: -2 seconde = +4% verkeer • Shopzilla: -5 seconde = +12% omzet, 50% minder bandbreedte • Sneller = beter UX, meer verkeer, meer omzet, minder kosten!
  • 32. Keten
  • 33. Keten • Drupal
  • 34. Keten • Drupal • Proces
  • 36. NCRV.nl en RNW.nl • Honderduizendenden hits per dag, Tienduizend artikelen per maand
  • 37. RNW.nl
  • 39. user > browser > network > site
  • 40. user > browser > network > site
  • 41. user > browser > network > site
  • 45. Juiste gestructureerde informatie verkrijgen; “het is langzaam” vs tijd, browser, actie, URL etc...
  • 46. Juiste gestructureerde informatie verkrijgen; “het is langzaam” vs tijd, browser, actie, URL etc... • Redacteur stemt niet met zijn voeten.
  • 47. Juiste gestructureerde informatie verkrijgen; “het is langzaam” vs tijd, browser, actie, URL etc... • Redacteur stemt niet met zijn voeten. • Ingelogd of niet?
  • 48. Juiste gestructureerde informatie verkrijgen; “het is langzaam” vs tijd, browser, actie, URL etc... • Redacteur stemt niet met zijn voeten. • Ingelogd of niet?
  • 49. Juiste gestructureerde informatie verkrijgen; “het is langzaam” vs tijd, browser, actie, URL etc... • Redacteur stemt niet met zijn voeten. • Ingelogd of niet?
  • 55. Progressive rendering (HTML en plaatjes)
  • 56. Progressive rendering (HTML en plaatjes) • Externe Javascript (extern domain als CDN)
  • 57. Progressive rendering (HTML en plaatjes) • Externe Javascript (extern domain als CDN) • CSS Sprites
  • 58. Progressive rendering (HTML en plaatjes) • Externe Javascript (extern domain als CDN) • CSS Sprites • Reduce DNS lookups (Google analytics, online AJAX scripts as a service)
  • 59. Progressive rendering (HTML en plaatjes) • Externe Javascript (extern domain als CDN) • CSS Sprites • Reduce DNS lookups (Google analytics, online AJAX scripts as a service) • ....
  • 60. Progressive rendering (HTML en plaatjes) • Externe Javascript (extern domain als CDN) • CSS Sprites • Reduce DNS lookups (Google analytics, online AJAX scripts as a service) • ....
  • 63. Tools: • YSlow
  • 64. Tools: • YSlow • JSLint
  • 65. Tools: • YSlow • JSLint • NET
  • 66. Tools: • YSlow • JSLint • NET • CSS Sprite generatoren
  • 67. Tools: • YSlow • JSLint • NET • CSS Sprite generatoren • HTML, CSS, RSS validatie
  • 68. Tools: • YSlow • JSLint • NET • CSS Sprite generatoren • HTML, CSS, RSS validatie
  • 71. Asymetrische routering is een feit (en niet te zien!)
  • 72. Asymetrische routering is een feit (en niet te zien!) • BGP is niet voor watjes
  • 73. Asymetrische routering is een feit (en niet te zien!) • BGP is niet voor watjes • Bandbreedte meet je niet in Mbps (“it’s the latency stupid!”)
  • 74. Asymetrische routering is een feit (en niet te zien!) • BGP is niet voor watjes • Bandbreedte meet je niet in Mbps (“it’s the latency stupid!”) • Locatie maakt uit (100ms roundtrip normaal)
  • 75. Asymetrische routering is een feit (en niet te zien!) • BGP is niet voor watjes • Bandbreedte meet je niet in Mbps (“it’s the latency stupid!”) • Locatie maakt uit (100ms roundtrip normaal) • Gebruik CDN pas als het een oplossing is (duur, ingewikkeld, USA centric)
  • 77. Tools
  • 78. Tools • AS Looking glasses
  • 79. Tools • AS Looking glasses • MTR
  • 80. Tools • AS Looking glasses • MTR
  • 82. Doe maar geen Source / Destiantie hash op je loadbalancers :-)
  • 83. Doe maar geen Source / Destiantie hash op je loadbalancers :-) • Least connections kan beste zijn
  • 84. Doe maar geen Source / Destiantie hash op je loadbalancers :-) • Least connections kan beste zijn • Route static direct naar andere webserver phpworkers voor echte werk.
  • 85. Doe maar geen Source / Destiantie hash op je loadbalancers :-) • Least connections kan beste zijn • Route static direct naar andere webserver phpworkers voor echte werk. • lighttp is een betere vriend dan Apache
  • 86. Doe maar geen Source / Destiantie hash op je loadbalancers :-) • Least connections kan beste zijn • Route static direct naar andere webserver phpworkers voor echte werk. • lighttp is een betere vriend dan Apache • Varnish is een veeeel betere vriend dan Squid
  • 87. Doe maar geen Source / Destiantie hash op je loadbalancers :-) • Least connections kan beste zijn • Route static direct naar andere webserver phpworkers voor echte werk. • lighttp is een betere vriend dan Apache • Varnish is een veeeel betere vriend dan Squid • Filesysteem kan al uitmaken, inodes, swapspace, netwerkkaarten...
  • 88. Doe maar geen Source / Destiantie hash op je loadbalancers :-) • Least connections kan beste zijn • Route static direct naar andere webserver phpworkers voor echte werk. • lighttp is een betere vriend dan Apache • Varnish is een veeeel betere vriend dan Squid • Filesysteem kan al uitmaken, inodes, swapspace, netwerkkaarten...
  • 90. Apache tunen is een kunst, PHP tunen is een martial art
  • 91. Apache tunen is een kunst, PHP tunen is een martial art • PHP 16 MB is niets, 128 bijna norm (modules vreten geheugen)
  • 92. Apache tunen is een kunst, PHP tunen is een martial art • PHP 16 MB is niets, 128 bijna norm (modules vreten geheugen) • Keepalive en pipelining helpen (HTTP/1.1)
  • 93. Apache tunen is een kunst, PHP tunen is een martial art • PHP 16 MB is niets, 128 bijna norm (modules vreten geheugen) • Keepalive en pipelining helpen (HTTP/1.1) • Filesysteem (hdparm) optimaliseren
  • 94. Apache tunen is een kunst, PHP tunen is een martial art • PHP 16 MB is niets, 128 bijna norm (modules vreten geheugen) • Keepalive en pipelining helpen (HTTP/1.1) • Filesysteem (hdparm) optimaliseren • Log enkel in error reporting wat je nodig hebt
  • 95. Apache tunen is een kunst, PHP tunen is een martial art • PHP 16 MB is niets, 128 bijna norm (modules vreten geheugen) • Keepalive en pipelining helpen (HTTP/1.1) • Filesysteem (hdparm) optimaliseren • Log enkel in error reporting wat je nodig hebt • Gzip pages op webserver, niet door Drupal :-)
  • 96. Apache tunen is een kunst, PHP tunen is een martial art • PHP 16 MB is niets, 128 bijna norm (modules vreten geheugen) • Keepalive en pipelining helpen (HTTP/1.1) • Filesysteem (hdparm) optimaliseren • Log enkel in error reporting wat je nodig hebt • Gzip pages op webserver, niet door Drupal :-) • Schrijf logging naar raw sockets naar syslog server
  • 97. Do use opcode cachers! (APC)
  • 98. Do use opcode cachers! (APC)
  • 99. Do use opcode cachers! (APC)
  • 100. Do use opcode cachers! (APC)
  • 101. Do use opcode cachers! (APC)
  • 103. Standaard caching in database
  • 104. Standaard caching in database • Helemaal aan het einde van de keten
  • 105. Standaard caching in database • Helemaal aan het einde van de keten • Beter dan niets
  • 106. Standaard caching in database • Helemaal aan het einde van de keten • Beter dan niets • Daar is alles mee gezegd...
  • 108. Standaard module
  • 109. Standaard module • “Bijna geen issues”
  • 110. Standaard module • “Bijna geen issues” • Alle anon bezoek cachen
  • 111. Standaard module • “Bijna geen issues” • Alle anon bezoek cachen • Hit rate vaak rond 90%
  • 112. Standaard module • “Bijna geen issues” • Alle anon bezoek cachen • Hit rate vaak rond 90% • Load database
  • 113. Standaard module • “Bijna geen issues” • Alle anon bezoek cachen • Hit rate vaak rond 90% • Load database • Installatie 2 uur max
  • 115. Standaard module
  • 116. Standaard module • Database 1,5 GB waarvan 800MB search
  • 117. Standaard module • Database 1,5 GB waarvan 800MB search • Geen spider (W.I.P)
  • 118. Standaard module • Database 1,5 GB waarvan 800MB search • Geen spider (W.I.P) • Standaard search geeft veel Slow Queries
  • 119. Standaard module • Database 1,5 GB waarvan 800MB search • Geen spider (W.I.P) • Standaard search geeft veel Slow Queries • Search niet meer ‘echt’ geupdate sinds 4.7
  • 120. Standaard module • Database 1,5 GB waarvan 800MB search • Geen spider (W.I.P) • Standaard search geeft veel Slow Queries • Search niet meer ‘echt’ geupdate sinds 4.7 • Veel betere stemming, AJAX, extensies
  • 121. Standaard module • Database 1,5 GB waarvan 800MB search • Geen spider (W.I.P) • Standaard search geeft veel Slow Queries • Search niet meer ‘echt’ geupdate sinds 4.7 • Veel betere stemming, AJAX, extensies • het blijft Java :-)
  • 123. Ook als service te “koop”
  • 124. Ook als service te “koop” • Autocomplete modules
  • 125. Ook als service te “koop” • Autocomplete modules • Faceted search modules
  • 126. Ook als service te “koop” • Autocomplete modules • Faceted search modules • CCK integration
  • 127. Ook als service te “koop” • Autocomplete modules • Faceted search modules • CCK integration • Views integration
  • 128. Ook als service te “koop” • Autocomplete modules • Faceted search modules • CCK integration • Views integration • UTF8
  • 129. Ook als service te “koop” • Autocomplete modules • Faceted search modules • CCK integration • Views integration • UTF8 • Bloedsnel
  • 131. Redelijk goed te doen
  • 132. Redelijk goed te doen • Start met MySQLAdmin
  • 133. Redelijk goed te doen • Start met MySQLAdmin • MySQLOptimize is symptoom bestrijding (but so is duckttape)
  • 134. Redelijk goed te doen • Start met MySQLAdmin • MySQLOptimize is symptoom bestrijding (but so is duckttape) • Persistent db connecties
  • 135. Redelijk goed te doen • Start met MySQLAdmin • MySQLOptimize is symptoom bestrijding (but so is duckttape) • Persistent db connecties • InnoDb beats MyIsam (but not always)
  • 136. Redelijk goed te doen • Start met MySQLAdmin • MySQLOptimize is symptoom bestrijding (but so is duckttape) • Persistent db connecties • InnoDb beats MyIsam (but not always) • Elke my.cnf is specifiek
  • 137. Redelijk goed te doen • Start met MySQLAdmin • MySQLOptimize is symptoom bestrijding (but so is duckttape) • Persistent db connecties • InnoDb beats MyIsam (but not always) • Elke my.cnf is specifiek • Kijk naar andere databases
  • 140. Javascript aggregatie
  • 141. Javascript aggregatie • CSS aggregatie
  • 142. Javascript aggregatie • CSS aggregatie • Logging uit of naar syslog
  • 143. Javascript aggregatie • CSS aggregatie • Logging uit of naar syslog • Caching normaal 5 minuten (block cache als mogelijk)
  • 144. Javascript aggregatie • CSS aggregatie • Logging uit of naar syslog • Caching normaal 5 minuten (block cache als mogelijk) • cron.php 5 minuten
  • 145. Javascript aggregatie • CSS aggregatie • Logging uit of naar syslog • Caching normaal 5 minuten (block cache als mogelijk) • cron.php 5 minuten • Anti spam dienst als Captcha of mollom
  • 146. Javascript aggregatie • CSS aggregatie • Logging uit of naar syslog • Caching normaal 5 minuten (block cache als mogelijk) • cron.php 5 minuten • Anti spam dienst als Captcha of mollom • XML sitemap en Google news views
  • 147. Javascript aggregatie • CSS aggregatie • Logging uit of naar syslog • Caching normaal 5 minuten (block cache als mogelijk) • cron.php 5 minuten • Anti spam dienst als Captcha of mollom • XML sitemap en Google news views • Devel uit :-)
  • 149. SOLR/Memcache
  • 150. SOLR/Memcache • Boost
  • 151. SOLR/Memcache • Boost • Cacherouter
  • 152. SOLR/Memcache • Boost • Cacherouter • Block caching
  • 153. SOLR/Memcache • Boost • Cacherouter • Block caching
  • 154. SOLR/Memcache • Boost • Cacherouter • Block caching • DOP: views optimalisatie
  • 155. SOLR/Memcache • Boost • Cacherouter • Block caching • DOP: views optimalisatie
  • 159. Groups http://groups.drupal.org/high-performance
  • 160. Groups http://groups.drupal.org/high-performance • Drupal Handbook http://drupal.org/node/326504
  • 161. Groups http://groups.drupal.org/high-performance • Drupal Handbook http://drupal.org/node/326504 • Drupal Modules http://drupal.org/project/modules?filters=tid:123
  • 162. Groups http://groups.drupal.org/high-performance • Drupal Handbook http://drupal.org/node/326504 • Drupal Modules http://drupal.org/project/modules?filters=tid:123 • 2Bits heerst! http://2bits.com/articles/drupal-performance-tuning-and- optimization-for-large-web-sites.html
  • 165. Verander een ding ter gelijke tijd
  • 166. Sluit niets uit, Denk buiten de doos!
  • 168. Verleidelijk om op laureren te rusten als is opgelost... ... maar het is nooit opgelost
  • 169. ab / jmeter • develop module • Yslow • PHP logging • MyTop • Explain • BRAIN