除了优化代码/重启外,你们是如何应对 Bun 内存泄漏问题的 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
censujiang
V2EX    Node.js

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

  •  2
     
  •   censujiang 2024-08-11 10:24:23 +08:00 7769 次点击
    这是一个创建于 425 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这玩意给我漏麻了,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 虚拟机有何区别,为啥一定要用它呢
    mogita
        11
    mogita  
       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
    EthZhang
        17
    EthZhang  
       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 写的(
    supuworc
        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  
       2024-09-12 16:35:25 +08:00
    也有可能你的代码有问题。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     908 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 21:57 PVG 05:57 LAX 14:57 JFK 17:57
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86