AgendaAgenda
• Waarom performanceWaaromperformance
• Wat is performanceWat is performance
• Wat doet ProjectPAASWat doet ProjectPAAS
• Hoe doet ProjectPAASHoe doet ProjectPAAS
• Tooling en tipsTooling en tips
• FreebeeFreebee
Waarom performanceWaarom performance
Alsje 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 glassTimeto 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”
19.
80% frontend80% frontend20% backend20% backendPerformance is enkel100% relevant in de browserPerformance is enkel100% relevant in de browser
MetricsMetrics
• Als jehet 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
Wat doet uWatdoet 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?Watdoen 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
CDN / ParallelCDN/ Parallel
- Vroeger meer hits
- Toen dichter bij / minder latency
- Nu met name anti dDOS
- default cookieloos
- niet default sneller
Best hit isno 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
Gebruik geen HTTPS!Gebruikgeen 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
Wordtstandaard HTTP/2.0?
In gebruik alle sites van google en facebook
Vereist certificaat (443) (wildcard?)
Niet te troubleshooten
PHP Memory usagePHPMemory 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
MySQL is slimMySQLis 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 ladenPaginamoet 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 waardenin 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 ORUnionvs OR
SELECT ... WHERE (a) OR (b)
SELECT ... WHERE (a)
UNION
SELECT ... WHERE (b)
60.
TrickyTricky
- Grootste deelvan 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)
63.
Free ride?Free ride?
Eerstedie nu een easter-egg vindt op
projectpaas.com en hierover twittert krijgt
gratis “pluto” test!