Projectpaas drupaljam 2013 rotterdam

3,411 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,411
On SlideShare
0
From Embeds
0
Number of Embeds
251
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Projectpaas drupaljam 2013 rotterdam

  1. 1. A little lessconversation• Maurits Lawende• Bert Boerland• @projectpaas• https://www.facebook.com/projectpaas140
  2. 2. Define PerformanceDefine Performance• SnelheidSnelheid• BeschikbaarheidBeschikbaarheid• StabiliteitStabiliteit
  3. 3. Non FunctionalNon FunctionalRequirementRequirement•Meer contentMeer content•Meer gebruikersMeer gebruikers•Meer hitsMeer hits•Meer codeMeer code•...zelfde hardware...zelfde hardware
  4. 4. 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
  5. 5. Waarom performance
  6. 6. Waarom performance
  7. 7. Waarom performance
  8. 8. Waarom performance
  9. 9. Waarom performance
  10. 10. Waarom performanceWaarom performanceAls je een business case hebt voor een websiteAls je een business case hebt voor een websiteben je deze kwijt als je te langzaam bent...ben je deze kwijt als je te langzaam bent...
  11. 11. 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
  12. 12. 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”
  13. 13. 80% frontend80% frontend 20% backend20% backendPerformance is enkel100% relevant in de browserPerformance is enkel100% relevant in de browser
  14. 14. Bij mij is ‘ie wel snelBij mij is ‘ie wel snel
  15. 15. Want ik ben centrumWant ik ben centrumvan de wereldvan de wereld
  16. 16. Maar we zijn toch heelMaar we zijn toch heelsnel?snel?
  17. 17. Gecachde waterval
  18. 18. MetricsMetrics• Als je het niet kan metenAls je het niet kan metenkan je het niet verbeteren.kan je het niet verbeteren.• ProjectPAAS meet 100 metrics, analyseertProjectPAAS meet 100 metrics, analyseerten rapporteert hieroveren rapporteert hierover
  19. 19. FrontendFrontend(20%)(20%)100% browser100% browserMiddleMiddle(30%)(30%)BackendBackend(50%)(50%)
  20. 20. 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, 100populaire URL’s, tijd...)populaire URL’s, tijd...)• Wacht 6 uurWacht 6 uur
  21. 21. 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
  22. 22. Tooling ‘n TipsTooling ‘n TipsTools 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
  23. 23. DNSDNSNetworkNetwork
  24. 24. Nu.nl spot the SPOF
  25. 25. TC: 352 elementen72 domains72 domains
  26. 26. CDN / ParallelCDN / Parallel- Vroeger meer hits- Toen dichter bij / minder latency- Nu met name anti dDOS- default cookieloos- niet default sneller
  27. 27. BandbreedteBandbreedteMbps heeftMbps heeft nietsniets met snelheid te makenmet snelheid te maken
  28. 28. WebWeb
  29. 29. 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 responseServers dichtbij (CDN)Minder requests
  30. 30. Apache multipartApache multipartresponseresponseContent-Type: multipart/mixed; boundary="..."Onderseund in recente versies FF, Chrome + iE < 7Niet hoe HTTP werkt, multipart requests bestaanniet (vraag A op, geef ABC terug)0.000184% usage volgens Mozilla teamGeen ondersteuning in Apache / NginX
  31. 31. Cache expiration jungleCache expiration jungle- Cache Control- Expires- Last Modified- ETag- Age- Pragma
  32. 32. Gebruik geen HTTPS!Gebruik geen HTTPS!Tuurlijk welMaar default 24-32% trager!Apache heeft standaard 28 chipher suits9 max nodigHTTPS niet in varnish zonder SSL offloader
  33. 33. Gebruik HTTPS!Gebruik HTTPS!SPDYWordt standaard HTTP/2.0?In gebruik alle sites van google en facebookVereist certificaat (443) (wildcard?)Niet te troubleshooten
  34. 34. LoveLove
  35. 35. Drupal Memory usageDrupal Memory usagedrush php-eval "echoformat_size(memory_get_usage());"52.09 MB
  36. 36. PHP Memory usagePHP Memory usageInteger is 4 bytes. Maar...typedef union _zvalue_value {long lval; // long/boolsdouble dval; // doubles/floatsstruct { // stringschar *val; // The stringint 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 valuezend_uchar type; //item typezend_uchar is_ref__gc; // is a ref (&)};
  37. 37. PHP Memory usagePHP Memory usagezvalue_value: 16 byteszval: 8 bytesGarbage Collection: 8 bytes (PHP 5.4)Zend Memory Managers: 16 bytesPHP 5.3: 40 bytesPHP 5.4: 48 bytes
  38. 38. PHP Memory usagePHP Memory usageBucketsBucketsBucketsBucketsBevat de key, pointers naar data, vorige,volgende, eerste, laatste element..Totaal: 96 bytesArray van 10 ints heeft 40 bytes data.1 zval met 10 buckets en 10 zvals voor dataTotaal: 1488 bytes (PHP 5.4)37.2 x meer dan in C
  39. 39. 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)
  40. 40. MySQL is slimMySQL is slimRelationele databases:DBMS bepaald hoe de data het beste opgehaald kanwordenDBMS weet niet hoe we de data gebruikenDOM
  41. 41. Pagina moet ladenPagina moet ladenbinnen 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...
  42. 42. CardinaliteitCardinaliteitAantal verschillende waarden in een kolom.Indexen worden meestal niet gebruikt wanneercardinaliteit laag is (bijv. 10% van aantal rijen). Gaatuit van gelijke verdeling!InnoDB doet analyse op selectivity:hoeveel rijen blijven er over na filtering?
  43. 43. Union vs ORUnion vs ORSELECT ... WHERE (a) OR (b)SELECT ... WHERE (a)UNIONSELECT ... WHERE (b)
  44. 44. 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)
  45. 45. Free ride?Free ride?Eerste die nu een easter-egg vindt opprojectpaas.com en hierover twittert krijgtgratis “pluto” test!
  46. 46. Vragen?Vragen?• Harder,• Faster,• Stronger,• Better.(our work is never over)

×