Upload
bert-boerland
View
8.741
Download
5
Tags:
Embed Size (px)
DESCRIPTION
A short intro in to the chain of performance for PHP/Drupal websites
Citation preview
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”
• Hashtag #phpbnl
• Hashtag #phpbnl
• Subhastag @bertboerland #fail :-)
• 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?
• 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!
• Keten
• Keten
• Drupal
• Keten
• Drupal
• Proces
• NCRV.nl en RNW.nl
• Honderduizendenden hits per dag, Tienduizend artikelen per maand
• RNW.nl
user > browser > network > site
user > browser > network > site
user > browser > network > site
• 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?
• 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)
• ....
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
• 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)
Tools
Tools
• AS Looking glasses
Tools
• AS Looking glasses
• MTR
Tools
• AS Looking glasses
• MTR
• 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 webserverphpworkers voor echte werk.
• Doe maar geen Source / Destiantie hash op je loadbalancers :-)
• Least connections kan beste zijn
• Route static direct naar andere webserverphpworkers 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 webserverphpworkers 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 webserverphpworkers 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 webserverphpworkers 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...
• 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)
• 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...
• 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
• 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 :-)
• 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
• 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
• 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 :-)
• 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
http://groups.drupal.org/node/25617
• 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
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: [email protected]
prive: [email protected]
http://twitter.com/bertboerland
http://nl.linkedin.com/in/bertboerland