PostgreSQL LISTEN/NOTIFY 的性能瓶颈:百万级会议数据处理的教训
2025-07-11
Recall.ai每月处理数百万小时的会议数据,其Postgres数据库因高并发写入而出现宕机。调查发现,LISTEN/NOTIFY功能在事务提交阶段会获取全局数据库锁,导致所有提交序列化,成为性能瓶颈。迁移到应用层处理后,问题解决。
阅读更多
开发
Recall.ai每月处理数百万小时的会议数据,其Postgres数据库因高并发写入而出现宕机。调查发现,LISTEN/NOTIFY功能在事务提交阶段会获取全局数据库锁,导致所有提交序列化,成为性能瓶颈。迁移到应用层处理后,问题解决。
阅读更多
工程师在优化Recall.ai的Output Media启动延迟时,遭遇了一个神秘的Bug:Chromium进程会在启动后随机终止。排查发现问题根源在于Bubblewrap的`--die-with-parent`标志以及Linux内核对PR_SET_PDEATHSIG的处理方式。该标志会使子进程在父线程(而非父进程)终止时收到SIGKILL信号。Tokio的线程管理机制与该行为相互作用,导致父线程被回收后,Chromium进程被意外终止。最终,移除该标志解决了问题,但暴露了Linux内核中一个鲜为人知的细节,提醒开发者需谨慎处理线程生命周期与进程隔离之间的互动。
阅读更多
一位工程师在优化 Recall.ai 的 Output Media 功能时,遇到了一个棘手的难题:Chromium 进程在沙盒环境中随机终止。经过一番深入的调试,他发现问题根源在于 Linux 内核的 prctl(PR_SET_PDEATHSIG, SIGKILL) 函数,该函数追踪的是父线程而不是父进程。Tokio 的线程管理机制与之交互时,可能会导致父线程被回收,从而触发 SIGKILL 信号,终止子进程。最终,移除 Bubblewrap 的 --die-with-parent 标志解决了这个问题,将延迟降低了 83%。
阅读更多