当前位置: 首页 > news >正文

性能优化之node中间件耗时

背景

中间件在node框架中是很基本的套件,使用不当很容易对页面性能造成影响。除了node服务端外,前端做的SSR项目也要特别重视这块

哪些场景会造成中间件耗时特别严重?

罪魁祸首是:await阻塞

举个例子:

1.如何得到 响应的耗时?把下面这个中间件放在所有中间件的最前面app.use(async (ctx, next) => {const t = +new Date();await next();console.log('响应的耗时', +new Date() - t);}); 2.当没有await阻塞时,服务端处理的速度一般都是非常快的

3.当存在一个中间件加了await阻塞后,例如:app.use(async (ctx, next) => {await new Promise(r => {setTimeout(() => {r();}, 2000);});await next();});

所有的响应,都会被阻塞!!

除了await外,还有一个场景要特别注意

除了await外,还有一个场景要特别注意: 跨机房调用

其实,在中间件层,响应请求之前,有几个await是很正常的,因为要为响应做数据的准备。多数情况下请求下游速度都会非常快,除了一种情况,就是跨机房调用,跨机房调用往往会很慢(同机房的话 用服务发现会更快,即使不用服务发现也不慢)

我这边有一组真实数据,可以供大家参考

会await阻塞的中间件有A机房耗时p99B机房耗时p99C机房耗时p99
下游116.4ms28.5ms9.3ms
下游220.6ms498.3ms、慢的原因是跨机房调用12.9ms
下游36ms44ms5ms
  • p99指的是99分位的数据,在服务p50和p99相差不大(因为服务器网络条件稳定),不像前端的性能数据,相差比较大(因为各用户网络条件不同)

总结

对node中间件层耗时影响大的主要是2点:

1.await阻塞
2.跨机房调用

另外,需要做多机房部署的朋友要注意这块性能问题

最后

整理了75个JS高频面试题,并给出了答案和解析,基本上可以保证你能应付面试官关于JS的提问。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

http://www.lryc.cn/news/19957.html

相关文章:

  • 3-1 图文并茂说明raid0,raid1, raid10, raid01, raid5等原理
  • 西北工业大学大学物理(I)下2019-2020选填考题解析
  • 自动化测试selenium
  • 熟悉GC常用算法,熟悉常见垃圾收集器,具有实际JVM调优实战经验
  • 常量和变量——“Python”
  • 《蓝桥杯每日一题》KMP算法·AcWing 141. 周期
  • URL介绍
  • 学习 Python 之 Pygame 开发魂斗罗(一)
  • ARM uboot 源码分析8 - uboot的环境变量
  • 【蓝牙mesh】Network协议层介绍
  • 基于遗传算法的配电网故障定位(Matlab代码实现)
  • Leetcode.1247 交换字符使得字符串相同
  • python语音识别whisper
  • Prometheus -- 浅谈Exporter
  • 如何确定RocketMQ中消费者的线程大小
  • OpenAPI SDK组件之Spring Aop源码拓展
  • 蓝桥杯C/C++VIP试题每日一练之龟兔赛跑预测
  • 为你的Vue2.x老项目安装Vite发动机吧
  • ZCMU--5012: 铺设道路(差分思路)
  • 算法模板总结(自用)
  • 【架构师】零基础到精通——架构发展
  • C++(20):三路比较运算符
  • MySQL workbench 字符集、字符序的概念与联系
  • DBA之路---数据库启动与关闭过程
  • Shell文件包含
  • 计算机网络(六): HTTP,HTTPS,DNS,网页解析全过程
  • Android仿京东金融的数值滚动尺功能
  • Nginx 和 Tomcat 实现负载均衡
  • 【万能排序之qsort、b_sort 、s_sort】
  • 利用InceptionV3实现图像分类