每日灵魂一问-Node性能如何进行监控以及优化?

Posted NANA

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日灵魂一问-Node性能如何进行监控以及优化?相关的知识,希望对你有一定的参考价值。

一. Node性能指标:

1. CPU(同步会占用,异步不会)

CPU负载
CPU使用率

2. 内存

在Node中,一个进程的最大内存容量为1.5GB。因此我们需要减少内存泄露

// rss 表示node进程占用的内存总量
// heapTotal:表示堆内存的总量。
// eapUsed:实际堆内存的使用量。
// external :外部程序的内存使用量,包含Node核心的C++程序的内存使用量



// /app/lib/memory.js
const os = require(\'os\');
// 获取当前Node内存堆栈情况
const { rss, heapUsed, heapTotal } = process.memoryUsage();
// 获取系统空闲内存
const sysFree = os.freemem();
// 获取系统总内存
const sysTotal = os.totalmem();

module.exports = {
  memory: () => {
    return {
      sys: 1 - sysFree / sysTotal,  // 系统内存占用率
      heap: heapUsed / headTotal,   // Node堆内存占用率
      node: rss / sysTotal,         // Node占用系统内存的比例
    }
  }
}

3.磁盘 I/O

内存 IO比磁盘IO 快非常多,所以使用内存缓存数据是有效的优化方法。常用的工具如 redis、memcached等

4. 网络

二.如何监控

Easy-Monitor 2.0

const easyMonitor = require(\'easy-monitor\');
easyMonitor(\'你的项目名称\');

打开你的浏览器,访问 http://localhost:12333 ,即可看到进程界面

三、如何优化

1.fast-json-stringify替代 json-stringify

2.bluebird替换Promise
global.Promise = require(\'bluebird\')

3.文件操作 正确的使用Stream

以上是关于每日灵魂一问-Node性能如何进行监控以及优化?的主要内容,如果未能解决你的问题,请参考以下文章

每日灵魂一问-说说你对Node.js 的理解?优缺点?应用场景?

每日灵魂一问- Node 中 Buffer 的理解

每日灵魂一问nodejs-eventEmitte是啥?手动实现

每日灵魂一问-浅谈node.js中的process

每日灵魂一问-对Node 中的 Stream 的理解?应用场景?

node.js每日灵魂一问- node.js的fs模块&常用方法