Download - Ruby On Rails Sydney Meetup - Performance Tips For Apps

Transcript
Page 1: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Performance Tips For Apps

Page 2: Ruby On Rails Sydney Meetup - Performance Tips For Apps

About Me

clairettran

Page 3: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Performance Is Important

Oops!● Myer Boxing Day 2013● Click Frenzy 2012

Page 4: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Some Common Problems

Note: not an exhaustive list

Page 5: Ruby On Rails Sydney Meetup - Performance Tips For Apps

What I’ll Cover

● Monitoring● Asynchronous Tasks● Caching● Scaling● Database +

Page 6: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Monitoring

How to know there is a performance problem?

+ Response time, rpm, memory usage, CPU usage, error rates

Page 7: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Monitoring

What else can I do?● Logs● Memory Usage● Performance tests● Health Checks● More call centre phone calls

Page 8: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Asynchronous Tasks

Page 9: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Caching

How?● Cache store ● Fragment caching● SQL caching

Removed in Rails4: Action Caching & Fragment Caching

Page 10: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Caching

Before: No Caching

After: With Caching!

Problem: Page making long running/many external requests

Page 11: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Scaling

Page 12: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Scaling

Page 13: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Database

● Add an index● Profiling● Batch queries● Eager fetching● Denormalisation● Sharding

Page 14: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Other Techniques● Queuing/Background Jobs● Caching tech (e.g.

Elasticache)● Dedicated services● Rails engines● C-extensions (gems)● Sprites● Asset pipeline● Cache control headers● Gzip assets*● Less HTTP requests● Dedicated Search Service

● Remove unused assets● Static cluster● AWS Auto-scaling● Akamai, Cloudfront (edge

caching)● YSlow● Local Storage● Smaller Responses● Async JS● Chrome DevTools● Ruby Flavours e.g. JRuby

Page 15: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Further Reading

https://github.com/ianheggie/health_check

http://guides.rubyonrails.org/caching_with_rails.html

http://railscasts.com/episodes/380-memcached-dalli

https://developers.google.com/events/io/sessions/324511365

http://railscasts.com/episodes/366-sidekiq

http://www.slideshare.net/derekmbrown/netflix-strategic-performance-analysis

http://blog.jphpsf.com/2012/04/28/front-end-performance-case-study-github

Page 16: Ruby On Rails Sydney Meetup - Performance Tips For Apps
Page 17: Ruby On Rails Sydney Meetup - Performance Tips For Apps

Questions