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

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

  •  
  •   cjd6568358 · 6 小时 39 分钟前 · 903 次点击
    最近一段时间,跑在 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 镜像
    8 条回复    2024-09-29 13:39:21 +08:00
    Nitroethane
        1
    Nitroethane  
       6 小时 35 分钟前 via iPhone
    虚拟内存怕啥啊,申请多少都无所谓
    codehz
        2
    codehz  
       6 小时 31 分钟前
    VIRT 有啥可看的,你跑一个 haskell 的程序还能吃你 1TB 呢
    cjd6568358
        3
    cjd6568358  
    OP
       6 小时 24 分钟前
    @Nitroethane 问题以前不这样啊,而且跑定时脚本最近老是遇到系统资源不足的报错
    cjd6568358
        4
    cjd6568358  
    OP
       6 小时 23 分钟前
    @codehz 应该是 vsz
    arloor
        5
    arloor  
       5 小时 13 分钟前 via Android
    看 res ,不看 virt
    FishBear
        6
    FishBear  
       5 小时 5 分钟前
    虚拟内存不用看
    cjd6568358
        7
    cjd6568358  
    OP
       3 小时 8 分钟前
    @arloor 我看的是 vsz
    sagaxu
        8
    sagaxu  
       1 小时 51 分钟前
    @cjd6568358 以前不这样?那就确保操作系统,node 版本,各种库的版本都跟以前一样再做比较,用排除法找出原因。也许是某个版本更新之后引入了新的内存管理方式,Go 当初也有过类似的情况。

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

    其实现在看 RES/RSS 也不准确了,误差可以很大,要结合 PSS 一起看才准。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4984 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:30 · PVG 15:30 · LAX 00:30 · JFK 03:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.