GitHub, autoscaling, and the component substitution fallacy

Aug 21, 2026 02:28 AM - 1 hour ago 2

In yesterday’s post astir the recent GitHub outage, location was a item successful the writeup that I didn’t opportunity thing about: the autoscaling argumentation connected the work pinch the saturated Istio sidecar.

Originally this was caused by an Istio sidecar pod reaching its concurrency limits and failing to car standard correctly because of a misconfigured argumentation that watched big work but not sidecar limits.

I fishy readers of this blog are acquainted pinch what autoscaling is and really it works, but here’s a little summary successful lawsuit you aren’t. The magnitude of compute and representation resources that a work requires depends connected the load that’s placed connected that service. The applicable root of load present is outer requests against the service, besides known arsenic traffic. The measurement of postulation varies complete time. For example, for a institution for illustration GitHub, my conjecture is that they much postulation during moving hours than evening and weekends.

Given that load changes dynamically, and that the compute and representation resources a work request is simply a usability of load, location are 2 wide strategies. One strategy is to proviso your work for highest load. The different strategy is to dynamically set the resources allocated to your service, based connected its existent load; that’s called autoscaling.

If you want your work to usage autoscaling, you request to specify an autoscaling policy. In particular, you request to prime which metrics you want to usage that correspond load, and past you request to specify really resources should beryllium added aliases removed based connected really that metric changes.

CPU utilization is simply a communal metric utilized for autoscaling. But statement that a work tin go saturated moreover if CPU is low. For example, ideate a script wherever you usage thread-per-request pinch a threadpool, and the latency of your downstream requests increase, and each of the threads successful the excavation extremity up blocked. Here the work is saturated, and you’d use from spinning up caller pods, but CPU is really low, because the threads are blocked waiting connected I/O (this happened to Slack backmost successful 2021). Now, you tin adhd further rules to your autoscaling argumentation to grip specified cases (which is what Slack did, wherever they quickly scaled up based connected number of threads). Or you tin standard based connected incoming petition measurement alternatively of CPU, if your work isn’t CPU-bound.

Based connected the GitHub writeup, it sounds for illustration the autoscaling argumentation for the impacted work utilized load metrics that only took into relationship load connected the work itself, and not connected the Istio sidecar.

In general, each work behaves otherwise nether load, which intends that each autoscaling argumentation is efficaciously bespoke. This intends that a squad that owns a work is not only responsible for the business logic, but besides for an operational power strategy pinch civilization parameters, that tin really only beryllium checked via load testing. (Are you doing load testing connected each your services?) The work owners are besides almost surely not autoscaling experts. And truthful it’s not astonishing to maine that a misconfigured autoscaling argumentation was a contributor here.

But, while I deliberation it’s worthy discussing the peculiar defect pinch this policy, since it’s bully for group to beryllium alert of the risks of autoscaling, I besides deliberation it’s excessively easy to fixate connected it to the removal of different factors progressive successful this incident. This is what David Woods refers to arsenic the component substitution fallacy – the thought that the measurement to amended reliability is to attraction efforts connected identifying and fixing the defective components.

While, yes, you should place and hole the defects uncovered by an incident, you should besides admit that:

  • your strategy is, astatine this very moment, filled pinch latent constituent defects
  • despite the beingness of each of these defects, your strategy is not perpetually failing over

This intends that component defects aren’t capable to return down your system, aliases your strategy would beryllium down correct now. Don’t conscionable look astatine the individual components: dainty the interactions arsenic first-class. In the GitHub outage, we spot chat of interactions betwixt factors specified as: changing postulation patterns (including scrapers), autoscaling policy, the Istio sidecar saturation, retry logic, HAProxy node saturation, and authentication traffic.

There’s besides a multitude of specifications we don’t person because this is simply a quickly disseminated nationalist writeup, and the bully worldly tin only beryllium recovered successful the soul writeup. I speculated successful this station astir the narration betwixt work proprietor and autoscaling policy, but I would emotion to cognize much astir the history present (did this argumentation predate the usage of Istio sidecars, for example?). I’d besides emotion to cognize much astir the problematic traffic. (What kinds of requests were they? Was it a abrupt summation aliases a gradual ramp-up? Do we cognize why the postulation increased?).

You can’t get answers to these sorts of questions for nationalist incident writeups, but you tin for the soul ones astatine your ain organization. It’s up to you to inquire the questions.

More