<div style="font-family: Helvetica; font-size: 13px;">We tried out Newrelic a long while back, but we found it was leaking memory in production, which was non-ideal.  I’m sure its better nowadays though.<br></div>
                <div><div><br></div><div>-- </div><div>Rory Sinclair<br></div><div>Head of Technology</div><div>ASMALLWORLD</div><div><br></div></div>
                 
                <p style="color: #A0A0A8;">On Wednesday, 26 March 2014 at 17:24, Hemant Kumar wrote:</p>
                <blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-left:0px;padding-left:10px;">
                    <span><div><div><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><br><br><div>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 type="cite"><div>
                <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><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>
                  
                <p style="color:#a0a0a8">On Wednesday, 26 March 2014 at 15:14, Graham Ashton wrote:</p>
                </div></div><blockquote type="cite"><div>
                    <span><div><div><div><div><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><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></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><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></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><div><div><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></div></div></span>
                  
                  
                  
                  
                </div></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></div></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>
</div><div><div>_______________________________________________</div><div>Chat mailing list</div><div><a href="mailto:Chat@lists.lrug.org">Chat@lists.lrug.org</a></div><div><a href="http://lists.lrug.org/listinfo.cgi/chat-lrug.org">http://lists.lrug.org/listinfo.cgi/chat-lrug.org</a></div></div></div></span>
                 
                 
                 
                 
                </blockquote>
                 
                <div>
                    <br>
                </div>