improving the performance of Rails web Applications
Upcoming SlideShare
Loading in...5
×
 

improving the performance of Rails web Applications

on

  • 3,656 views

This presentation is the first in a series on Improving Rails application performance. This session covers the basic motivations and goals for improving performance, the best way to approach a ...

This presentation is the first in a series on Improving Rails application performance. This session covers the basic motivations and goals for improving performance, the best way to approach a performance assessment, and a review of the tools and techniques that will yield the best results. Tools covered include: Firebug, yslow, page speed, speed tracer, dom monster, request log analyzer, oink, rack bug, new relic rpm, rails metrics, showslow.org, msfast, webpagetest.org and gtmetrix.org.

The upcoming sessions will focus on:
Improving sql queries, and active record use
Improving general rails/ruby code
Improving the front-end

And a final presentation will cover how to be a more efficient and effective developer!

This series will be compressed into a best of session for the 2010 http://windycityRails.org conference

Statistics

Views

Total Views
3,656
Slideshare-icon Views on SlideShare
3,451
Embed Views
205

Actions

Likes
5
Downloads
39
Comments
0

6 Embeds 205

http://www.railsperformance.com 146
http://railsperformance.blogspot.com 43
http://feeds.feedburner.com 7
http://www.linkedin.com 7
http://coderwall.com 1
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • <br />
  • Question: <br /> How does performance matter for your app? <br />
  • i took out a few words to make it fit <br /> <br /> http://googlewebmastercentral.blogspot.com/2010/04/using-site-speed-in-web-search-ranking.html <br /> <br /> http://www.websiteoptimization.com/speed/tweak/page-speed-search-rankings/ <br />
  • http://www.getelastic.com/when-to-performance-test/ <br />
  • http://www.getelastic.com/when-to-performance-test/ <br />
  • shopzilla <br /> 8000 requests per second <br /> parallel downloads alone lead to a 0.5% increase in topline revenue <br /> info and graphs from http://www.phpied.com/the-performance-business-pitch/ <br />
  • <br />
  • its not just about making things fast for the developers enjoyment or pride <br /> it has to be worth it from a business point of view <br />
  • <br />
  • performance is how long a singe job takes <br /> scalability is how many jobs you can handle <br />
  • most performance issues are at the page level, though we tend to emphasize optimizing the app and DB first <br /> <br /> http://tools.pingdom.com/ <br /> <br /> http://www.site-perf.com/ <br />
  • <br />
  • <br />
  • empty cache <br /> primed cache <br /> score <br /> time to load <br /> rules <br />
  • <br />
  • Shows you all the browser&#x2019;s actions <br /> requests, parsing, blocking, rendering, reflow, ajax <br /> <br /> Chrome tool <br /> http://code.google.com/webtoolkit/speedtracer/get-started.html <br />
  • I would start with firefox and chrome tools first, even if your users are primarily IE, because there is more help with those tools <br /> <br /> check your site with the IE tools to see if the numbers match <br />
  • <br />
  • Use the external site tools, or the internal browser tools as a sniff test. <br /> <br /> Its a quick way to get you thinking about what you should be looking into, but don&apos;t make any changes yet. <br /> <br /> Document your findings <br />
  • http://tools.pingdom.com/ <br /> http://www.site-perf.com/ <br />
  • <br />
  • <br />
  • run the tests a few times <br /> <br /> against multiple environments <br /> <br /> write down what numbers you got on which day (maybe iTunes free music day really kills the bandwidth in your office) <br /> <br /> <br /> add some load <br /> <br /> http://www.xenoclast.org/autobench/ <br /> <br /> httperf <br />
  • you can can fool it with a change to your hosts file <br /> you can store just your info locally, if you aren&#x2019;t cool with sending your data to another site <br /> you want to customize <br /> <br />
  • run it local <br />
  • there are other tools like scout and fiveruns <br />
  • <br />
  • <br />
  • work as a team to spread the knowledge and make sure performance issues don&#x2019;t sneak back in <br />
  • <br />
  • <br />
  • <br />
  • <br />

improving the performance of Rails web Applications improving the performance of Rails web Applications Presentation Transcript

  • Performance Monitoring John McCaffrey 1. Why does performance matter? 2. Know your Business Metrics 3. Quick ways assess application performance 4. Monitoring tools to help you track performance
  • Why does performance matter? • Revenue • Costs • Time • Competition • User satisfaction
  • Why does performance matter? • Google cares! • "Speeding up websites is important .. faster sites don't just improve user experience...improving site speed also reduces operating costs. Like us, our users place a lot of value in speed - that's why we've decided to take site speed into account in our search rankings. "
  • When should I start caring? • Capacity planning • Design • Growth • Development • Testing • Deployment • Monitoring
  • What am I tracking? Business Metrics • Page visits per day • Page visits per user per day • Time on site • Searches performed • Products views • Orders
  • SHOPZILLA Improving from 6 sec down to 1.2 seconds 6
  • Netflix: 43% drop in outbound traffic after enabling gzip 7
  • Making a business case
  • So we know that performance matters. Now what? 9
  • Performance Terms Latency = seconds per job, or "how long it takes" Throughput = jobs per second, or "how many workers" Average Response time = average latency Requests per second = average throughput If 1 worker that can compute 1 job in .5 sec latency = .5 secs per job throughput = 2 jobs per sec
  • Quick ways to check your stats • Eyeball the log files • Use Log reading tool • Use browser tools o Confirm your dev env vs staging • External site tests o Compare values outside of your network o Repeatable tests
  • Eyeball it Processing UserSessionsController#new (for 127.0.0.1 at 2010-05-15 10:11:09) [GET] Parameters: {"action"=>"new", "controller"=>"user_sessions"} Rendering template within layouts/login Rendering user_sessions/new Completed in 202ms (View: 105, DB: 42) | 200 OK [http://localhost/ login]
  • Log analyzer gem install request-log-analyzer request-log-analyzer log/development.log
  • Yslow
  • Page Speed
  • Speed Tracer
  • Microsoft tools – Dynatrace – MsFast – VRTA – Fiddler – Developer tools
  • Dom Monster http://javascriptrocks.com/performance/ 18
  • Are these numbers right? • Are they consistent? • Do they seem reasonable • How can we repeat the tests? • Can we reproduce them in all environments? • What should we investigate next?
  • External tools – http://zoompf.com – http://webo.name/ – http://tools.pingdom.com/ – http://gtmetrix.com – http://www.webpagetest.org/ – http://www.site-perf.com/ – http://webwait.com
  • GtMetrix.com 21
  • Don’t change anything! – Resist the urge to change a bunch of stuff – Test coverage – repeatable perf tests – don't break anything! – focus on low hanging fruit first – get your monitoring in place before you make any major changes – don't make it less maintainable – pair & share
  • Taking multiple measurements – Monitor performance over time – Manually keep an eye on your yslow/resp time – http://loadimpact.com/ – Apache Bench, Httperf – Jmeter
  • showslow.com http://127.0.0.1/showslow/
  • New Relic
  • New Relic
  • Rails Metrics 27
  • Rack Bug 28
  • Now What? – Summarize and describe your observations – Prioritize based on ease of change and expected impact – Make your changes in a branch – Compare your results – Look for patterns of optimization – Work with your team
  • Nuggets of Wisdom • Gzip • Get very familiar with yslow • Look through your logs, analyze them • Turn on slow query logging for db • Upgrade your libraries (js, plugins) • Use RVM (try new plugins, rails, ruby) 30
  • Upcoming Presentations – Chicago Javascript – Improving Page performance – ChicagoRuby – Improving Rails app performance – Improving Developer performance! – WindyCityRails 2010 – Improving Rails Application Performance – twitter: @j_mccaffrey
  • References – http://railsperformance.blogspot.com/ (me) – Railslab http://railslab.newrelic.com/ – Steve Souders http://www.stevesouders.com/blog/ – http://velocityconference.blip.tv/ – http://code.google.com/events/io/2010/ – http://speedgeeks-la.blip.tv/ – http://developer.yahoo.com/performance/ – http://code.google.com/speed/page-speed
  • References • http://guides.rubyonrails.org/performance_testing.html 33