cjd6568358
V2EX  ›  Node.js

请教大家, node 应用启动就占用 10.4g 的虚拟内存怎么回事?

  •  
  •   cjd6568358 · Sep 29, 2024 · 3630 views
    This topic created in 628 days ago, the information mentioned may be changed or developed.
    最近一段时间,跑在 docker 里的 node 应用突然申请的虚拟内存大了起来,只要启动就达到了 10.4g ,不知道什么原因导致的,请问如何排查?
    node 应用是用 ncc 打包出的一个单文件,使用 forever 启动。
    docker 镜像是基于 node-22.9.0:alpine 构建。
    通过 docker stats 查看容器真实内存占用是正常的,只有 92mb 。除了虚拟内存占用高,别的都正常,比如 cpu 负载。
    尝试过的措施,都无法解决
    1.重启 docker 容器
    2.重启物理主机
    3.抛弃 forever,直接使用 node 启动
    4.不使用 ncc 打包成单文件,使用源代码启动
    5.重新构建 docker 镜像
    10 replies    2024-09-29 17:24:40 +08:00
    Nitroethane
        1
    Nitroethane  
       Sep 29, 2024 via iPhone
    虚拟内存怕啥啊,申请多少都无所谓
    codehz
        2
    codehz  
       Sep 29, 2024
    VIRT 有啥可看的,你跑一个 haskell 的程序还能吃你 1TB 呢
    cjd6568358
        3
    cjd6568358  
    OP
       Sep 29, 2024
    @Nitroethane 问题以前不这样啊,而且跑定时脚本最近老是遇到系统资源不足的报错
    cjd6568358
        4
    cjd6568358  
    OP
       Sep 29, 2024
    @codehz 应该是 vsz
    arloor
        5
    arloor  
       Sep 29, 2024 via Android
    看 res ,不看 virt
    FishBear
        6
    FishBear  
       Sep 29, 2024
    虚拟内存不用看
    cjd6568358
        7
    cjd6568358  
    OP
       Sep 29, 2024
    @arloor 我看的是 vsz
    sagaxu
        8
    sagaxu  
       Sep 29, 2024
    @cjd6568358 以前不这样?那就确保操作系统,node 版本,各种库的版本都跟以前一样再做比较,用排除法找出原因。也许是某个版本更新之后引入了新的内存管理方式,Go 当初也有过类似的情况。

    这个 vsz 的大小不会引起资源不足,x86-64 架构下,每个进程可以有 256T 的虚拟内存地址空间。

    其实现在看 RES/RSS 也不准确了,误差可以很大,要结合 PSS 一起看才准。
    cjd6568358
        9
    cjd6568358  
    OP
       Sep 29, 2024
    @sagaxu 感谢。我改了一下定时脚本看看情况吧。以前没注意到 nodejs 的虚拟内存参数,最近频繁遇到告警邮件才注意到。nodejs 启动申请的虚拟内存都这么高吗?
    xuexingwei
        10
    xuexingwei  
       Sep 29, 2024
    @cjd6568358 #3 我们项目今天也是报了这个异常,停用了几个服务才能正常打包,上次出现这个问题是几个月前了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2437 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 15:38 · PVG 23:38 · LAX 08:38 · JFK 11:38
    ♥ Do have faith in what you're doing.