>  기사  >  웹 프론트엔드  >  Node.js의 성능 지표를 빠르게 이해하세요.

Node.js의 성능 지표를 빠르게 이해하세요.

青灯夜游
青灯夜游앞으로
2021-09-16 10:10:183320검색

이 글은 여러분에게 Node.js의 성능 지표를 안내할 것입니다. 여러분에게 도움이 되기를 바랍니다!

Node.js의 성능 지표를 빠르게 이해하세요.

프론트엔드 엔지니어에게 Node.js 애플리케이션 개발을 마스터하는 것이 선배/전문가가 되는 유일한 방법입니다. 게다가 Node.js는 서버측 언어이기 때문에 개발 작업을 완료할 수 있을 뿐만 아니라 서버 성능에도 주의를 기울여야 합니다. [추천 학습: "nodejs tutorialNode.js应用开发是我们走上资深/专家的一条必经之路。此外Node.js是一门服务端语言,我们不仅要能够完成开发任务,而且更应该要关注服务器性能。【推荐学习:《nodejs 教程》】

本文就针对Node.js的基础和性能指标做一些初步的介绍。

应用场景

在介绍NodeJS性能指标之前呢,我们先来看看它的应用场景,针对不同的应用场景,所要关注的性能指标是有所不同的。

  • BFF中间层,接口的代理,充当网关层

  • 开发构建工具gulpwebpack基于Node.js

  • 桌面应用程序Electron和Node.js结合

  • SSR服务端渲染

Node.js如果是用于前端SSR的话,那么CPU网络就会成为主要的性能瓶颈

如果使用NodeJS来进行数据持久化相关的工作,那么I/O磁盘会有很高的占用率;

而在大多数场景下,CPU内存以及网络可以说是Node的主要性能瓶颈。

优缺点

  • node.js容错,性能不是很好

  • node.js操作数据库不专业

  • node.js处理异步io强

  • io密集型,不适合cpu密集型

事件循环(libuv)

这里引用官网的一张图,展示了事件循环操作顺序的简化概览

Node.js의 성능 지표를 빠르게 이해하세요.

阶段描述

  • 定时器:本阶段执行已经被 setTimeout() 和 setInterval() 的调度回调函数。
  • 待定回调:执行延迟到下一个循环迭代的 I/O 回调。
  • idle, prepare:仅系统内部使用。
  • 轮询:检索新的 I/O 事件;执行与 I/O 相关的回调(几乎所有情况下,除了关闭的回调函数,那些由计时器和 setImmediate() 调度的之外),其余情况 node 将在适当的时候在此阻塞。
  • 检测setImmediate() 回调函数在这里执行。
  • 关闭的回调函数:一些关闭的回调函数,如:socket.on('close', ...)

V8 GC机制

我们知道Node.js® 是一个基于 Chrome V8 引擎 的 JavaScript 运行时环境,同时它又是单线程的。

其中 V8内存 分为新生代和老生代 :

新生代:采用from空间->to空间内存回收scavenge算法

老生代:采用引用标记、碎片整理的形式进行内存回收

如果GC时间过长,会导致js线程阻塞,影响服务性能。内存使用不当,则会造成内存溢出。了解了以上Node.js的基础知识之后,我们再来看性能指标

性能指标

我们从系统层面和Node.js进程层面进行一个性能指标描述

系统层面

针对服务器(物理机虚拟机Docker 等)级别,提供如下监控指标:

  • 内存使用

  • CPU 使用率

  • 系统负载,使用中进程/等待进行的进程数

  • 系统 QPS

  • 硬性性能指标

  • 磁盘使用率

  • GC"]

  • 이 글에서는 Node.js의 기본 사항과 성능 지표에 대한 사전 소개를 제공합니다.
  • 애플리케이션 시나리오

  • NodeJS의 성능 지표를 소개하기 전에 먼저 애플리케이션 시나리오를 살펴보겠습니다. 다양한 애플리케이션 시나리오마다 관심을 가져야 할 성능 지표가 다릅니다.

위 내용은 Node.js의 성능 지표를 빠르게 이해하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 掘金--比心FE에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제