node.js - 防止 Node 在内存不足时崩溃

标签 node.js

我正在构建一个 nodeJS 应用程序,其目的是将文档转换为图像。因此,它对 RAM 的占用非常大,所以当出现峰值时,我的服务器上的 RAM 使用率可以达到 100%。

我的问题是,当它发生时, Node 会崩溃(内存不足异常),所以我想找到一种方法让它不崩溃,而是“尽其所能”地完成它的工作。

我知道有替代方案(缩放、排队、使用“永远”自动恢复),并且正在努力解决这个问题,但万一出现故障,知道我的服务器不会死掉会很酷如果 RAM 恰好已满。

有什么办法可以实现吗?

最佳答案

我会这样做:

  • 任务在持久队列中排队
  • 几个独立的 Node (工作)进程使用队列中的任务并计算结果。每个工作人员被限制为(比如)1.7GB 内存(node.js 进程的最大值)
  • 我认为该任务相当同步且计算量大,因此 worker 一次处理超过 1 个任务没有多大意义。

这可以保证不会耗尽所有 RAM 并非常有效地利用机器的资源。

关于node.js - 防止 Node 在内存不足时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38662267/

相关文章:

Node.js:检测请求的所有事件何时完成

node.js - Passport-local 返回 400 错误,从不查询数据库

javascript - Node.js mikeal/请求模块 - 乱码非 utf8 网站 (Shift_JIS)

node.js - 重定向到新页面以响应 Socket.IO 事件

javascript - stub 不返回 proxyquire 中的解析数据变得未定义

node.js - 无法使用node.js和socket.io从客户端向服务器发送消息

node.js - Angular2 - 使用 Bitbucket(或其他 GIT 存储库)进行 Azure 持续部署

security - Node.js 安全: protection from unauthorized change

javascript - Node.js 无法编译已安装的测试之一

linux - 防止从 Node.js 应用程序直接访问 Url