美文网首页
node性能优化

node性能优化

作者: 姜治宇 | 来源:发表于2022-04-15 16:34 被阅读0次

1、代码优化

如果代码中使用了大对象作为缓存,会导致老生代的垃圾回收变慢。

const cache = {}
async function getUserInfo(id) {
    if (!cache[id]) {
        cache[id] = await getUserInfoFromDatabase(id)
    }
    return cache[id]
}

我们通过缓存用户信息,确实可以达到查询快的效果,但这个cache对象会变得无比巨大,如果不做限制就会有内存泄漏风险。
我们可以使用LRU cache来限制缓存的大小,或者干脆使用redis这样的外部缓存。

const LRU = require('lru-cache');
let cache = new LRU({
        max: 50
    });
async function getUserInfo(id) {
    if (cache.has[id]) {
        return cache.get(id);
    }
    
    let userinfo = await getUserInfoFromDatabase(id);
    cache.set(id,userinfo);
    return userinfo;
}

2、内存分配优化

如果新生代空间不足,就会导致频繁GC,从而降低性能。
Node.js 默认给新生代分配的内存是 64MB,但因为新生代 GC实际能使用的内存只有一半即32MB,当业务代码频繁地产生大量的小对象时,这个空间很容易就会被占满,从而触发 GC。虽然新生代的 GC 比老生代要快得多,但频繁的 GC 依然会很大地影响性能。
我们可以修改新生代的内存上限来减少 GC 的次数:

node --max-semi-space-size=128 app.js

当然,新生代也不是越大越好,如果gc次数减少,相应的每次gc时间就会延长,根据经验,一般分配64M~128M就够用了。

3、版本优化

升级新版本的node.js也会相应提升性能。

相关文章

  • ms凉经

    node node框架性能优化的方法论,性能优化的火焰图,分析方式。手撕无限加载以及优化。两个链表的交点。防抖手撕...

  • node性能优化

    1、代码优化 如果代码中使用了大对象作为缓存,会导致老生代的垃圾回收变慢。 我们通过缓存用户信息,确实可以达到查询...

  • 六年打怪升级,一路披荆斩棘,只为没有难用的Node.js

    阿里云于近日推出了Node.js性能平台,旨在为Node.js应用提供集性能监控、性能优化和故障排查为一体的Saa...

  • Android性能优化 - 消除卡顿

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化 - 内存优化 性能分析工具 - Tra...

  • Android性能优化 - 内存优化

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化- 内存优化 性能分析工具 - Trac...

  • 前端性能优化(中)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(上)...

  • 前端性能优化(下)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(中)...

  • Awesome Extra

    性能优化 性能优化模式 常见性能优化策略的总结 Spark 性能优化指南——基础篇 Spark 性能优化指南——高...

  • 常用的后端性能优化六种方式:缓存化+服务化+异步化等

    性能优化专题 前端性能优化 数据库性能优化 jvm和多线程优化 架构层面优化 缓存性能优化 常用的后端性能优化六大...

  • webpack 性能优化

    webpack性能优化 开发环境性能优化 生产环境性能优化 开发环境性能优化 优化打包构建速度 优化调试功能 生产...

网友评论

      本文标题:node性能优化

      本文链接:https://www.haomeiwen.com/subject/yvkqertx.html