performance and optimization cakefest 2014
DESCRIPTION
A talk I gave at Cakefest 2014TRANSCRIPT
![Page 1: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/1.jpg)
PROFILING & OPTIMIZATIONTools, guidelines, and techniques
![Page 2: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/2.jpg)
PERFORMANCE
![Page 3: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/3.jpg)
WHY BOTHER?
![Page 4: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/4.jpg)
HIGHER CONVERSION RATES
![Page 5: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/5.jpg)
SLOW MOBILE CONNECTIONS
![Page 6: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/6.jpg)
CONSERVE CAPACITY
![Page 7: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/7.jpg)
RULES; MORE LIKE GUIDELINES
![Page 8: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/8.jpg)
Guideline
MEASURE EVERYTHING
![Page 9: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/9.jpg)
Guideline
HUNT THE BIG FISH
![Page 10: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/10.jpg)
Guideline
START CHEAP & ITERATE
![Page 11: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/11.jpg)
Cost Order
Minify assets
Compress images
Reduce the number of HTTP requests
Optimize database queries
Add caching
Code optimization
![Page 12: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/12.jpg)
JUNK UP FRONT
![Page 13: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/13.jpg)
Junk Up Front
![Page 14: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/14.jpg)
MeasuringChrome developer tools
![Page 15: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/15.jpg)
Junk up front
Number of requests
Number of hosts
Image count & image size
Script count & script size
![Page 16: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/16.jpg)
Fixing
Smushit (pngcrush, jpegtran, imagemagick)
Uglify.js, CSSMin
Make, phing, rake, grunt, shell scripts
Image sprites
![Page 17: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/17.jpg)
Guideline
AVOID WORK TO GO FASTER
![Page 18: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/18.jpg)
WEBSERVER TRICKS
![Page 19: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/19.jpg)
MeasuringChrome developer tools
![Page 20: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/20.jpg)
Webserver tricks
GZIP all the things.
Far Future cache headers.
Consider a CDN.
![Page 21: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/21.jpg)
SQL MOLASSES
![Page 22: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/22.jpg)
Database slowness
Many backend performance issues are caused by too many, or slow queries.
Mysql has a pretty terrible query planner.
Sub-queries and derived table joins will eventually catch fire.
Slow query logs, mtop, or monitoring like new relic are your best friend.
![Page 23: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/23.jpg)
Database slowness
Slow query logs - Percona makes great tools for MySQL.
Disable query caching.
Run EXPLAIN on slow queries.
Add indexes/tweak queries, and repeat.
![Page 24: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/24.jpg)
Explain QueriesVisual explain makes it easier.
![Page 25: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/25.jpg)
Indexes
Index commonly used columns.
Column order in matters in indexes.
![Page 26: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/26.jpg)
CACHING
![Page 27: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/27.jpg)
Caching
Can be expensive to rollout, if you need new infrastructure
Cache expiration is really really hard.
![Page 28: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/28.jpg)
What to Cache
Results that don’t change often
Use monitoring/analytics to find the busiest pages.
Start using caching there.
Expand once you’ve learned more.
![Page 29: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/29.jpg)
Where to cache
Hopefully in Memcache/Redis
Failing that in Apc/Wincache
Files - Sometimes not faster.
![Page 30: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/30.jpg)
Optimize cache use
Watch cache miss rate.
Tune cache expiration so you miss less often.
![Page 31: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/31.jpg)
Guideline
OPTIMIZE CODE LAST, MOST OF THE TIME
![Page 32: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/32.jpg)
JAVASCRIPT
![Page 33: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/33.jpg)
PHP
![Page 34: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/34.jpg)
Javascript tools
Chrome dev tools are the gold standard.
CPU profiles are invaluable.
Heap comparisons can be used to find memory leaks.
![Page 35: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/35.jpg)
Cpu ProfilerChrome dev tools
![Page 36: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/36.jpg)
Cpu ProfilerChrome dev tools
![Page 37: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/37.jpg)
Cpu ProfilerChrome dev tools
![Page 38: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/38.jpg)
Cpu ProfilerChrome dev tools
![Page 39: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/39.jpg)
PHP TOOLS
![Page 40: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/40.jpg)
Debug KitDeeper insights into CakePHP
![Page 41: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/41.jpg)
XHProf
PECL extension produced by Facebook.
Captures runtime metrics at a function level.
Possible to use in a sub-sample of production unlike xdebug.
![Page 42: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/42.jpg)
XhguiNicer UI to XHProf data
![Page 43: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/43.jpg)
XhguiNicer UI to XHProf data
![Page 44: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/44.jpg)
XDebug
Not suitable for servers with traffic,
Very detailed results.
![Page 45: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/45.jpg)
WebgrindXDebug UI
![Page 46: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/46.jpg)
Other PHP tweaks
Opcode caching is a must.
Don’t use file based sessions.
![Page 47: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/47.jpg)
RECAP
![Page 48: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/48.jpg)
MEASURE EVERYTHING
![Page 49: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/49.jpg)
BE THRIFTY
![Page 50: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/50.jpg)
START IN THE FRONT
![Page 51: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/51.jpg)
AVOID WORK
![Page 52: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/52.jpg)
OPTIMIZE CODE
![Page 53: Performance and optimization CakeFest 2014](https://reader031.vdocuments.us/reader031/viewer/2022020122/55669b20d8b42a78708b5223/html5/thumbnails/53.jpg)
THANKS