Skip to content
阅读进度

如何理解Fastify 与 Node.js 的吞吐瓶颈? ​

返回 数据与搜索 目录

标准回答 ​

Fastify 适合接口服务,但单个 Node.js 实例中的长时间 JavaScript 计算仍会阻塞事件循环。搜索结果大对象的加工、同步加密、复杂正则和巨量 JSON 处理,都可能让其他请求等待,即使数据库本身很快。

Schema 可以约束输入和输出,减少错误与序列化歧义。业务鉴权、数据库查询和配额检查仍要在合适阶段执行,不能把所有异步业务校验塞进基础结构校验。Schema 本身应来自可信代码,不能接受任意用户提交并编译执行。

定位时把总时延拆成排队、鉴权、缓存、检索、整理和发送,观察事件循环延迟、连接池和返回字节。重 CPU 工作可移到独立 Worker 或服务,多进程扩展要同时考虑下游连接数,避免应用扩容压垮搜索集群。

追问与回答 ​

加 async 为什么没变快 ​

async 改变 Promise 组织方式,不自动把同步计算移出事件循环。需要识别真正的 I/O 等待与 CPU 执行。

连接池越大吞吐越高吗 ​

过大的池会把更多请求压到下游,增加争用与尾延迟;按服务预算设定并发和有界等待。

易混淆点 ​

  • 使用异步框架就认为不存在阻塞。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。