I know it is pretty early to be looking at application performance as I haven’t even released a beta but I decided that I wanted to play around with something to break up the coding and testing. From reading StackOverflow and other places I already knew that New Relic was pretty highly regarded in terms of being able to visualize and diagnose performance issues.
So I figured I would give them a try and play around with their product on my development environment and maybe it would surface some problems. Step one for installing their monitoring was creating an account on NewRelic.com. To my delight they were offering a free copy of The Lean Startup as a reward for signing up. The rest of the install was dead simple (install a gem, copy a yaml file to the server and make a few tweaks to the yaml file) the whole process only about 5 minutes from signup to the first data from my application showing up on the reports.
I will touch a bit on their reporting in a bit but before I get into that I just wanted to mention how they do free trial right. A lot of these free trials require you to put in a credit card and unless you remember to cancel they will bill you or at the very least shutdown your account. New Relic doesn’t do anything sleezy like that, instead they gracefully move you from the full featured professional version to the lite (free) version after your 14 day trial ends. They also take the time for a member of their sales team to reach out to you (I am sure the motive is to qualify you as a lead but still it gives the trial a personal touch) and ask you about your planned usage. Just for replying to their email they extended my free trial by 3 months.
On to their features…Since I am still in development mode I don’t really care about the server monitoring portion of their offering. I am more interested in their application monitoring. I love the web transactions features as they can show your controllers by average response time and you can then dive into the controller and see what is slowing things down.
So based on the controller average response time I can see that my RoundsController#update is taking 135ms more than any of my other controllers on the list.
The performance breakdown for that action looks like this:
Compared to my TeesController#update (which runs at 55.8ms):
I am obviously doing something really expensive in the controller which I need to take a look at. I also might be able to optimize by reducing the calls to Hole#find as I am calling this 18 times and it is probably a lot quicker to get all the holes in a collection and just iterate through the collection. At this point I am not too worried about it though as this stuff might solve itself in pre-production. Just interesting to see where I might have potential problems.
I hope that golfingstat is successful enough that I can justify spending money on application/server monitoring, if I am lucky enough to make some money on this thing then there is no question that I will choose to use New Relic. Their product is great and as I mentioned above their customer service is excellent.