首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >派生后抛出Node.js捕获ENOMEM错误

派生后抛出Node.js捕获ENOMEM错误
EN

Stack Overflow用户
提问于 2014-10-04 22:13:32
回答 6查看 67.9K关注 0票数 91

我的Node.js脚本崩溃是因为在使用spawn时抛出了ENOMEM (内存不足) errnoException。

错误:

代码语言:javascript
复制
child_process.js:935
  throw errnoException(process._errno, 'spawn');
        ^

Error: spawn ENOMEM
  at errnoException (child_process.js:988:11)
  at ChildProcess.spawn (child_process.js:935:11)
  at Object.exports.spawn (child_process.js:723:9)
  at module.exports ([...]/node_modules/zbarimg/index.js:19:23)

我已经为errorexit事件使用了侦听器,但它们都不会在出现此错误时被触发。

我的代码:

代码语言:javascript
复制
zbarimg = process.spawn('zbarimg', [photo, '-q']);
zbarimg.on('error', function(err) { ... });
zbarimg.on('close', function(code) { ... }); 

完整的源代码available

我能做些什么来防止脚本崩溃吗?如何捕获抛出的ENOMEM错误?

EN

回答 6

Stack Overflow用户

发布于 2015-09-08 02:58:36

我也遇到了同样的问题,结果是,我的系统没有启用交换空间的的。通过运行命令free -m检查是否属于这种情况

代码语言:javascript
复制
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

看看最下面的一行,我们可以看到总共有0字节的交换内存。不太好。节点可能会非常耗用内存,如果内存耗尽时没有可用的交换空间,则肯定会发生错误。

添加交换文件的方法因操作系统和发行版的不同而有所不同,但如果您像我一样运行Ubuntu,您可以遵循以下instructions on adding a swap file

  1. sudo fallocate -l 4G /swapfile创建4 to大小的swapfile
  2. sudo chmod 600 /swapfile通过限制对root
  3. sudo mkswap /swapfile的访问来保护交换文件将文件标记为交换space
  4. sudo swapon /swapfile启用swap
  5. echo "/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab在重新启动时保留交换文件(感谢您的提示,bman!)
票数 227
EN

Stack Overflow用户

发布于 2019-04-15 06:41:13

如果您在AWS Lambda中遇到此问题,您应该考虑增加分配给函数的内存。

票数 7
EN

Stack Overflow用户

发布于 2015-01-09 08:26:03

您可以尝试使用以下命令更改节点使用的内存量:node ----max-old-space-size=1024 yourscript.js

--max-old-space-size=1024将分配1G的内存。

默认情况下,node将使用512mb的内存,但根据您的平台,您可能需要分配更多或更少的内存,以便垃圾收集在您需要时启动。

如果您的平台可用内存少于500mb,请尝试将内存使用量设置为--max-old-space-size=256。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26193654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档