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

有没有熟悉 node 的朋友, Linux 上编译 node16 快 12 小时了,咋这么慢。。。

  •  
  •   LeeReamond · 2021-12-02 00:54:01 +08:00 · 10385 次点击
    这是一个创建于 1121 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,从开始的时候感觉正常到现在怀疑自己是否哪里搞错了,一直编译,cpu 一直占用 100%(单核虚拟机)

    具体安装方法就是从官网上下个源码,然后解压,configure ,make && make install.

    编译过程中除了 CPU 占用高,内存占用也挺高的,不过 1G+swap 应该还扛得住,问题就是编译咋这么慢。而且编译之前也没要求装啥依赖之类的,像 python 编译起码还要装个 build-essential ,我是不是哪里做错了?

    32 条回复    2021-12-03 14:37:06 +08:00
    xiadong1994
        1
    xiadong1994  
       2021-12-02 03:23:03 +08:00
    单核 1G ,emmmm……不是很了解 node 的编译,但是这个配置是不是有点太低了。还有 build 一般还挺吃磁盘 IO 的。
    felixcode
        2
    felixcode  
       2021-12-02 03:46:02 +08:00 via Android
    单核肯定慢,不过影响更大的是内存不够用了 swap ,然后磁盘 io 性能还特别低。
    LeeReamond
        3
    LeeReamond  
    OP
       2021-12-02 04:27:59 +08:00
    @felixcode
    @xiadong1994 我观察任务管理器了,没有走 swp 卡 io 的情况,而且 ssd 读写速度都是 500MB/S 的,卡了也不会像机械硬盘那样。问题在于它只是个 node ,我这又不是在编译宇宙第一 IDE....安装包大小才几十 MB ,编译跳一下几十 KB 总有吧。。
    xiadong1994
        4
    xiadong1994  
       2021-12-02 04:42:51 +08:00
    应该就是单纯的慢,我在工作站上 make 了一下大概 5min 跑完
    thedrwu
        5
    thedrwu  
       2021-12-02 05:27:54 +08:00 via Android   ❤️ 2
    估计 1G 内存连 linker 都跑不起来
    unnamedhao
        6
    unnamedhao  
       2021-12-02 07:47:50 +08:00 via iPhone
    比慢?试试装 xcode ,单纯的安装
    encro
        7
    encro  
       2021-12-02 09:16:39 +08:00
    1G 铁定慢,有什么想不开自己编译 node 呢。
    arischow
        8
    arischow  
       2021-12-02 09:33:35 +08:00 via iPhone
    1G 连 npm build 公司项目都可能 oom
    max1233
        9
    max1233  
       2021-12-02 09:51:22 +08:00
    12 个小时太夸张,1c2g 的小鸡都比这个快,编译 node 大概用了 15 分钟。话说为啥要编译呢 nvm 不香吗
    hronro
        10
    hronro  
       2021-12-02 10:20:50 +08:00 via iPhone
    会不会是连 v8 一起在编译?如果是的话那很正常
    libook
        11
    libook  
       2021-12-02 10:24:35 +08:00   ❤️ 2
    都是单核,也是有主频高低的,另外如果是虚拟机、容器之类的还会有其他开销。

    CPU 不够会慢,内存不够会崩,用 Swap 也会慢(即便用最快的 NVMe SSD 也远不及物理内存速度)。

    拿 Chromium 的编译来作参考,我找到了去年的一篇文章: https://textslashplain.com/2020/02/02/my-new-chromium-build-pc/
    16 核心 32 线程、64GB 内存、Intel Optane 905P NVMe SSD ,编译 Chromium 花了 53 分钟。
    skinny
        12
    skinny  
       2021-12-02 11:30:50 +08:00
    当年很多人说 Qt 编译非常慢,随便六七个小时,我当时在我的笔记本下载编译也顶多一个小时,你这个慢得太夸张了
    2i2Re2PLMaDnghL
        13
    2i2Re2PLMaDnghL  
       2021-12-02 12:50:34 +08:00
    make 有命令输出的
    如果一直有输出,那应该不是大问题,就是慢罢了
    如果没有,看下最后一条是啥卡住了,然后去提 Issue 问
    geniux
        14
    geniux  
       2021-12-02 12:53:33 +08:00
    用二进制,不用编译。
    12101111
        15
    12101111  
       2021-12-02 12:54:31 +08:00
    8 核+16G 内存+源码在 tmpfs 里, 用 Clang+ld.lld 开 LTO ,半个多小时
    你这个肯定是内存太小,swap 太严重了
    bootvue
        16
    bootvue  
       2021-12-02 13:01:33 +08:00
    make -j 核心
    rm0gang0rf
        17
    rm0gang0rf  
       2021-12-02 15:20:33 +08:00
    啥玩意也没这么慢。。1g 的没遇到过
    vanton
        18
    vanton  
       2021-12-02 15:24:49 +08:00
    内存太小,编译需要大量内存,你这 1G 就是瓶颈。
    内存对于编译速度的影响是指数级别的,你内存加大 1 倍速度提升可能有 10 倍。
    shiny
        19
    shiny  
       2021-12-02 15:25:56 +08:00
    那有点离谱,以前在树莓派上编译都没花这么久
    tulongtou
        20
    tulongtou  
       2021-12-02 15:36:55 +08:00
    你也没有改源码,为什么要自己编译?直接下载二进制的运行不好么
    ppphp
        21
    ppphp  
       2021-12-02 15:39:42 +08:00
    要么是内存就慢
    JDog
        22
    JDog  
       2021-12-02 16:28:33 +08:00
    从标题来看,你不熟悉 node ,那么我推断你没有改 node 源码,请问为什么不直接用二进制包,而是自己编译呢?
    lianyue
        23
    lianyue  
       2021-12-02 16:34:01 +08:00
    一旦 用上 swap 编译 卡死你 go build 内存够用 10 秒 内存小 半小时我都没出结果
    ruanimal
        24
    ruanimal  
       2021-12-02 16:42:27 +08:00
    跑个题,为啥要编译安装 node
    seers
        25
    seers  
       2021-12-02 16:43:27 +08:00 via Android
    如果内存不够大就会浪费时间一直在 paging
    codingBug
        26
    codingBug  
       2021-12-02 20:35:38 +08:00 via Android
    是不是网络问题
    pengtdyd
        27
    pengtdyd  
       2021-12-02 20:52:31 +08:00
    没有金刚钻不揽瓷器活
    ericgui
        28
    ericgui  
       2021-12-03 05:01:02 +08:00
    请教楼主,为什么要编译 node ?要定制 runtime ?
    LeeReamond
        29
    LeeReamond  
    OP
       2021-12-03 11:21:09 +08:00
    @JDog
    @ericgui
    因为我打开 google 搜索“linux nodejs 安装”,里面刚好点到弹出来第一个页面写的第一个装法是编译。而我就像楼上的,凭经验以为 15 分钟就能搞定了,也无所谓直接下不下二进制。结果睡一觉起来还在跑
    ericgui
        30
    ericgui  
       2021-12-03 12:25:06 +08:00
    @LeeReamond 那你说你何苦
    hongch
        31
    hongch  
       2021-12-03 12:51:47 +08:00
    软件的官网不都有教程吗,而且还是最新的,源码,二进制,安装包 各个平台的都有
    leopod1995
        32
    leopod1995  
       2021-12-03 14:37:06 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1075 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:57 · PVG 06:57 · LAX 14:57 · JFK 17:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.