Postgres locks no escalan: cómo un convoy de 15.000 procesos tumbó nuestra base de datos
Postgres locks do not scale
El 24 de marzo, Recall.ai sufrió una caída total de su base de datos Postgres en AWS RDS, con la CPU al 100% en tiempo de sistema. Tras un reinicio fallido, descubrieron que un pico de bots uniéndose a reuniones a la misma hora provocó una avalancha de extensiones de índice GIN, creando un convoy de bloqueos de 15.000 procesos. El sistema de detección de deadlocks de Postgres, al despertar a todos los procesos simultáneamente, generó un segundo convoy en los locks del lock manager, consumiendo toda la CPU. El artículo detalla la investigación, la reproducción del problema y las lecciones aprendidas sobre cómo diseñar sistemas a escala con cargas ráfaga.
Cualquier operación que termine sincronizada requiere atención extra; incluso las operaciones pequeñas, cuando se sincronizan y están a escala, pueden convertirse en calamidades.