Performance Optimization
- News
- Last Updated: July 16, 2020
- Michael Friis
Today we’re sharing three performance enhancements that we have recently rolled out to apps running in Private Spaces:
Dynos upgraded to the latest generation infrastructure for 10-15% perf improvement
More consistent performance for Small Private and Shield Space dynos
Optimized clock source selection
Heroku is a fully managed platform-as-a-service (PaaS) and we work tirelessly to continuously improve and enhance the experience of running apps on our platform. Unlike lower-level infrastructure-as-a-service systems, improvements are applied automatically to apps and databases and require no action or intervention from app developers to benefit.
That means that no action is required on your part …
- Life
- Last Updated: May 29, 2020
- Charlie Gleason
We are living in unprecedented times, and many of us are grappling with a really similar set of complicated and, at times exhausting, emotions. I've been thinking about this a lot since my conversation with Margaret Francis, the SVP of Platform Data Services at Salesforce and former Heroku GM, in our recent podcast for Code[ish].
At Heroku, we have gone from roughly over half of our team being remote, to all of our team being remote. We, along with people all over the world, have suddenly found ourselves working from living rooms, laundry rooms, gardens, garages, sheds, and kitchens. …
- Engineering
- Last Updated: December 18, 2019
- Julián Duque
This blog post is adapted from a talk given by Julián Duque at NodeConf EU 2019 titled "Let it crash!."
Before coming to Heroku, I did some consulting work as a Node.js solutions architect. My job was to visit various companies and make sure that they were successful in designing production-ready Node applications. Unfortunately, I witnessed many different problems when it came to error handling, especially on process shutdown. When an error occurred, there was often not enough visibility on why it happened, a lack of logging details, and bouts of downtime as applications attempted to recover …
- Engineering
- Last Updated: August 28, 2019
- Corey Purcell
As outlined in a previous blog post, Heroku Data services undergo routine maintenances for security and patching. In this post, we describe the process used to minimize downtime for Heroku Postgres and Heroku Redis premium ‘High Availability’ plans and how we optimized the process to perform up to 75% faster.
High availability plans for Postgres and Redis are designed to have two database instances running at the same time. One is a writeable primary database server and the other is a read-only hidden standby. Since the standby is hidden, customers cannot access it during normal operations.
…
- Engineering
- Last Updated: July 12, 2019
- Richard Schneeman
For quite some time we've received reports from our larger customers about a mysterious H13 – Connection closed error showing up for Ruby applications. Curiously it only ever happened around the time they were deploying or scaling their dynos. Even more peculiar, it only happened to relatively high scale applications. We couldn't reproduce the behavior on an example app. This is a story about distributed coordination, the TCP API, and how we debugged and fixed a bug in Puma that only shows up at scale.
First of all, what even is an H13 error? From our error page …
- Engineering
- Last Updated: July 11, 2019
- Ali Hamidi
This blog post is adapted from a talk given by Ali Hamidi at Data Council SF ’19 titled “Operating Multi-Tenant Kafka Services for Developers on Heroku.”
https://www.youtube.com/embed/-AtHKoTNR1k
Thousands of developers use Heroku’s Apache Kafka service to process millions of transactions on our platform—and many of them do so through our multi-tenant Kafka service. Operating Kafka clusters at this scale requires careful planning to ensure capacity and uptime across a wide range of customer use cases. With significant automation and test suites, we’re able to do this without a massive operations team.
In this post, we’re going to talk …
- Engineering
- Last Updated: April 15, 2019
- Jonan Scheffler
Setting up a database is a relatively straightforward process (Heroku has an add-on for that), but getting it to run well in production is sometimes another matter. As your application grows and your data grows along with it, you will likely find a number of performance bottlenecks specifically related to your database, and this post aims to help you diagnose and address those issues when they arise.
As with all components of your infrastructure it’s important to have early visibility into the performance characteristics of your database. Watching this data as your application grows will give you a much …
- Engineering
- Last Updated: March 20, 2019
- Amy Unger
This blog post is adapted from a talk given by Amy Unger at RailsConf 2018 titled "Knobs, buttons & switches: Operating your application at scale."
We've all seen applications that keel over when a single, upstream service goes down. Despite our best intentions, sometimes an unexpected outage has us scrambling to make repairs. In this blog post, we'll take a look at some tools you can integrate into your application before disaster strikes. We'll talk about seven strategies that can help you shed load, fail gracefully, and protect struggling services. We'll also talk about the technical implementations of …
- Engineering
- Last Updated: June 03, 2024
- Richard Schneeman
Rails applications that use ActiveRecord objects in their cache may experience an issue where the entries cannot be invalidated if all of these conditions are true:
They are using Rails 5.2+
They have configured config.active_record.cache_versioning = true
They are using a cache that is not maintained by Rails, such as dalli_store (2.7.8 or prior)
In this post, we discuss the background to a change in the way that cache keys work with Rails, why this change introduced an API incompatibility with 3rd party cache stores, and finally how you can find out if your app is at risk and how …
- Engineering
- Last Updated: August 14, 2018
- Chris Castle
This is the first in a series of blog posts examining the evolution of web app architecture over the past 10 years. This post examines the forces that have driven the architectural changes and a high-level view of a new architecture. In future posts, we’ll zoom in to details of specific parts of the system.
The standard web application architecture suitable for many organizations has changed drastically in the past 10 years. Back in Heroku’s early days in 2008, a standard web application architecture consisted of a web process type to respond to HTTP requests, a database to persist data, …
Subscribe to the full-text RSS feed for Performance Optimization.