外观
如何理解Fastify 与 Node.js 的吞吐瓶颈?
标准回答
Fastify 适合接口服务,但单个 Node.js 实例中的长时间 JavaScript 计算仍会阻塞事件循环。搜索结果大对象的加工、同步加密、复杂正则和巨量 JSON 处理,都可能让其他请求等待,即使数据库本身很快。
Schema 可以约束输入和输出,减少错误与序列化歧义。业务鉴权、数据库查询和配额检查仍要在合适阶段执行,不能把所有异步业务校验塞进基础结构校验。Schema 本身应来自可信代码,不能接受任意用户提交并编译执行。
定位时把总时延拆成排队、鉴权、缓存、检索、整理和发送,观察事件循环延迟、连接池和返回字节。重 CPU 工作可移到独立 Worker 或服务,多进程扩展要同时考虑下游连接数,避免应用扩容压垮搜索集群。
追问与回答
加 async 为什么没变快
async 改变 Promise 组织方式,不自动把同步计算移出事件循环。需要识别真正的 I/O 等待与 CPU 执行。
连接池越大吞吐越高吗
过大的池会把更多请求压到下游,增加争用与尾延迟;按服务预算设定并发和有界等待。
易混淆点
- 使用异步框架就认为不存在阻塞。
参考资料
内容来源
- Android 与 AI 工程 Wiki · 原条目
q137