• home > webfront > ECMAS > nodejs >

    Node监控性能优化结果学习笔记

    Author:zhoulujun Date:

    Node js自带了一些性能监测方法,process memoryUsage、os freemem()、os totalmem(),profile工具能直接生成报告,--inspect, 能直接查看运行概况。Easy-Monitor 与 Benchmark库,也是不错的!

    关于Node的性能优化的方式有:

    1. 使用最新版本Node.js

    2. 正确使用流 Stream,比如对于一个大文件可以通过流的形式发送

    3. 代码层面优化,比如sql查询合并,比如使用 fast-json-stringify取代原生JSON,使用bluebird取代原生 async/await + Promise 

    4. 内存管理优化,不然使用池,其将频用、可复用对象存储起来,减少创建和销毁操作

    5. 增大新生代空间,新生代空间不足,导致频繁 G(node --max-semi-space-size=128 app.js),并不是越大越好,具体数值需要对业务进行压测 profile 才能确定分配多少新生代内存最好。

    6. 队列消费优化:当生产大于消费时就会产生堆积,那么就会内存泄漏。比如说,node发生错误,做了容错处理输出了日志,正常情况日这样。但是遇到大批量的访问,同时都触发了这个错误,那么日志在一条一条输出的时候不够及时,后方就产生了堆积。这样内存使用越来越大,那么就造成了内存泄漏。这种情况怎么处理?log4js 的包是一种解决方案,但是最佳方案还是PM2,PM2可以console.log的时候把log的内容打到文件当中,速度非常的快。这样就不会产生消费不及时。


    如何监控NodeJS性能呢?

    Node.js自带了一些性能监测工具,包括console.time、console.timeEnd、process.memoryUsage、os.freemem()、os.totalmem()等等。

    NodeJs自带了profile工具,就是在启动的时候加上**--prof**即可,可以使用 如--prof和--trace标志,生成性能分析报告,帮助我们找到代码中的性能瓶颈。

    使用新的参数--inspect, -brk代表启动调试的同时暂停程序运行,只有我们进入的时候才往下走。运行之后我们看到他就告诉我们监听了一个websocket,我们就可以通过这个ws进行调试了。

    性能健康工具

    • Easy-Monitor 2.0,其是轻量级的 Node.js 项目内核性能监控 + 分析工具,在默认模式下,只需要在项目入口文件 require 一次,无需改动任何业务代码即可开启内核级别的性能监控分析

    • Benchmark.js是一个流行的性能测试库,它可以帮助我们对JavaScript代码进行准确的性能测量。通过编写基准测试,我们可以比较不同代码实现的性能差异,并优化性能。

    • node-clinic,node-clinic 是 NearForm 开源的一款 Node.js 性能诊断工具,可以非常快速地定位性能问题。压测完毕后,我们 ctrl + c 关闭 clinic 开启的进程,就会自动生成报告。



    参考文章:

    https://vue3js.cn/interview/NodeJS/performance.htm

    https://www.cnblogs.com/qcloud1001/p/10084223.html



    转载本站文章《Node监控性能优化结果学习笔记》,
    请注明出处:https://www.zhoulujun.cn/html/webfront/ECMAScript/JS-Server/9205.html