15.000 Prozesse im Lock-Convoy: Wie ein GIN-Index unsere Postgres-Datenbank lahmlegte
Postgres locks do not scale
Bei Recall.ai kam es zu einem schwerwiegenden Datenbankausfall: Die CPU-Last der Postgres-Instanz schoss auf 100%, ohne erkennbaren Grund. Die Ursache war ein Lock-Convoy auf einem GIN-Index, ausgelöst durch synchronisierte Schreibvorgänge tausender Bots. Der Artikel analysiert die technischen Details, wie WaitLatch, CheckDeadlock und die Besonderheiten von GIN-Indizes, und zeigt, wie das Team das Problem löste und welche Lehren es daraus zog.
Selbst kleine Operationen können, wenn sie synchronisiert und in großem Maßstab ausgeführt werden, katastrophale Folgen haben.