96SEO 2026-08-07 14:33 7
如果你写过 Postgres 的 LISTEN/NOTIFY,大概率听过一句忠告:这东西不能 生产环境慎用。
这个标签不是凭空来的。你看到过流行的 benchmark 显示它撑死了每秒 .9K 写入——对大部分后端场景确实不够看。

但 DBOS 团队用一套调整把这个数字推到了 60K 写入/秒延迟 -100ms。更值钱的是 Hacker News 上 多分的讨论,从多个角度挖出了幕后真相。
问题来了:60K/s 代表着 LISTEN/NOTIFY 真的「 了」吗?还是说藏着什么条件,
-- 订阅端
LISTEN channel_name;-- 发布端
NOTIFY channel_name,'payload';
NOTIFY 不是在调用时立即发送,而是在 事务提交之后 才发出。事务回滚→通知不发,保证了事务一致性。典型用途的观点是,
| 场景 | 做法 |
|---|---|
| 缓存失效 | 数据变更后 NOTIFY → 订阅方清除本地缓存 |
| 实时通知新消息 | 写入后 NOTIFY → 在线使用者收到推送 |
| 流式处理新数据到达后 NOTIFY → 使用者批量拉取实时协作消息写入后 NOTIFY → 其他参与者收到更新 | |
| 但问题就出在这个事务提交通知机制上。 | |
-- naive 实现:每行 insert 都 NOTIFY
CREATE FUNCTION notify_stream_chunk
RETURNS trigger AS $$
BEGIN
PERFORM pg_notify;RETURN NEW,END;$$ LANGUAGE plpgsql;
DBOS 最初就是这样做的,接下来发现无论你怎么调参数。吞吐始终卡在 .9K/s但 CPU、内存、IOPS 全部没有负载。
根因这方面,NOTIFY 的事务提交需要拿全局排它锁。持有到 fsync 完成才释放。
为什么要有这个锁? 因为 PG 需要保证通知按事务提交顺序发送。但「提交顺序」在提交完成后才能确定。话说回来,PG 的解法是用锁串行化所有含 NOTIFY 的提交。其实,结果就是 group commit 不工作了每个 fsync 都变成了一场串行等待。:Postgres 新 patch 不解决这个问题——它调整的是多 channel 情况下 listener 唤醒效率,全局锁依然存在。
{ "naive throughput": ".9K writes/second","bottleneck": "LWLock:NotifyQueueLock ","consequence": "group commit disabled,each commit serializes fsync"。"PG patch": "only improves multi-channel scenarios,global lock remains"}
再看主要洞察点,NOTIFY 是信号而不是实际数据。在缓存失效场景中客户端会根据通知去查询最新数据 - 虽然可能会漏掉一个通知但在下一次轮询时仍能获取更新。
可以采取以下改进:
第一步先的观点是。内存缓冲区 不要直接NOTIFY而是将通知暂存在内存队列中
说到接下来,批量刷新 由后台线程每50ms将缓冲区内容一次性flush出来。怎么说呢,这样全局锁只需要在刷新期间获取一次。
:降级轮询 除了监听,读者还需要每秒进行一次轮询以防止由于进程崩溃导致通知丢失。
python
notify_buffer =
def flushnotifybuffer: if not notifybuffer: return ids = notifybuffer notify_buffer.clear db.execute"。)
| 方案 | 吞吐量 | 延迟 | Naive trigger -> NOTIFY | ~900 writes/sec | ~1s+ latency >>>>>>>>>>>>>> | Buffer + batch + polling>>>>>>>>>>>>>>>>> | =60,00>writes/sec >>>>>>>>>>>>> | =-1-1-1-1=-1= |
|---|
还有其他关键考虑因素:
HN上有人表示:「我曾经在生产环境使用过该功能高负载情况下确实发生过消息丢失。」另一人补充道:「看到这些调整代码第一反应就是这怎么调试?,"
。作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback