LeeReamond
V2EX  ›  Node.js

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

  •  
  •   LeeReamond · Dec 2, 2021 · 12146 views
    This topic created in 1802 days ago, the information mentioned may be changed or developed.

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

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

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

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

    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
    skinny
    Dec 2, 2021
    12
    当年很多人说 Qt 编译非常慢,随便六七个小时,我当时在我的笔记本下载编译也顶多一个小时,你这个慢得太夸张了
    2i2Re2PLMaDnghL
    2i2Re2PLMaDnghL
    Dec 2, 2021
    13
    make 有命令输出的
    如果一直有输出,那应该不是大问题,就是慢罢了
    如果没有,看下最后一条是啥卡住了,然后去提 Issue 问
    geniux
    geniux
    Dec 2, 2021
    14
    用二进制,不用编译。
    12101111
    12101111
    Dec 2, 2021
    15
    8 核+16G 内存+源码在 tmpfs 里, 用 Clang+ld.lld 开 LTO ,半个多小时
    你这个肯定是内存太小,swap 太严重了
    bootvue
    bootvue
    Dec 2, 2021
    16
    make -j 核心
    rm0gang0rf
    rm0gang0rf
    Dec 2, 2021
    17
    啥玩意也没这么慢。。1g 的没遇到过
    vanton
    vanton
    Dec 2, 2021
    18
    内存太小,编译需要大量内存,你这 1G 就是瓶颈。
    内存对于编译速度的影响是指数级别的,你内存加大 1 倍速度提升可能有 10 倍。
    shiny
    shiny
    PRO
    Dec 2, 2021
    19
    那有点离谱,以前在树莓派上编译都没花这么久
    DonaidTrump
    DonaidTrump
    Dec 2, 2021
    20
    你也没有改源码,为什么要自己编译?直接下载二进制的运行不好么
    ppphp
    ppphp
    Dec 2, 2021
    21
    要么是内存就慢
    JDog
    JDog
    Dec 2, 2021
    22
    从标题来看,你不熟悉 node ,那么我推断你没有改 node 源码,请问为什么不直接用二进制包,而是自己编译呢?
    lianyue
    lianyue
    Dec 2, 2021
    23
    一旦 用上 swap 编译 卡死你 go build 内存够用 10 秒 内存小 半小时我都没出结果
    ruanimal
    ruanimal
    Dec 2, 2021
    24
    跑个题,为啥要编译安装 node
    seers
    seers
    Dec 2, 2021 via Android
    25
    如果内存不够大就会浪费时间一直在 paging
    codingBug
    codingBug
    Dec 2, 2021 via Android
    26
    是不是网络问题
    pengtdyd
    pengtdyd
    Dec 2, 2021
    27
    没有金刚钻不揽瓷器活
    ericgui
    ericgui
    Dec 3, 2021
    28
    请教楼主,为什么要编译 node ?要定制 runtime ?
    LeeReamond
    LeeReamond
    OP
    Dec 3, 2021
    29
    @JDog
    @ericgui
    因为我打开 google 搜索“linux nodejs 安装”,里面刚好点到弹出来第一个页面写的第一个装法是编译。而我就像楼上的,凭经验以为 15 分钟就能搞定了,也无所谓直接下不下二进制。结果睡一觉起来还在跑
    ericgui
    ericgui
    Dec 3, 2021
    30
    @LeeReamond 那你说你何苦
    hongch
    hongch
    Dec 3, 2021
    31
    软件的官网不都有教程吗,而且还是最新的,源码,二进制,安装包 各个平台的都有
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1527 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 70ms · UTC 12:11 · PVG 20:11 · LAX 04:11 · JFK 07:11
    ♥ Do have faith in what you're doing.