It's a lot harder connecting the dots of the request lifecycle when the final response is built from a number of separate microservices. However, distributed tracing - which connects a transaction trace across microservices - is getting a lot easier. In this short tutorial, I'll show how to add distributed ... Read more
When I have a slow Postgres ActiveRecord query, one of the first tools I reach for is EXPLAIN . pg-eyeballs is a Ruby gem that makes acting on this frequently noisy output easier. Those of you that know your way around ActiveRecord might be confused. ActiveRecord comes with an #explain ... Read more
Performance in almost all web apps - including Rails - follows an 80/20 rule: most of your performance problems will be contained within a small amount of the application code. Read more
Finding profilers that reliably work with little effort was a bigger challenge than I thought. Here's a summary of the Rails profiler ecosystem: what works, what doesn't, and each profiler's niche. Read more
I follow a simple rule before configuring a monitoring alert: if I receive this alert at 3am, will I act on it? If not, it shouldn't be an alert. Few performance-related alerts meet this criteria. For example, if our app is running 25% slower, it's not worth a hasty 3am ... Read more
DevTrace is a performance widget for your Rails applications in development. It sits unobtrusively in the corner of your page, just waiting to drop insight on your application: See stack traces, SQL timings, and more with just a click! This kind of insight is powerful. You can see how your ... Read more
There's nothing quite like having a "tool-belt" full of tricks for getting the most performance out of your Rails app. This week, Rails Postgres Guru Greg Navis shares another powerful tip. A few months ago, I was working on a project that had about 100,000 users. Each user could have ... Read more
"An ounce of prevention is worth a pound of cure."• Benjamin Franklin Application performance problems can be annoying. With luck, you'll spend an hour or two resolving the problem and get back to your real job: building things. But what happens when the issues start piling up? What happens ... Read more
Most Rails engineers know the basics of database performance. They know that if a query is slow, an index may be the solution. Some know the trade-offs between having and not having an index. Or why an index on a low-cardinality column might not help. But everyone is surprised when ... Read more
Donald Knuth wrote an often quoted paper in the 70s which is still referenced when talking about performance in web apps today. Premature optimization is the root of all evil. In my line of work, it is sometimes invoked as a sort of apology; an excuse for why more time ... Read more