ExpressJS中间件bodyParser性能非常差

时间:2019-01-18 23:00:05

标签: node.js performance express newrelic body-parser

几天前,我们在Rest API中添加了APM NewRelic,它是用NodeJS编写的,并使用EXPRESS JS作为开发框架。

现在,由于JSON解析器中间件,我们看到许多用户的响应时间很短。

以下是NewRelic中报告的那些请求之一: enter image description here

深入报表: enter image description here

如您所见,大部分时间都由中间件JSON解析器消耗。

我们认为问题可能来自大型JSON负载,有时是从API发送出去的。但是对于上述响应,API返回了具有contentLength = 598的数据,该数据不应为太大的JSON。

enter image description here

我们还使用压缩中间件,如在深入的请求执行屏幕截图中可见。哪个应该减少来回发送给客户端的IO大小。

此刻,我们对初始化时传递给中间件的参数限制存有疑问。 {limit:50kb}但在本地测试时没有任何区别。

enter image description here

我们正在考虑使用protobuf进行切换,也正在考虑异步解析JSON有效负载的方式。因为中间件使用的JSON.parse是同步过程,并且会停止非阻塞IO。

但是在盯着那些变更和实验之前,请先询问是否有人遇到相同的问题以提出任何可能的解决方案。

基准化:

对于在本地/阶段环境中进行基准测试,我们使用JMeter并生成负载来检查何时可能发生此类超时,但是在使用JMeter进行测试时,我们无法捕捉到这一点。

谢谢。

0 个答案:

没有答案