<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div>The SQL-Logging gem (gem 'sql-logging') is a good help, it will give you a top 10 of SQL executions listed by total execution time in your dev env, so you can see where it’s running slowly and may need an index etc. Also has a few other helpful stats as well. </div><div><br></div><div>I’d also 2nd Rory’s suggestion of Bullet.  </div><div><br></div><div><br></div><div apple-content-edited="true">
<div style="font-family: Helvetica;  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="font-family: Helvetica;  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><font color="#669ddb">Nick Tabernacle  | <a href="mailto:nick@beo.so">nick@beo.so</a> | 07515653219</font></div></div></div></div>
</div>
<br><div><div>On 26 Mar 2014, at 17:24, Hemant Kumar <<a href="mailto:hemant@codemancers.com">hemant@codemancers.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr">Using newrelic also is a good idea for performance tuning a Rails application. I usually use them as high level bottleneck finder in various code paths. Works pretty well.<div><br></div><div>Once past that, I use a low level profiler if need be for further tuning of my application. </div>
<div><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Mar 26, 2014 at 11:43 AM, Rory Sinclair <span dir="ltr"><<a href="mailto:rory@asmallworld.net" target="_blank">rory@asmallworld.net</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                <div style="font-family:Helvetica;font-size:13px">Hi,<div><br></div><div>We’ve been doing some performance enhancement of our platform lately, which is a two-tier architecture (JSON API backend, Rails frontend web app).  Here’s whats helped:</div>
<div><br></div><div>On the client tier:</div><div><br></div><div>- using the yslow plugin for Firebug to identify things we needed to tweak on the web side (CDN for static assets, using a separate domain for assets, etc)</div>
<div><br></div><div>- reducing quality on large images to get the sizes down - this was a big deal, since all the usual ‘lossless’ compression tools were saving us next to nothing</div><div><br></div><div>- caching API responses - shared cache for public stuff / stuff thats the same for all users, and a per-user cache for ‘private’ stuff</div>
<div><br></div><div>- prefetching API endpoint data in parallel to warm caches</div><div><br></div></div><div><div>On the API back-end tier:</div><div><br></div><div>- using Ruby-Prof - <a href="https://github.com/ruby-prof/ruby-prof" target="_blank">https://github.com/ruby-prof/ruby-prof</a> - to spit out useful HTML graphs of where time is being spent</div>
<div><br></div><div>- using Bullet - <a href="https://github.com/flyerhzm/bullet" target="_blank">https://github.com/flyerhzm/bullet</a> - to identify cases where we should be eager loading but weren’t</div><div><br></div>
<div>- JMeter to hit every API endpoint multiple times concurrently, and graph average response times to identify</div><div><br></div><div>- generally reducing cruft, simplifying code paths, auditing code to ensure we’re not doing unnecessary work, etc</div>
<div><br></div><div>Thanks Graham for the tip about Rack Mini Profiler - will check that out.</div><div><br></div><div>Regards</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>-- </div><div>Rory Sinclair<br>
</div><div>Head of Technology</div><div>ASMALLWORLD</div><div><br></div></font></span></div><div><div class="h5"><p style="color:#a0a0a8">On Wednesday, 26 March 2014 at 15:14, Graham Ashton wrote:</p>
                </div></div><blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-left:0px;padding-left:10px">
                    <span><div><div class="h5"><div>On 26 Mar 2014, at 14:02, Nicholas Martin <<a href="mailto:nic_i_like_to_@hotmail.com" target="_blank">nic_i_like_to_@hotmail.com</a>> wrote:<br><br></div>
<blockquote type="cite"><div dir="ltr"><div>However, the challenge is finding what things will give us the best results.  For example, in the work we have done so far, code changes to aggregate data have helped a lot, caching less so.</div>
</div></blockquote><div><br></div>As others have already said, you need to measure things before you act.<div><br></div><div>The best tool I've come across for measuring performance of Rails apps is Rack MiniProfiler.</div>
<div><br></div><div><a href="https://github.com/miniprofiler/rack-mini-profiler" target="_blank">https://github.com/miniprofiler/rack-mini-profiler</a></div><div><br></div><div>I recommend watching the RailsCast to get yourself up to speed.</div>
<div><br></div><div>It's so quick and easy to install and use that I run it permanently in development, which helps me avoid big performance related oversights when building new features.<br><div><br></div><div>You'll obviously get different performance characteristics in production, with production hardware and the real users' data. Unlike most profiling tools, Rack MiniProfiler has been designed to run in production too.</div>
<div><br><blockquote type="cite"><div dir="ltr"><div>Any advice, based on experience would be most appreciated.  Any form would be of interest, from a short reply, to a chat over a coffee or even potentially a day or so of consultancy.</div>
</div></blockquote><div><br></div>I'd be happy to take a look at it on a consultancy basis if you like – ping me an email if you're interested. I wouldn't be surprised if a couple of hours with the profiler highlighted your low hanging fruit though...</div>
<div><br></div><div>Cheers,</div><div>Graham</div></div></div></div><div class=""><div>_______________________________________________</div><div>Chat mailing list</div><div><a href="mailto:Chat@lists.lrug.org" target="_blank">Chat@lists.lrug.org</a></div>
<div><a href="http://lists.lrug.org/listinfo.cgi/chat-lrug.org" target="_blank">http://lists.lrug.org/listinfo.cgi/chat-lrug.org</a></div></div></span>
                 
                 
                 
                 
                </blockquote>
                 
                <div>
                    <br>
                </div>
            <br>_______________________________________________<br>
Chat mailing list<br>
<a href="mailto:Chat@lists.lrug.org">Chat@lists.lrug.org</a><br>
<a href="http://lists.lrug.org/listinfo.cgi/chat-lrug.org" target="_blank">http://lists.lrug.org/listinfo.cgi/chat-lrug.org</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr">Cheers<div>Hemant</div><div>Co founder - <a href="http://www.codemancers.com/" target="_blank">http://www.codemancers.com</a></div><div><a href="http://twitter.com/gnufied" target="_blank">http://twitter.com/gnufied</a></div>
<div><br></div></div>
</div>
_______________________________________________<br>Chat mailing list<br><a href="mailto:Chat@lists.lrug.org">Chat@lists.lrug.org</a><br>http://lists.lrug.org/listinfo.cgi/chat-lrug.org<br></blockquote></div><br></body></html>