V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
censujiang
V2EX  ›  Node.js

除了优化代码/重启外,你们是如何应对 Bun 内存泄漏问题的

  •  2
     
  •   censujiang · 36 天前 · 3946 次点击
    这是一个创建于 36 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这玩意给我漏麻了,Nodejs 跑几个小时不泄漏东西,这玩意直接给我漏 1 个 G 出来,谷歌搜也只搜到个中文推文也在吐槽 Bun 疯狂漏内存这事,请问一下你们有遇到过或者有比较好的解决点子吗?目前已用--smol
    41 条回复    2024-09-12 16:35:25 +08:00
    yinmin
        1
    yinmin  
       36 天前 via iPhone
    目前用 pm2 能缓解这个问题

    pm2 start app.js -i max --max-restarts 1000
    ChrisFreeMan
        2
    ChrisFreeMan  
       36 天前
    回 Node 吧,Node 最近加入了 Typescript 的直接运行支持,除了一些 Typescript 特殊语法 enum 和 namespace 等..

    https://github.com/nodejs/node/releases/tag/v22.6.0
    ChrisFreeMan
        3
    ChrisFreeMan  
       36 天前
    手快了,以上话题无关,请忽略
    cpf
        4
    cpf  
       36 天前 via iPhone
    哈哈哈哈,1.0 出来好久了,居然有内存泄露,那还咋上生产呀
    kneo
        5
    kneo  
       36 天前 via Android
    不明白都这样了为什么还要用 bun ?尝试不就是为了了解然后做选择吗?
    FishBear
        6
    FishBear  
       36 天前
    当然是用 nodejs 了,bun 这个包子还不稳定
    Terry05
        7
    Terry05  
       36 天前
    真是都不敢用
    Mumulhl
        8
    Mumulhl  
       36 天前   ❤️ 1
    也可以尝试下 Deno
    serco
        9
    serco  
       36 天前   ❤️ 1
    手头有一个项目 Bun+Nuxt ,crontab 定期重启先应付着
    lizhenda
        10
    lizhenda  
       36 天前
    这和定期重启 Java 虚拟机有何区别,为啥一定要用它呢
    ck65
        11
    ck65  
       36 天前 via iPhone
    看来是因为没触发泄漏,就这么一直用着,177MB 内存的小服务 uptime 335 天。反正感觉比 node 爽就是一切。
    mark2025
        12
    mark2025  
       36 天前   ❤️ 2
    阿里内部 nodejs 项目组对比测试过 nodejs vs bun , 综合看后者性能并不明显。目前不推荐生产上 bun 。
    ysc3839
        13
    ysc3839  
       36 天前 via Android
    Bun 使用的是苹果的 JavaScriptCore ,而苹果官方只在 macOS 和 iOS 上有相关产品使用 JavaScriptCore 吧?那稳定性和性能比得过在谷歌开发的、多平台都有产品使用的 V8 吗?

    个人觉得 Bun 和之前微软整的把 Node.js 核心换成 ChakraCore 的项目都不靠谱。
    nino
        14
    nino  
       36 天前
    不如先把 Bun 用来跑单元测试和开发环境,最直接优化你的开发体验,生产环境其实没必要的
    june4
        15
    june4  
       36 天前
    定时查询当前进程内存占用,高过一个值就自杀? 以前我就是这么干的
    node 还有查询当前内存量的 api,不知道 bun 有没有
    DesnLee
        16
    DesnLee  
       36 天前
    有个小小的程序在跑,用的 pm2 ,半个月漏 60M
    yassinezhang
        17
    yassinezhang  
       36 天前
    为啥我写的程序没看出啥问题,
    jqtmviyu
        18
    jqtmviyu  
       36 天前
    我宁愿把时间花在代码转换上, 也不想踩未知的坑.
    censujiang
        19
    censujiang  
    OP
       36 天前
    @lizhenda 图他快,结果直接把我整懵逼了
    censujiang
        20
    censujiang  
    OP
       36 天前
    @june4 bun 只能看系统那边监测
    censujiang
        21
    censujiang  
    OP
       36 天前
    @serco 我也是 Nuxt 项目,请问一下您大概多久重启一次?大概您这边平均能漏多少
    mark2025
        22
    mark2025  
       36 天前   ❤️ 1
    @nino 问题是测试环境和生产环境的运行时不同,出了故障怎么排除是运行时的问题还是代码问题呢,问题反而更复杂了
    kneo
        23
    kneo  
       36 天前 via Android
    @censujiang 能不能分享一下你实测的 bun 哪比 node 快?快多少?
    liuhai233
        24
    liuhai233  
       36 天前
    换 node
    skuuhui
        25
    skuuhui  
       35 天前
    哪里漏的? gc 有问题吗?
    NoobPhper
        26
    NoobPhper  
       35 天前
    都 rust 写的了 怎么还能存泄漏(
    hatsuyuki
        27
    hatsuyuki  
       35 天前
    @NoobPhper #26 因为是 zig 写的(
    supuwoerc
        28
    supuwoerc  
       35 天前
    我也遇到了,只能说比女主播还能漏,现在也是定时重启。
    serco
        29
    serco  
       35 天前
    @censujiang 我这边是个访问量很小的项目,所以定时每天重启就够了。感觉泄露跟访问量成正比
    asdjgfr
        30
    asdjgfr  
       35 天前
    自己的项目测了一下,node 编译需要 144s ,bun 143s ,访问速度没提升感觉,ssr 速度没提升感觉,果断还是使用 node
    censujiang
        31
    censujiang  
    OP
       35 天前
    @kneo #23 没有详细实测过,但是 Nuxt 的话 Nodejs 访问渲染好并且缓存的页面是一百毫秒,Bun 只需要二三十
    censujiang
        32
    censujiang  
    OP
       35 天前
    @skuuhui 是的
    wspsxing
        33
    wspsxing  
       35 天前
    你这不是问题更多了吗,无脑解决就是杀进程,或者换 deno
    studymachine0
        34
    studymachine0  
       35 天前
    @NoobPhper bun 是 zig 写的吧,deno 才是 rust 写的
    panxiuqing
        35
    panxiuqing  
       35 天前
    每天看下有没有发布更新😊
    securityCoding
        36
    securityCoding  
       35 天前
    @lizhenda java 没这么弱智吧
    yyj08070631
        37
    yyj08070631  
       35 天前
    之前我做过一个 bun 的调研,它的快目前主要来源于功能简陋 (build) + 高性能模块 (uWebSocket),而不是 zig 或者 jsc

    我目前最常用 bun 的场景还是本地跑个小爬虫之类的,一是可以直接跑 ts ,二是 bun 的 file api 设计的还挺简洁方便,三是 node/npm 兼容做的比 deno 好

    不过看到楼上说 node22 已经支持 native ts 了,感觉可以直接切到 node 去了
    yyj08070631
        38
    yyj08070631  
       35 天前   ❤️ 1
    @ysc3839 这是一个搞笑故事,兄弟可以去跑一个 hello world 试试,bun 确实比 node 和 deno 都要快,但是后来我找到一个论述,说是 jsc 的运行时优化比较少,所以它启动快

    想想也不无道理 :)

    https://www.builder.io/blog/bun-vs-node-js
    xieren58
        39
    xieren58  
       35 天前
    一般出现这种情况, 更新到最新版本就好了...
    censujiang
        40
    censujiang  
    OP
       34 天前
    @xieren58 太逆天了,我就是这么做的。。。然后发现最新的已经修了好几个内存泄露的漏洞
    stabc
        41
    stabc  
       4 天前
    也有可能你的代码有问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1026 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 18:50 · PVG 02:50 · LAX 11:50 · JFK 14:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.