Node.js catch ENOMEM error thrown after spawn

前端 未结 6 1716
孤独总比滥情好
孤独总比滥情好 2020-12-02 06:33

My Node.js script crashes because of a thrown ENOMEM (Out of memory) errnoException when using spawn.

The error:

child_process.js:935
  throw errnoEx         


        
6条回答
  •  南方客
    南方客 (楼主)
    2020-12-02 07:08

    I had the same problem and as it turned out, my system had no swap space enabled. Check if this is the case by running the command free -m:

    vagrant@vagrant-ubuntu-trusty-64:~$ free -m
                 total       used       free     shared    buffers     cached
    Mem:          2002        233       1769          0         24         91
    -/+ buffers/cache:        116       1885
    Swap:            0          0          0
    

    Looking at the bottom row we can see we have a total of 0 bytes swap memory. Not good. Node can get pretty memory hungry and if no swap space is available when memory runs out, errors are bound to happen.

    The method for adding a swap file varies between operating systems and distributions, but if you're running Ubuntu like me you can follow these instructions on adding a swap file:

    1. sudo fallocate -l 4G /swapfile Create a 4 gigabyte swapfile
    2. sudo chmod 600 /swapfile Secure the swapfile by restricting access to root
    3. sudo mkswap /swapfile Mark the file as a swap space
    4. sudo swapon /swapfile Enable the swap
    5. echo "/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab Persist swapfile over reboots (thanks for the tip, bman!)

提交回复
热议问题