PostgreSQL LISTEN/NOTIFY-Engpass: Lehren aus der Verarbeitung von Millionen von Meetingstunden

2025-07-11
PostgreSQL LISTEN/NOTIFY-Engpass: Lehren aus der Verarbeitung von Millionen von Meetingstunden

Recall.ai verarbeitet jeden Monat Millionen von Stunden an Meetingdaten. Ihre PostgreSQL-Datenbank erlitt aufgrund von hochparallelen Schreibvorgängen Ausfälle. Die Untersuchung ergab, dass die LISTEN/NOTIFY-Funktion während des Commits einer Transaktion eine globale Datenbank-Sperre erwirbt, wodurch alle Commits serialisiert werden und ein Engpass entsteht. Die Migration dieser Logik auf die Anwendungsebene löste das Problem.

Mehr lesen
Entwicklung hohe Parallelität

Eine Falle im Lebenszyklus von Linux-Kernel-Threads: Der Fall des zufällig terminierenden Chromium-Prozesses

2025-04-10
Eine Falle im Lebenszyklus von Linux-Kernel-Threads: Der Fall des zufällig terminierenden Chromium-Prozesses

Bei der Optimierung der Startlatenz von Recall.ai's Output Media stieß ein Ingenieur auf einen rätselhaften Fehler: Der Chromium-Prozess beendete sich nach dem Start zufällig. Die Ursache wurde auf das Flag `--die-with-parent` von Bubblewrap und die Behandlung von PR_SET_PDEATHSIG durch den Linux-Kernel zurückgeführt. Dieses Flag führt dazu, dass untergeordnete Prozesse ein SIGKILL-Signal erhalten, wenn der übergeordnete Thread, nicht der übergeordnete Prozess, beendet wird. Die Threadverwaltung von Tokio interagierte mit diesem Verhalten und führte dazu, dass Chromium unerwartet beendet wurde, wenn der übergeordnete Thread bereinigt wurde. Das Entfernen des Flags behob das Problem, offenbarte aber eine wenig bekannte Eigenart des Linux-Kernels und unterstreicht die Notwendigkeit von Vorsicht beim Umgang mit der Interaktion zwischen Thread-Lebenszyklen und Prozessisolation.

Mehr lesen
Entwicklung

83% Latenzreduktion mit esoterischen Linux-Prozessflags

2025-03-06
83% Latenzreduktion mit esoterischen Linux-Prozessflags

Ein Ingenieur, der die Output Media-Funktion von Recall.ai optimierte, stieß auf ein rätselhaftes Problem: die zufällige Beendigung des Chromium-Prozesses in einer Sandbox-Umgebung. Ein tiefes Debugging enthüllte die Ursache: die Funktion prctl(PR_SET_PDEATHSIG, SIGKILL) des Linux-Kernels, die Elterthreads, nicht aber Prozesse verfolgt. Die unerwartete Interaktion mit dem Thread-Management von Tokio führte zur Ernte von Elterthreads und löste das SIGKILL-Signal aus, wodurch der untergeordnete Prozess beendet wurde. Das Entfernen der --die-with-parent-Flag von Bubblewrap behob das Problem und führte zu einer Latenzreduktion von 83 %.

Mehr lesen