Bouteille à la performance de PostgreSQL LISTEN/NOTIFY : Leçons tirées du traitement de millions d’heures de réunions

2025-07-11
Bouteille à la performance de PostgreSQL LISTEN/NOTIFY : Leçons tirées du traitement de millions d’heures de réunions

Recall.ai traite des millions d’heures de données de réunion chaque mois. Sa base de données PostgreSQL a subi des pannes dues à des écritures hautement concurrentes. L’enquête a révélé que la fonctionnalité LISTEN/NOTIFY acquiert un verrou global de la base de données lors de la validation de la transaction, ce qui sérialise toutes les validations et crée un goulot d’étranglement. La migration de cette logique vers la couche application a résolu le problème.

Lire plus
Développement

Un piège du cycle de vie des threads du noyau Linux : le cas du processus Chromium qui se termine aléatoirement

2025-04-10
Un piège du cycle de vie des threads du noyau Linux : le cas du processus Chromium qui se termine aléatoirement

Lors de l'optimisation de la latence de démarrage d'Output Media de Recall.ai, un ingénieur a rencontré un bogue déroutant : le processus Chromium se terminait aléatoirement après le démarrage. La cause racine a été attribuée à l'indicateur `--die-with-parent` de Bubblewrap et à la gestion de PR_SET_PDEATHSIG par le noyau Linux. Cet indicateur fait en sorte que les processus enfants reçoivent un signal SIGKILL lorsque le thread parent, et non le processus parent, se termine. La gestion des threads de Tokio a interagi avec ce comportement, entraînant la terminaison inattendue de Chromium lorsque le thread parent était récupéré. La suppression de l'indicateur a résolu le problème, mais a révélé une particularité peu connue du noyau Linux, soulignant la nécessité de prudence lors de la gestion de l'interaction entre les cycles de vie des threads et l'isolement des processus.

Lire plus
Développement Isolement des processus

Réduction de la latence de 83% grâce à des indicateurs de processus Linux ésotériques

2025-03-06
Réduction de la latence de 83% grâce à des indicateurs de processus Linux ésotériques

Un ingénieur optimisant la fonctionnalité Output Media de Recall.ai a rencontré un problème déroutant : la terminaison aléatoire du processus Chromium dans un environnement bac à sable. Un débogage approfondi a révélé la cause racine : la fonction prctl(PR_SET_PDEATHSIG, SIGKILL) du noyau Linux, qui suit les threads parents, et non les processus. L’interaction inattendue avec la gestion des threads de Tokio a provoqué la récupération des threads parents et déclenché le signal SIGKILL, terminant le processus enfant. La suppression de l’indicateur --die-with-parent de Bubblewrap a résolu le problème, entraînant une réduction de la latence de 83 %.

Lire plus