Performance Optimization
- Engineering
- Last Updated: May 26, 2016
- Andrew Gwozdziewycz
For almost two years now, the Heroku Dashboard has provided a metrics page to display information about memory usage and CPU load for all of the dynos running an application. Additionally, we've been providing aggregate error metrics, as well as metrics from the Heroku router about incoming requests: average and P95 response time, counts by status, etc.
Almost all of this information is being slurped out of an application's log stream via the Log Runtime …
- News
- Last Updated: May 12, 2016
- Andrew Konoff
Last week at RailsConf in Kansas City, Terence Lee and Richard Schneeman of Heroku’s Ruby Task Force sat down with the legendary Aaron Patterson (AKA tenderlove).
Aaron has been working hard to make Ruby three times faster — a goal that Matz called Ruby 3×3. Along the way, Aaron has discovered that Ruby may face a hard decision. On one side, Ruby can continue to be the productive, general-purpose scripting language that it looks like …
- Engineering
- Last Updated: March 01, 2016
- Damien Mathieu
I spend most of my time at Heroku working on our support tools and services; help.heroku.com is one such example. Heroku’s help application depends on the Platform API to, amongst other things, authenticate users, authorize or deny access, and fetch user data.
So, what happens to tools and services like help.heroku.com during a platform incident? They must remain available to both agents and customers—regardless of the status of the Platform API. There is simply no …
- Engineering
- Last Updated: February 22, 2016
- Richard Schneeman
The asset pipeline is the slowest part of deploying a Rails app. How slow? On average, it’s over 20x slower than installing dependencies via $ bundle install. Why so slow? In this article, we’re going to take a look at some of the reasons the asset pipeline is slow and how we were able to get a 12x performance improvement on some apps with Sprockets version 3.3+.
The Rails asset pipeline uses the sprockets …
- News
- Last Updated: August 20, 2015
- Brett Goulder
Last year, we launched the original Performance dyno, designed to support the largest apps running at-scale with more consistent service and faster response times. Today, with the goal of continuing to support our fast growing customers with more flexibility to choose the type of dynos best for their applications, we are excited to announce improvements to our performance dyno lineup:
- Performance-L — an improved and more powerful version of the existing Performance dyno, renamed the …
- Engineering
- Last Updated: August 06, 2015
- Richard Schneeman
In a recent patch we improved Rails response time by >10%, our largest improvement to date. I’m going to show you how I did it, and introduce you to the tools I used, because.. who doesn’t want fast apps?
In addition to a speed increase, we see a 29% decrease in allocated objects. If you haven’t already, you can read or watch more about how temporary allocated objects affect total memory use. Decreasing memory pressure on an app may allow it to be run on a smaller dyno type, or spawn more worker processes to handle more throughput. Let’s back up though, how did I find these optimizations in Rails in the first place?
- Engineering
- Last Updated: July 30, 2015
- Kevin Thompson
Earlier this month, the OpenSSL project team announced that three days later it would be releasing a new version of OpenSSL to address a high-severity security defect. In the end, this vulnerability resulted in another non-event for our customers, but we thought it might be useful and informative to share the process we went through to prepare for the issue.
- Engineering
- Last Updated: June 30, 2015
- Pedro Belo
Fun fact: the Heroku API consumes more endpoints than it serves. Our availability is heavily dependent on the availability of the services we interact with, which is the textbook definition of when to apply the circuit breaker pattern.
- News
- Last Updated: May 07, 2015
- Peter van Hardenberg
Heroku comes from and is built for the developer community; the values of experimentation, openness and accessibility have been part of the product from day one, and continue to drive its development. From our first days, we have provided a free tier that followed in the tradition of making it as easy and fun as possible for developers to learn and play, discover new technologies, and build new apps — and that's not changing. It's …
- Engineering
- Last Updated: May 02, 2024
- Koichi Sasada
This article introduces incremental garbage collection (GC) which has been introduced in Ruby 2.2. We call this algorithm RincGC. RincGC achieves short GC pause times compared to Ruby 2.1.
Subscribe to the full-text RSS feed for Performance Optimization.