SlideShare una empresa de Scribd logo
1 de 64
A little less
conversation
• Maurits Lawende
• Bert Boerland
• @projectpaas
• https://www.facebook.com/projectpaas
140
Define PerformanceDefine Performance
• SnelheidSnelheid
• BeschikbaarheidBeschikbaarheid
• StabiliteitStabiliteit
Non FunctionalNon Functional
RequirementRequirement
•Meer contentMeer content
•Meer gebruikersMeer gebruikers
•Meer hitsMeer hits
•Meer codeMeer code
•...zelfde hardware...zelfde hardware
AgendaAgenda
• Waarom performanceWaarom performance
• Wat is performanceWat is performance
• Wat doet ProjectPAASWat doet ProjectPAAS
• Hoe doet ProjectPAASHoe doet ProjectPAAS
• Tooling en tipsTooling en tips
• FreebeeFreebee
Waarom performance
Waarom performance
Waarom performance
Waarom performance
Waarom performance
Waarom performanceWaarom performance
Als je een business case hebt voor een websiteAls je een business case hebt voor een website
ben je deze kwijt als je te langzaam bent...ben je deze kwijt als je te langzaam bent...
Touch downTouch down
• Acroniemensoep:Acroniemensoep:
• RUM, HAR, EC2,CDN, WCO, FEO,RUM, HAR, EC2,CDN, WCO, FEO,
SPDYSPDY
• BS BingoBS Bingo
• Frontend, Backend, Request reduction,Frontend, Backend, Request reduction,
data URI, Sprite, closure compiler,data URI, Sprite, closure compiler,
reverse proxyreverse proxy
Time to glassTime to glass
• 0,1 seconde, voelt als instant0,1 seconde, voelt als instant
• 1.0 seconde, in de flow1.0 seconde, in de flow
• 10,0 seconde, aandachtslimiet10,0 seconde, aandachtslimiet
• ““perceptie van snelheid”perceptie van snelheid”
80% frontend80% frontend 20% backend20% backendPerformance is enkel100% relevant in de browserPerformance is enkel100% relevant in de browser
Bij mij is ‘ie wel snelBij mij is ‘ie wel snel
Want ik ben centrumWant ik ben centrum
van de wereldvan de wereld
Maar we zijn toch heelMaar we zijn toch heel
snel?snel?
Gecachde waterval
MetricsMetrics
• Als je het niet kan metenAls je het niet kan meten
kan je het niet verbeteren.kan je het niet verbeteren.
• ProjectPAAS meet 100 metrics, analyseertProjectPAAS meet 100 metrics, analyseert
en rapporteert hieroveren rapporteert hierover
FrontendFrontend
(20%)(20%)
100% browser100% browser
MiddleMiddle
(30%)(30%)
BackendBackend
(50%)(50%)
Wat doet uWat doet u
• Installeer d.o/project/paas op dev serverInstalleer d.o/project/paas op dev server
• Configureer op portaal (basic auth, 100Configureer op portaal (basic auth, 100
populaire URL’s, tijd...)populaire URL’s, tijd...)
• Wacht 6 uurWacht 6 uur
Wat doen wij?Wat doen wij?
• Controlen module werking / keyControlen module werking / key
• Starten EC2 instantie(s)Starten EC2 instantie(s)
• Meten 100+ metrics (met / zonder,Meten 100+ metrics (met / zonder,
screenshots, latency....)screenshots, latency....)
• Analyseren tegen baselineAnalyseren tegen baseline
• Doen aanbeveling in PDF (plus files)Doen aanbeveling in PDF (plus files)
• Mailen uMailen u
Tooling ‘n TipsTooling ‘n Tips
Tools voor infrastructuur
- ec2
- lamp
- python
- nodejs
- java
- drupal 7
- latex
- twig
- graphviz
- flot (graphs)
Tools voor metingen en analyse
- custom client module
- phantom
- custom proxy in python
- kyotocabinet (storage voor proxy)
- R project (statistics)
- imagemagick
- pngcrush
- optipng
- csstidy
- openssl
- libjpeg
- cairo (graphics library)
- closure compiler
- ab
- sabberworm (css analyse)
- yslow
- shadow
DNSDNS
NetworkNetwork
Nu.nl spot the SPOF
TC: 352 elementen
72 domains
72 domains
CDN / ParallelCDN / Parallel
- Vroeger meer hits
- Toen dichter bij / minder latency
- Nu met name anti dDOS
- default cookieloos
- niet default sneller
BandbreedteBandbreedte
Mbps heeftMbps heeft nietsniets met snelheid te makenmet snelheid te maken
WebWeb
Best hit is no hitBest hit is no hit
(less is more)(less is more)
(less is more)(less is more)
SPDY (compressie, binair)
Multipart response
Servers dichtbij (CDN)
Minder requests
Apache multipartApache multipart
responseresponse
Content-Type: multipart/mixed; boundary="..."
Onderseund in recente versies FF, Chrome + iE < 7
Niet hoe HTTP werkt, 'multipart requests' bestaan
niet (vraag A op, geef ABC terug)
0.000184% usage volgens Mozilla team
Geen ondersteuning in Apache / NginX
Cache expiration jungleCache expiration jungle
- Cache Control
- Expires
- Last Modified
- ETag
- Age
- Pragma
Gebruik geen HTTPS!Gebruik geen HTTPS!
Tuurlijk wel
Maar default 24-32% trager!
Apache heeft standaard 28 chipher suits
9 max nodig
HTTPS niet in varnish zonder SSL offloader
Gebruik HTTPS!Gebruik HTTPS!
SPDY
Wordt standaard HTTP/2.0?
In gebruik alle sites van google en facebook
Vereist certificaat (443) (wildcard?)
Niet te troubleshooten
LoveLove
Drupal Memory usageDrupal Memory usage
drush php-eval 
"echo
format_size(memory_get_usage());"
52.09 MB
PHP Memory usagePHP Memory usage
Integer is 4 bytes. Maar...
typedef union _zvalue_value {
long lval; // long/bools
double dval; // doubles/floats
struct { // strings
char *val; // The string
int len; // length
} str;
HashTable *ht; // arrays (hash tables)
zend_object_value obj; //objects
} zvalue_value;
struct _zval_struct {
zvalue_value value;
zend_uint refcount__gc; // for the GC, refs to this value
zend_uchar type; //item type
zend_uchar is_ref__gc; // is a ref (&)
};
PHP Memory usagePHP Memory usage
zvalue_value: 16 bytes
zval: 8 bytes
Garbage Collection: 8 bytes (PHP 5.4)
Zend Memory Managers: 16 bytes
PHP 5.3: 40 bytes
PHP 5.4: 48 bytes
PHP Memory usagePHP Memory usage
BucketsBuckets
BucketsBucketsBevat de key, pointers naar data, vorige,
volgende, eerste, laatste element..
Totaal: 96 bytes
Array van 10 int's heeft 40 bytes data.
1 zval met 10 buckets en 10 zvals voor data
Totaal: 1488 bytes (PHP 5.4)
37.2 x meer dan in C
Drupal memory usageDrupal memory usage
- Modules / include files (± 100 tot 500 KB)
- Theme registry (± 10 MB)
- Locale cache (± 1 MB)
- Static cache (± 1 MB)
- Variables (< 100 KB)
MySQL is slimMySQL is slim
Relationele databases:
DBMS bepaald hoe de data het beste opgehaald kan
worden
DBMS weet niet hoe we de data gebruiken
DOM
Pagina moet ladenPagina moet laden
binnen 2 secondebinnen 2 seconde
• MySQL zal slow query af makenMySQL zal slow query af maken
• Ook als deze 2 uur duurt...Ook als deze 2 uur duurt...
CardinaliteitCardinaliteit
Aantal verschillende waarden in een kolom.
Indexen worden meestal niet gebruikt wanneer
cardinaliteit laag is (bijv. 10% van aantal rijen). Gaat
uit van gelijke verdeling!
InnoDB doet analyse op selectivity:
hoeveel rijen blijven er over na filtering?
Union vs ORUnion vs OR
SELECT ... WHERE (a) OR (b)
SELECT ... WHERE (a)
UNION
SELECT ... WHERE (b)
TrickyTricky
- Grootste deel van de filtering in joined tables
- Order by op joined tables
- Order by i.c.m. seq. scan
- Joins op kolom zonder index
(of mogelijkheid tot het gebruik daarvan)
Free ride?Free ride?
Eerste die nu een easter-egg vindt op
projectpaas.com en hierover twittert krijgt
gratis “pluto” test!
Vragen?Vragen?
• Harder,
• Faster,
• Stronger,
• Better.
(our work is never over)

Más contenido relacionado

Destacado

Iemi Ebm Itrain D
Iemi Ebm Itrain DIemi Ebm Itrain D
Iemi Ebm Itrain Dcreadel
 
IEMI-EBM-InnoCentive-D
IEMI-EBM-InnoCentive-DIEMI-EBM-InnoCentive-D
IEMI-EBM-InnoCentive-Dcreadel
 
Tech comm presentation 2012 08-16
Tech comm presentation 2012 08-16Tech comm presentation 2012 08-16
Tech comm presentation 2012 08-16Ken Tucker
 
Iemi Ebm Tripwolf Dm
Iemi Ebm Tripwolf DmIemi Ebm Tripwolf Dm
Iemi Ebm Tripwolf Dmcreadel
 
presentatie natuurlijke user interface nui
presentatie natuurlijke user interface nuipresentatie natuurlijke user interface nui
presentatie natuurlijke user interface nuiBert Boerland
 
Changescape Solar Missouri Solar Economics
Changescape Solar Missouri Solar EconomicsChangescape Solar Missouri Solar Economics
Changescape Solar Missouri Solar EconomicsKen Tucker
 
Tech comm presentation 2012 09-20
Tech comm presentation 2012 09-20Tech comm presentation 2012 09-20
Tech comm presentation 2012 09-20Ken Tucker
 
Drupal jam 2015 closing
Drupal jam 2015 closing Drupal jam 2015 closing
Drupal jam 2015 closing Bert Boerland
 
Tech comm presentation 2014 11-20
Tech comm presentation 2014 11-20Tech comm presentation 2014 11-20
Tech comm presentation 2014 11-20Ken Tucker
 
Using Technology To Battle The Economy
Using  Technology To  Battle The  EconomyUsing  Technology To  Battle The  Economy
Using Technology To Battle The EconomyKen Tucker
 
Using Technology To Battle The Economy
Using  Technology To  Battle The  EconomyUsing  Technology To  Battle The  Economy
Using Technology To Battle The EconomyKen Tucker
 
Why Drupal Is So Slow
Why Drupal Is So SlowWhy Drupal Is So Slow
Why Drupal Is So SlowBert Boerland
 

Destacado (13)

Iemi Ebm Itrain D
Iemi Ebm Itrain DIemi Ebm Itrain D
Iemi Ebm Itrain D
 
IEMI-EBM-InnoCentive-D
IEMI-EBM-InnoCentive-DIEMI-EBM-InnoCentive-D
IEMI-EBM-InnoCentive-D
 
Tech comm presentation 2012 08-16
Tech comm presentation 2012 08-16Tech comm presentation 2012 08-16
Tech comm presentation 2012 08-16
 
Iemi Ebm Tripwolf Dm
Iemi Ebm Tripwolf DmIemi Ebm Tripwolf Dm
Iemi Ebm Tripwolf Dm
 
presentatie natuurlijke user interface nui
presentatie natuurlijke user interface nuipresentatie natuurlijke user interface nui
presentatie natuurlijke user interface nui
 
Changescape Solar Missouri Solar Economics
Changescape Solar Missouri Solar EconomicsChangescape Solar Missouri Solar Economics
Changescape Solar Missouri Solar Economics
 
Tech comm presentation 2012 09-20
Tech comm presentation 2012 09-20Tech comm presentation 2012 09-20
Tech comm presentation 2012 09-20
 
Drupal jam 2015 closing
Drupal jam 2015 closing Drupal jam 2015 closing
Drupal jam 2015 closing
 
Lecture 1
Lecture 1Lecture 1
Lecture 1
 
Tech comm presentation 2014 11-20
Tech comm presentation 2014 11-20Tech comm presentation 2014 11-20
Tech comm presentation 2014 11-20
 
Using Technology To Battle The Economy
Using  Technology To  Battle The  EconomyUsing  Technology To  Battle The  Economy
Using Technology To Battle The Economy
 
Using Technology To Battle The Economy
Using  Technology To  Battle The  EconomyUsing  Technology To  Battle The  Economy
Using Technology To Battle The Economy
 
Why Drupal Is So Slow
Why Drupal Is So SlowWhy Drupal Is So Slow
Why Drupal Is So Slow
 

Similar a Projectpaas drupaljam 2013 rotterdam

PFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsPFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsRichard Tuin
 
Performance- en storageopitimalisatie voor VDI omgevingen
Performance- en storageopitimalisatie voor VDI omgevingenPerformance- en storageopitimalisatie voor VDI omgevingen
Performance- en storageopitimalisatie voor VDI omgevingenProact Netherlands B.V.
 
Niet onderhoudbare software in 10 makkelijke stappen
Niet onderhoudbare software in 10 makkelijke stappenNiet onderhoudbare software in 10 makkelijke stappen
Niet onderhoudbare software in 10 makkelijke stappenRick Beerendonk
 
IPv6 voor webbouwers
IPv6 voor webbouwersIPv6 voor webbouwers
IPv6 voor webbouwersFrank Louwers
 
Techdays 2013 NL - Serious Request met Windows Azure
Techdays 2013 NL - Serious Request met Windows AzureTechdays 2013 NL - Serious Request met Windows Azure
Techdays 2013 NL - Serious Request met Windows AzureMichaël Hompus
 
Html5 jeugdwerknet
Html5 jeugdwerknetHtml5 jeugdwerknet
Html5 jeugdwerknetHans Rossel
 
Headless Drupal - Wat, Waarom, Hoe & Uitdagingen
Headless Drupal - Wat, Waarom, Hoe & UitdagingenHeadless Drupal - Wat, Waarom, Hoe & Uitdagingen
Headless Drupal - Wat, Waarom, Hoe & UitdagingenLuciuswebsystems
 
Nord Toelichting Techniek
Nord Toelichting TechniekNord Toelichting Techniek
Nord Toelichting Techniektjercus
 
Robot framework en Browser Library
Robot framework en Browser LibraryRobot framework en Browser Library
Robot framework en Browser Librarychristiantester
 
2019 diy migration webinar gs nl
2019 diy migration webinar gs nl2019 diy migration webinar gs nl
2019 diy migration webinar gs nlEDB
 
2010 iska - tim m - nosql iska
2010   iska - tim m - nosql iska2010   iska - tim m - nosql iska
2010 iska - tim m - nosql iskaTim Mahy
 
Storage: trends, oplossingen, caveats
Storage: trends, oplossingen, caveatsStorage: trends, oplossingen, caveats
Storage: trends, oplossingen, caveatsB.A.
 
Linux troubleshooting tips
Linux troubleshooting tipsLinux troubleshooting tips
Linux troubleshooting tipsBert Van Vreckem
 

Similar a Projectpaas drupaljam 2013 rotterdam (20)

PFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsPFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele tests
 
2010 byte joomladagen
2010 byte joomladagen2010 byte joomladagen
2010 byte joomladagen
 
Performance- en storageopitimalisatie voor VDI omgevingen
Performance- en storageopitimalisatie voor VDI omgevingenPerformance- en storageopitimalisatie voor VDI omgevingen
Performance- en storageopitimalisatie voor VDI omgevingen
 
Drupal8
Drupal8Drupal8
Drupal8
 
Niet onderhoudbare software in 10 makkelijke stappen
Niet onderhoudbare software in 10 makkelijke stappenNiet onderhoudbare software in 10 makkelijke stappen
Niet onderhoudbare software in 10 makkelijke stappen
 
IPv6 voor webbouwers
IPv6 voor webbouwersIPv6 voor webbouwers
IPv6 voor webbouwers
 
Techdays 2013 NL - Serious Request met Windows Azure
Techdays 2013 NL - Serious Request met Windows AzureTechdays 2013 NL - Serious Request met Windows Azure
Techdays 2013 NL - Serious Request met Windows Azure
 
Speeding up WordPress
Speeding up WordPressSpeeding up WordPress
Speeding up WordPress
 
Html5 jeugdwerknet
Html5 jeugdwerknetHtml5 jeugdwerknet
Html5 jeugdwerknet
 
Headless Drupal - Wat, Waarom, Hoe & Uitdagingen
Headless Drupal - Wat, Waarom, Hoe & UitdagingenHeadless Drupal - Wat, Waarom, Hoe & Uitdagingen
Headless Drupal - Wat, Waarom, Hoe & Uitdagingen
 
Nord Toelichting Techniek
Nord Toelichting TechniekNord Toelichting Techniek
Nord Toelichting Techniek
 
Unleash the power of raven db
Unleash the power of raven dbUnleash the power of raven db
Unleash the power of raven db
 
The Need For Speed
The Need For SpeedThe Need For Speed
The Need For Speed
 
Duurzaam digitaliseren: praktijk
Duurzaam digitaliseren: praktijkDuurzaam digitaliseren: praktijk
Duurzaam digitaliseren: praktijk
 
Robot framework en Browser Library
Robot framework en Browser LibraryRobot framework en Browser Library
Robot framework en Browser Library
 
2019 diy migration webinar gs nl
2019 diy migration webinar gs nl2019 diy migration webinar gs nl
2019 diy migration webinar gs nl
 
2010 iska - tim m - nosql iska
2010   iska - tim m - nosql iska2010   iska - tim m - nosql iska
2010 iska - tim m - nosql iska
 
Storage: trends, oplossingen, caveats
Storage: trends, oplossingen, caveatsStorage: trends, oplossingen, caveats
Storage: trends, oplossingen, caveats
 
Linux troubleshooting tips
Linux troubleshooting tipsLinux troubleshooting tips
Linux troubleshooting tips
 
Perfect Patch
Perfect PatchPerfect Patch
Perfect Patch
 

Más 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
 
Wunderkraut Pub Quiz
Wunderkraut Pub QuizWunderkraut Pub Quiz
Wunderkraut Pub QuizBert 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
 

Más de Bert Boerland (15)

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
 
Wunderkraut Pub Quiz
Wunderkraut Pub QuizWunderkraut Pub Quiz
Wunderkraut Pub Quiz
 
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
 

Projectpaas drupaljam 2013 rotterdam

  • 1.
  • 2.
  • 3.
  • 4. A little less conversation • Maurits Lawende • Bert Boerland • @projectpaas • https://www.facebook.com/projectpaas 140
  • 5. Define PerformanceDefine Performance • SnelheidSnelheid • BeschikbaarheidBeschikbaarheid • StabiliteitStabiliteit
  • 6. Non FunctionalNon Functional RequirementRequirement •Meer contentMeer content •Meer gebruikersMeer gebruikers •Meer hitsMeer hits •Meer codeMeer code •...zelfde hardware...zelfde hardware
  • 7. AgendaAgenda • Waarom performanceWaarom performance • Wat is performanceWat is performance • Wat doet ProjectPAASWat doet ProjectPAAS • Hoe doet ProjectPAASHoe doet ProjectPAAS • Tooling en tipsTooling en tips • FreebeeFreebee
  • 13. Waarom performanceWaarom performance Als je een business case hebt voor een websiteAls je een business case hebt voor een website ben je deze kwijt als je te langzaam bent...ben je deze kwijt als je te langzaam bent...
  • 14. Touch downTouch down • Acroniemensoep:Acroniemensoep: • RUM, HAR, EC2,CDN, WCO, FEO,RUM, HAR, EC2,CDN, WCO, FEO, SPDYSPDY • BS BingoBS Bingo • Frontend, Backend, Request reduction,Frontend, Backend, Request reduction, data URI, Sprite, closure compiler,data URI, Sprite, closure compiler, reverse proxyreverse proxy
  • 15. Time to glassTime to glass • 0,1 seconde, voelt als instant0,1 seconde, voelt als instant • 1.0 seconde, in de flow1.0 seconde, in de flow • 10,0 seconde, aandachtslimiet10,0 seconde, aandachtslimiet • ““perceptie van snelheid”perceptie van snelheid”
  • 16.
  • 17.
  • 18.
  • 19. 80% frontend80% frontend 20% backend20% backendPerformance is enkel100% relevant in de browserPerformance is enkel100% relevant in de browser
  • 20. Bij mij is ‘ie wel snelBij mij is ‘ie wel snel
  • 21. Want ik ben centrumWant ik ben centrum van de wereldvan de wereld
  • 22. Maar we zijn toch heelMaar we zijn toch heel snel?snel?
  • 24. MetricsMetrics • Als je het niet kan metenAls je het niet kan meten kan je het niet verbeteren.kan je het niet verbeteren. • ProjectPAAS meet 100 metrics, analyseertProjectPAAS meet 100 metrics, analyseert en rapporteert hieroveren rapporteert hierover
  • 26. Wat doet uWat doet u • Installeer d.o/project/paas op dev serverInstalleer d.o/project/paas op dev server • Configureer op portaal (basic auth, 100Configureer op portaal (basic auth, 100 populaire URL’s, tijd...)populaire URL’s, tijd...) • Wacht 6 uurWacht 6 uur
  • 27. Wat doen wij?Wat doen wij? • Controlen module werking / keyControlen module werking / key • Starten EC2 instantie(s)Starten EC2 instantie(s) • Meten 100+ metrics (met / zonder,Meten 100+ metrics (met / zonder, screenshots, latency....)screenshots, latency....) • Analyseren tegen baselineAnalyseren tegen baseline • Doen aanbeveling in PDF (plus files)Doen aanbeveling in PDF (plus files) • Mailen uMailen u
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35. Tooling ‘n TipsTooling ‘n Tips Tools voor infrastructuur - ec2 - lamp - python - nodejs - java - drupal 7 - latex - twig - graphviz - flot (graphs) Tools voor metingen en analyse - custom client module - phantom - custom proxy in python - kyotocabinet (storage voor proxy) - R project (statistics) - imagemagick - pngcrush - optipng - csstidy - openssl - libjpeg - cairo (graphics library) - closure compiler - ab - sabberworm (css analyse) - yslow - shadow
  • 38. TC: 352 elementen 72 domains 72 domains
  • 39. CDN / ParallelCDN / Parallel - Vroeger meer hits - Toen dichter bij / minder latency - Nu met name anti dDOS - default cookieloos - niet default sneller
  • 40.
  • 41. BandbreedteBandbreedte Mbps heeftMbps heeft nietsniets met snelheid te makenmet snelheid te maken
  • 42.
  • 43.
  • 45. Best hit is no hitBest hit is no hit (less is more)(less is more) (less is more)(less is more) SPDY (compressie, binair) Multipart response Servers dichtbij (CDN) Minder requests
  • 46. Apache multipartApache multipart responseresponse Content-Type: multipart/mixed; boundary="..." Onderseund in recente versies FF, Chrome + iE < 7 Niet hoe HTTP werkt, 'multipart requests' bestaan niet (vraag A op, geef ABC terug) 0.000184% usage volgens Mozilla team Geen ondersteuning in Apache / NginX
  • 47. Cache expiration jungleCache expiration jungle - Cache Control - Expires - Last Modified - ETag - Age - Pragma
  • 48. Gebruik geen HTTPS!Gebruik geen HTTPS! Tuurlijk wel Maar default 24-32% trager! Apache heeft standaard 28 chipher suits 9 max nodig HTTPS niet in varnish zonder SSL offloader
  • 49. Gebruik HTTPS!Gebruik HTTPS! SPDY Wordt standaard HTTP/2.0? In gebruik alle sites van google en facebook Vereist certificaat (443) (wildcard?) Niet te troubleshooten
  • 51. Drupal Memory usageDrupal Memory usage drush php-eval "echo format_size(memory_get_usage());" 52.09 MB
  • 52. PHP Memory usagePHP Memory usage Integer is 4 bytes. Maar... typedef union _zvalue_value { long lval; // long/bools double dval; // doubles/floats struct { // strings char *val; // The string int len; // length } str; HashTable *ht; // arrays (hash tables) zend_object_value obj; //objects } zvalue_value; struct _zval_struct { zvalue_value value; zend_uint refcount__gc; // for the GC, refs to this value zend_uchar type; //item type zend_uchar is_ref__gc; // is a ref (&) };
  • 53. PHP Memory usagePHP Memory usage zvalue_value: 16 bytes zval: 8 bytes Garbage Collection: 8 bytes (PHP 5.4) Zend Memory Managers: 16 bytes PHP 5.3: 40 bytes PHP 5.4: 48 bytes
  • 54. PHP Memory usagePHP Memory usage BucketsBuckets BucketsBucketsBevat de key, pointers naar data, vorige, volgende, eerste, laatste element.. Totaal: 96 bytes Array van 10 int's heeft 40 bytes data. 1 zval met 10 buckets en 10 zvals voor data Totaal: 1488 bytes (PHP 5.4) 37.2 x meer dan in C
  • 55. Drupal memory usageDrupal memory usage - Modules / include files (± 100 tot 500 KB) - Theme registry (± 10 MB) - Locale cache (± 1 MB) - Static cache (± 1 MB) - Variables (< 100 KB)
  • 56. MySQL is slimMySQL is slim Relationele databases: DBMS bepaald hoe de data het beste opgehaald kan worden DBMS weet niet hoe we de data gebruiken DOM
  • 57. Pagina moet ladenPagina moet laden binnen 2 secondebinnen 2 seconde • MySQL zal slow query af makenMySQL zal slow query af maken • Ook als deze 2 uur duurt...Ook als deze 2 uur duurt...
  • 58. CardinaliteitCardinaliteit Aantal verschillende waarden in een kolom. Indexen worden meestal niet gebruikt wanneer cardinaliteit laag is (bijv. 10% van aantal rijen). Gaat uit van gelijke verdeling! InnoDB doet analyse op selectivity: hoeveel rijen blijven er over na filtering?
  • 59. Union vs ORUnion vs OR SELECT ... WHERE (a) OR (b) SELECT ... WHERE (a) UNION SELECT ... WHERE (b)
  • 60. TrickyTricky - Grootste deel van de filtering in joined tables - Order by op joined tables - Order by i.c.m. seq. scan - Joins op kolom zonder index (of mogelijkheid tot het gebruik daarvan)
  • 61.
  • 62.
  • 63. Free ride?Free ride? Eerste die nu een easter-egg vindt op projectpaas.com en hierover twittert krijgt gratis “pluto” test!
  • 64. Vragen?Vragen? • Harder, • Faster, • Stronger, • Better. (our work is never over)