Cuello de botella de PostgreSQL LISTEN/NOTIFY: Lecciones del procesamiento de millones de horas de reuniones

2025-07-11
Cuello de botella de PostgreSQL LISTEN/NOTIFY: Lecciones del procesamiento de millones de horas de reuniones

Recall.ai procesa millones de horas de datos de reuniones cada mes. Su base de datos PostgreSQL sufrió caídas debido a escrituras de alta concurrencia. La investigación reveló que la función LISTEN/NOTIFY adquiere un bloqueo global de la base de datos durante el commit de la transacción, serializando todos los commits y creando un cuello de botella. La migración de esta lógica a la capa de aplicación resolvió el problema.

Leer más
Desarrollo

Una trampa del ciclo de vida del hilo del kernel de Linux: el caso del proceso Chromium que muere aleatoriamente

2025-04-10
Una trampa del ciclo de vida del hilo del kernel de Linux: el caso del proceso Chromium que muere aleatoriamente

Al optimizar la latencia de inicio de Output Media de Recall.ai, un ingeniero encontró un error desconcertante: el proceso Chromium terminaba aleatoriamente después del inicio. La causa raíz se rastreó hasta la bandera `--die-with-parent` de Bubblewrap y el manejo de PR_SET_PDEATHSIG por parte del kernel de Linux. Esta bandera hace que los procesos secundarios reciban una señal SIGKILL cuando el hilo principal, no el proceso principal, termina. La gestión de hilos de Tokio interactuó con este comportamiento, llevando a la terminación inesperada de Chromium cuando el hilo principal era recolectado. Eliminar la bandera solucionó el problema, pero reveló un peculiar comportamiento poco conocido del kernel de Linux, subrayando la necesidad de precaución al manejar la interacción entre los ciclos de vida de los hilos y el aislamiento de procesos.

Leer más
Desarrollo

Reducción de latencia del 83% con indicadores de proceso Linux esotéricos

2025-03-06
Reducción de latencia del 83% con indicadores de proceso Linux esotéricos

Un ingeniero optimizando la función Output Media de Recall.ai se encontró con un problema desconcertante: la terminación aleatoria del proceso Chromium dentro de un entorno de espacio aislado. Una depuración profunda reveló la causa raíz: la función prctl(PR_SET_PDEATHSIG, SIGKILL) del kernel de Linux, que rastrea los subprocesos principales, no los procesos. La interacción inesperada con la administración de subprocesos de Tokio provocó la recuperación de los subprocesos principales y desencadenó la señal SIGKILL, terminando el proceso secundario. Eliminar el indicador --die-with-parent de Bubblewrap resolvió el problema, lo que resultó en una reducción de latencia del 83%.

Leer más