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

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

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

    pm2 start app.js -i max --max-restarts 1000
    ChrisFreeMan
        2
    ChrisFreeMan  
       2024-08-11 10:47:28 +08:00
    回 Node 吧,Node 最近加入了 Typescript 的直接运行支持,除了一些 Typescript 特殊语法 enum 和 namespace 等..

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

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

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

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

    想想也不无道理 :)

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