node.js - 结果性能节点使用 mongo nestJs 或 fastify
问题描述
我做了两个项目,一个使用nestJS/mongoDB,另一个使用Fastify/MongoDB,以比较两个框架的性能。我做了一个简单的获取资源 API 来查询大约 400Kb 的 mongo 文档。两个项目路由都以超过 300 毫秒的时间响应 JSON 文档。有人可以向我解释额外的 280 毫秒是从哪里来的,因为 mongo 的响应时间不超过 20 毫秒。
这与他们同时响应的框架无关。是不是API做的压缩,是节点服务器的时间
当我分析代码时,mongo 响应不超过 20 毫秒,在这两种情况下,获取处理程序立即返回的文档。没有样板代码或额外的日志记录,只有普通的 HttpServer。
在 Fastify 我正在这样做
{
method: 'GET',
url: '/api/trees/:id',
handler: async (req, reply) => {
try {
const id = req.params.id
const tree = await TaxonomiesTrees.findById(id)
return tree.data
} catch (err) {
throw boom.boomify(err)
}
}
}
在像这样的 NestJS
@Get(':id')
async getTree(@Param('id') code: string) {
const result = await this.treesCollection.findOne({id});
return result.data
}
解决方案
我找到了对我的问题的回答,以防万一,这似乎有点合乎逻辑。正如我所怀疑的,这与网络服务器将控制器结果解释为字节所花费的时间有关。TTBF被称为TTBF,衡量从 http 请求到发送到客户端的第一个字节所用的时间。
推荐阅读
- apache-spark - PySpark SQL TRY_CAST?
- javascript - JavaScript 在 IE11 上不起作用/触发 - 我在脚本中使用 onclick=function() - SCRIPT5 控制台错误
- c - 将结构传递给函数以分配值
- python-3.x - 安装 kiteconnect 3.7.4 时无法卸载“chardet”
- batch-file - 如何使用 FFprobe 从 Webm 中提取持续时间
- javascript - Console.log 将数组转换为逗号分隔值
- javascript - ReactJS 和 javascript 未显示在 Rails 5 应用程序上
- ios - 如何绘制与 BarChartView 的条平行的文本?
- php - 错误“所有产品的价格必须一致”etsy
- parsing - 无法正确解析 tcpdump 输出