惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
J
Java Code Geeks
博客园 - 【当耐特】
宝玉的分享
宝玉的分享
腾讯CDC
D
DataBreaches.Net
Microsoft Azure Blog
Microsoft Azure Blog
Engineering at Meta
Engineering at Meta
V
V2EX
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Tailwind CSS Blog
Jina AI
Jina AI
GbyAI
GbyAI
大猫的无限游戏
大猫的无限游戏
A
About on SuperTechFans
酷 壳 – CoolShell
酷 壳 – CoolShell
爱范儿
爱范儿
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
U
Unit 42
B
Blog
M
MIT News - Artificial intelligence
N
Netflix TechBlog - Medium

Buttondown's blog

Email could have been X.400 times better The physicists who convinced Fermilab to send Brazil's emails Better in-app previews Analytics 3.0 Subscriber ID variables Comments! Send latest premium action Automation filtering Free API subscribers Surveys in automations Reply to replies Labels for RSS feeds How Jeremy Singer-Vine curates curious datasets for readers 2023 (and what's next) Email vs web content Sort by engagement Better gift subscriptions How Andy Dehnart built a career reviewing television New email template Email-based automations Opt-in reply tracking Automatic alt text More social network integrations Sort by metadata Overlarge image warnings Automation tag actions Pause emails mid-flight Search tags and automations Gift via automations Subscriber-driving emails
Public postmortem: app downtime
Matias Artopoulos Kozak · 2026-06-16 · via Buttondown's blog

TL;DR

On Thursday, from 20:31 to 20:50 UTC Buttondown's backend was down, causing the app, API, sending and automations to be offline temporarily.

We pushed an update with a database migration that removed a schema constraint to improve the performance in certain scenarios. Counterintuitively, this is an extremely heavy operation for Postgres locks the entire database indefinitely if it's done in a big table. This caused all queries to be blocked on this operation, therefore filling up all of the database's connection slots.

How did we detect the issue?

Our automated monitoring for our API and database notified us within minutes and paged a team member to take a look.

How did we mitigate the issue?

We identified that the migration was the issue at 20:34, and by 20:39 we realized the problem was connection slot exhaustion and started trying to disconnect database clients to improve the situation. Unfortunately, because of the connection slot exhaustion, we had a hard time connecting to the database ourselves, which delayed the fix. We ended up getting the database restarted by 20:49, at which point service was immediately restored.

How will we prevent this from happening again?

  1. We're investigating exactly what kind of impact this kind of migration has, and figuring out how to prevent them systematically from causing downtime (for example, by timing out if it takes too long.)
  2. Literally the day after this incident, PlanetScale (our database provider) added better tools to mitigate an incident like the one we had without having connection slot issues. We're documenting these and making sure we have them on hand if this happens again, to be able to investigate and recover much faster.