Sha*_*ark 7 performance node.js express newrelic body-parser
前几天我们在Rest API中添加了NewRelic,APM,它是用NodeJS编写的,使用EXPRESS JS作为开发框架。
由于 JSON 解析器中间件,现在我们看到很多用户体验到响应时间很短的情况。
如您所见,大部分时间都被中间件 JSON 解析器消耗。
我们在想问题可能来自大型 JSON 有效负载,有时是从 API 发出的。但是对于这个响应,如上所示,API 返回了 contentLength=598 的数据,这不应该是太大的 JSON。
我们还使用了在向下钻取的请求执行屏幕截图中可见的压缩中间件。这应该减少来回发送给客户端的 IO 的大小。
此时我们对初始化时传递给中间件的参数限制有疑问。{limit:50kb} 但是在本地测试时它没有任何区别。
我们在考虑用 protobuf 切换,还考虑了异步解析 JSON 负载的方式。因为中间件使用的 JSON.parse 是同步进程,停止非阻塞 IO。
但是在开始这些更改和实验之前,请如果有人遇到同样的问题,请提出任何可能的解决方案。
基准测试:
对于本地/阶段环境的基准测试,我们使用 JMeter 并生成负载来检查何时可能发生此类超时,但在使用 JMeter 进行测试时我们无法捕捉到这一点。
谢谢你。
小智 0
Express 附带了一个嵌入式 bodyparser,如果你愿意的话你可以尝试一下。由于它是集成的,因此它应该表现得更好。
const express = require('express');
const app = express();
app.use(express.urlencoded()); // support for GET
// No limited usage,
app.use(express.json()); // support for POST
// If you want add request limit,
app.use(express.json({ limit: "1mb" }));
Run Code Online (Sandbox Code Playgroud)