几天前,我们在Rest API中添加了APM NewRelic,它是用NodeJS编写的,并使用EXPRESS JS作为开发框架。
现在,由于JSON解析器中间件,我们看到许多用户的响应时间很短。
如您所见,大部分时间都由中间件JSON解析器消耗。
我们认为问题可能来自大型JSON负载,有时是从API发送出去的。但是对于上述响应,API返回了具有contentLength = 598的数据,该数据不应为太大的JSON。
我们还使用压缩中间件,如在深入的请求执行屏幕截图中可见。哪个应该减少来回发送给客户端的IO大小。
此刻,我们对初始化时传递给中间件的参数限制存有疑问。 {limit:50kb}但在本地测试时没有任何区别。
我们正在考虑使用protobuf进行切换,也正在考虑异步解析JSON有效负载的方式。因为中间件使用的JSON.parse是同步过程,并且会停止非阻塞IO。
但是在盯着那些变更和实验之前,请先询问是否有人遇到相同的问题以提出任何可能的解决方案。
基准化:
对于在本地/阶段环境中进行基准测试,我们使用JMeter并生成负载来检查何时可能发生此类超时,但是在使用JMeter进行测试时,我们无法捕捉到这一点。
谢谢。