Birds of a Fiber: A look at Falcon, a modern asynchronous web server for Ruby

BY Derek Haynes

What is Falcon? The GitHub Readme describes Falcon as, "... *a multi-process, multi-fiber rack-compatible HTTP server ... Each request is executed within a lightweight fiber and can block on up-stream requests without stalling the entire server process."* The gist: Falcon aims to increase throughput of web applications by using Ruby’s Fibers to be able to continue serving requests while other requests are waiting on IO (ActiveRecord queries, network requests, file read/write, etc).

Read More →

 

Monitor a Django app with Scout

BY Doug Breaker

In this post, I'll show how to setup Scout to monitor the performance of SQL queries, external HTTP calls, template rendering, and more in Wagtail , a Django CMS app. Wagtail is a fast, modern opensource content management system built on Django. Used at NASA, Google, MIT, and more, it's ...

Read More →

 

Monitoring Django apps on Heroku

BY Doug Breaker

I don't know of an easier way to deploy a Django app than letting Heroku do the work. That said, how do you stay on top of your app's performance, errors, and stability post-launch? Running an app on Heroku is a blissful experience, but it presents some monitoring challenges that ...

Read More →

 

Part I: How not to structure your database-backed web apps

BY Doug Breaker

Most scientific papers are unlikely to change your day-to-day approach as a Rails web developer. How not to structure your database-backed web applications: a study of performance bugs in the wild Yang et al., ICSE'18 is the exception to that rule. This study examined 12 popular, mature, opensource Rails apps ...

Read More →

 

Finding slow ActiveRecord queries with Scout

BY Doug Breaker

Once your Rails app begins seeing consistent traffic, slow SQL queries will likely rear their ugly head. Simple things like using find_by_sql can make a big improvement, but how can you easily tell where your app is slowing down? While PostgreSQL and MySQL can log slow queries, it's difficult to ...

Read More →

 

Finding and fixing N+1 queries in Django apps

BY Doug Breaker

The Django ORM makes it easy to fetch data, but there's a downside: it's easy to write inefficient queries as the number of records in your database grows. One area where the ease of writing queries can bite is you is with N+1 queries ( Rails N+1 queries can kill ...

Read More →

 

Why put Rust in our Python Monitoring agent?

BY Doug Breaker

Prior to adding Python performance monitoring , we'd written monitoring agents for Ruby and Elixir . Our Ruby and Elixir agents had duplicated much of their code between them, and we didn't want to add a third copy of the agent-plumbing code. The overlapping code included things like JSON payload ...

Read More →

 

Your Rails & Elixir performance metrics 📈 inside Chrome Dev Tools

BY Doug Breaker

Browser development tools - like Chrome Dev Tools - are vital for debugging client-side performance issues. However, server-side performance metrics have been outside the browser's reach. That changes with the Server Timing API . Supported by Chrome 65+, Firefox 59+, and more browsers, the Server Timing API defines a spec ...

Read More →

 

Scout's top-secret 4-point observability plan

BY Doug Breaker

Observability: the degree to which you can ask new questions of your system without having to ship new code or gather new data. Above is my slightly modified definition of observability, mostly stolen from Charity Majors in Observability: A Manifesto . Observability is increasingly important . Modern apps and services ...

Read More →

 

Django & Flask Performance Monitoring

BY Doug Breaker

7/31/18 Update: See how Scout monitors a real-world Django app , tracking SQL queries, deploys, slow requests, and more. GitHub's State of the Octoverse 2017 revealed that Python is now the second-most popular language on GitHub, with 40 percent more pull requests opened in 2017. We couldn't help but notice. ...

Read More →