Node.js 进程内存不足错误

2024-05-26

FATAL ERROR: CALL_AND_RETRY_2 Allocation Failed - process out of memory

我看到这个错误,但不太确定它来自哪里。我正在从事的项目有以下基本工作流程:

  1. 从其他来源接收 XML 帖子
  2. 使用解析 XMLxml2js https://github.com/maqr/node-xml2js/
  3. 从新创建的 JSON 对象中提取所需信息并创建一个新对象。
  4. 将该对象发送到连接的客户端(使用socket.io)

使用的节点模块有:

  • xml2js
  • 套接字.io
  • 编舞
  • mysql https://github.com/felixge/node-mysql

当我收到 XML 数据包时,我做的第一件事就是将其写入 log.txt 文件,以备稍后需要查看某些内容。我先来fs.readFile获取当前内容,然后写入新内容+旧内容。 log.txt 文件在上次崩溃时可能约为 2400KB,但重新启动服务器后它又工作正常,所以我不认为这是问题所在。

在崩溃发生之前,我在日志中没有看到数据包,因此我不确定导致崩溃的原因...没有新客户端连接,没有发送消息...没有解析任何内容。

Edit

鉴于节点不断运行,我应该使用delete <object>在我使用的每个对象都达到其目的之后,例如var now = new Date()我用它来与过去发生的事情进行比较。或者,将步骤 3 中的结果对象传递给回调后?

Edit 2

我保留一个主对象,以防新客户端连接,他们需要查看过去的消息,尽管对象被删除,但它们不会在服务器的生命周期内保留,直到它们在客户端完成为止。目前,我正在做这样的事情

function parsingFunction(callback) {
    //Construct Object
    callback(theConstructedObject);
}

parsingFunction(function (data) {
   masterObject[someIdentifier] = data;
});

Edit 3

作为故障排除的另一个步骤,我转储了process.memoryUsage().heapUsed就在解析器开始之前parser.on('end', function() {..});并解析了几个xml数据包。整个测试过程中使用的最高堆约为 10-12 MB,但在正常情况下程序的占用量约为 4-5 MB。我不认为这特别会破坏交易,但可能有助于找到问题。


也许您不小心递归地关闭了对象。一个疯狂的例子:

function f() {
  var shouldBeDeleted = function(x) { return x }

  return function g() { return shouldBeDeleted(shouldBeDeleted) }
}

要查找正在发生的情况,请启动节点检查器并在可疑的内存不足错误之前设置断点。然后单击“关闭”(位于右边框附近的范围变量下方)。也许如果你点击周围的东西,就会点击一些东西,然后你就会意识到会发生什么。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node.js 进程内存不足错误 的相关文章

  • Valgrind 中零字节丢失

    当 Valgrind 报告 o 字节丢失时 这意味着什么 如下所示 27752 0 bytes in 1 blocks are definitely lost in loss record 2 of 1 532 我怀疑这只是创造性使用的产物
  • 语法错误:elasticdump 中的exports.runInThisContext (vm.js:53:16) 处出现意外标记 {

    我试图使用elasticdump 将elasticsearch 数据从一台服务器移动到另一台服务器 当我给予 elasticdump input http 192 168 0 122 9200 my index output http lo
  • nodejs mocha suite 未定义错误

    我正在尝试使用摩卡运行一些测试 但似乎无法克服这个错误 E tdd nodejs cart gt mocha cart test js node js 201 throw e process nextTick error or err Re
  • Sequelize.js - “不关联到”

    我在从数据库获取完整数据时遇到一些问题 那是我的模型 User module exports function sequelize DataTypes return sequelize define user id type DataTyp
  • socket.io 作为客户端

    有什么方法可以将socketio作为客户端运行 不是浏览器 而是nodejs脚本 我需要将数据从服务器广播到一些客户端 浏览器 和另一台linux机器 仅运行nodejs来获取变量 没有浏览器 欢迎任何想法 Regards github上有
  • 如何在nodejs缓冲区中存储整数?

    节点jsBuffer http nodejs org docs v0 4 12 api buffers html是相当膨胀 然而 它似乎适合存储字符串 构造函数采用字符串 字节数组或要分配的字节大小 我使用的是 Node js 0 4 12
  • 如何将 Gulp 添加到我的项目中?

    我正在使用 Windows 7 Visual Studio 2013 我正在尝试在我的客户项目中设置 Gulp 我已将这些 Nuget 添加到项目中 Node js 版本 0 12 0 Npm js 版本 1 3 15 10 由于某种原因我
  • JITSU 无法安装 OSX [节点 0.8.17 和 NPM 1.2.0] WTF

    我在通过 NPM 安装 jitsu 时遇到问题 我在 mac osx 10 6 8 上安装了节点 0 8 17 和 NPM 1 2 0 当我跑步时 sudo npm install jitsu g 首先它警告未找到自述文件 npm WARN
  • Node.js 中的异步或步骤

    我无法让我的异步代码与 node js 一起使用 尝试异步和步骤库 代码仅返回第一个函数 似乎没有执行其余函数 我究竟做错了什么 thanks var step require step step function f1 console l
  • "message": "ENOENT: 没有这样的文件或目录,打开 'E:\\astrology\\utils\\uploads\\1600798534862qf.png'"

    正如标题所示 我得到error message ENOENT no such file or directory open E astrology utils uploads 1600798534862qf png 在我的项目中 即使在通过
  • 如何在 VSCode 调试器中执行异步函数? [复制]

    这个问题在这里已经有答案了 如果我在一些 javascript 代码中放入 VSCode 调试器并使用 wait 调用异步函数 它只会返回一个承诺 如何解决调试器中的承诺 以便我可以看到结果是什么 例如 如果我定义一个像这样的函数 cons
  • 为什么此 HTTP 请求在 AWS Lambda 上不起作用?

    我正在开始使用 AWS Lambda 并尝试从我的处理程序函数请求外部服务 根据这个答案 https stackoverflow com a 27932216 473467 HTTP 请求应该可以正常工作 而且我还没有找到任何其他说明的文档
  • 找到对应的未经V8优化的JS代码源

    我尝试优化 node js 应用程序的性能 因此我正在分析 V8 的 JIT 编译器的行为 当通过运行应用程序时node trace deopt trace opt code comments print optcode 输出包含许多重复出
  • 无法在适当的时间对域调用 dispose

    我有一个问题domain模块 目前 我正在尝试捕获请求中引发的任何未捕获的错误 使用express中间件和域 所有请求在调用之前都会通过此函数路由next并继续走正确的路线 app use req res next gt domain cr
  • 使用填充方法在 sails mongo 中进行深层关联?

    我是 sails js 的新手 我正在使用 sails js 与 Mongodb 我在我的 sails 应用程序中使用 populate 进行深层关联时遇到问题 我有这样的关系 Category has many to many relat
  • NodeJS Express Windows 最大连接数设置

    在哪里设置nodejs的最大连接数 用于使用express get 在 Windows 10 中 与linux中的最大文件 描述符 设置有关吗 有该设置的 Windows 版本吗 最好是在nodejs中进行设置 以便在迁移到unix时兼容
  • socket.io 的良好初学者教程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在打字稿中导入 json

    我是 typescript 的新手 在我的项目中 我们使用 typescript2 在我的要求之一中 我需要导入 json 文件 所以我创建了 d ts 文件如下 test d ts declare module json const va
  • Node js,通过管道将 pdfkit 传输到内存流

    我在用pdfkit https github com devongovett pdfkit在我的节点服务器上 通常创建 pdf 文件 然后将它们上传到 s3 问题是 pdfkit 示例将 pdf 文档通过管道传输到节点写入流 该节点写入流将
  • 在 MySQL 中存储表情符号的编码问题:如何使用 Prisma ORM 在 NodeJS 中定义字符排序规则?

    亲爱的 Nodejs 专家和数据库专家 我们在 MySQL 数据库中存储表情符号和其他特殊字符时遇到问题 我们使用 Prisma 得到一个错误 这是我们使用的 ORM 参数无法从排序规则 utf8 general ci 转换为 utf8mb

随机推荐

  • 错误:C# 尝试读取或写入受保护的内存

    我很难纠正这个错误 该应用程序在 4 台不同的机器上进行了测试 在其中 3 台上运行良好 但一台 Vista PC 在尝试通过 WebBrowser1 打开页面时出现此错误 解决这个问题的任何帮助对我都会非常有帮助 System Acces
  • Objective-C 中何时使用括号以及何时使用句点

    我是一名新的 iPhone Objective C 开发人员 当我浏览不同的教程和开源代码时 我在理解何时使用方括号 以及何时使用句号方面遇到了一些问题 用于访问对象的属性 方法 例如 这段代码 void setSelected BOOL
  • 如何在“paradox”中设置具体值?

    有没有办法在 R 包中设置参数的特定值paradox 假设我对随机森林方法进行超参数调整 并且我想测试mtry c 2 3 7 8 and min node size c 2 5 7 即值之间距离不等的 4 x 3 网格 目前 我必须进行大
  • 无法从 Git 扩展向 GitHub 进行身份验证?

    我只是在 Visual Studio 2010 中设置 Git 扩展 但无法真正使其工作 我无法进行身份验证 在 Git Extensions 中 如果我选择 Plugins gt GitHub 我可以添加用户 密码 API 令牌并选择 S
  • 当我将 xx 添加到 mysql float 列时,结果错误,这是一个错误吗?

    我的mysql 5 6 16 我的餐桌信息 CREATE TABLE xxx uid int 11 NOT NULL money float 10 2 NOT NULL DEFAULT 0 00 real money float 10 2
  • MATLAB 问题中的 Parfor

    为什么我不能使用parfor在这段代码中 parfor i 1 r for j 1 N r xr j N r i 1 x i r j 1 end end 这是错误 错误 parfor 中的变量 xr 无法分类 请参阅 MATLAB 中的并行
  • 为什么 Rust 中的连接路径完全取代了原始路径?

    我不明白 Rust 如何连接文件路径 为什么这不起作用 fn main let root std path Path new resources let uri std path Path new js main js let path r
  • 在 C# 中设置风扇速度

    我知道以前有人问过这个问题 但我似乎无法让它发挥作用 我已调用以下内容 using System Management using System Management Instrumentation using System Runtime
  • java银行程序帐户ID不上去?

    每次创建银行帐户时 帐户 ID 都应增加 1 但每次我尝试提取 Id 时 我只会得到帐户 ID 为 0 任何建议 因为我完全按照我学习的书中的方式进行操作而且它仍然没有更新 帐户构造函数 public class BankAccount p
  • 如何从项目文件夹中的 jlabel 上设置图像?

    我正在尝试制作一个 Java 桌面应用程序 我想设置一个图像JLabel 我正在使用 NetBeans 从我的项目文件夹中 我的目录结构是 F gt MARKET src lib src defaultpackage demo java i
  • QT C++ QRegularExpression 多个匹配

    我想使用正则表达式从 QString html 中提取信息 我明确想使用正则表达式 无解析器解决方案 和类Q正则表达式 http qt project org doc qt 5 0 qtcore qregularexpression htm
  • 根据位置/日期更改日期选择器中的时间

    我在用着amsul 日期选择器和时间选择器 https amsul ca pickadate js time 我想根据选择的日期和复选框更改时间选择器的最小 最大小时 这是我的代码 var today new Date var tomorr
  • 将菜单添加到空活动

    我在 Android Studio 中制作了一个 Android 应用程序 并想在其上创建一个选项菜单 我将其创建为一个空活动 现在意识到我最好创建一个空白活动来获取选项菜单 无论如何 是否可以在空活动中创建选项菜单 如果有人能给我指出一个
  • 实时数据和草稿数据的数据库模型

    我一直在考虑在数据库中保存 实时 数据集和草稿数据集的最佳方法 实际版本会显示在网站上 草稿版本会一直进行下去 直到准备好上线为止 该模型是关系模型 由许多表组成 我目前的方法是拥有 2 个数据库 一个用于草稿 一个用于实时 当您将数据提升
  • 如何从 WPF 应用程序访问 Windows 文件预览图标

    我在一个目录中有一堆图片和视频 需要在WPF应用程序中显示 我正在考虑将Win7大图标本身显示为预览图像 因为这将节省我从视频文件中抓取适当帧的工作 因为 Windows 已经很好地完成了这项工作 有任何代码片段可以访问此 Shell 图标
  • 选择 matplotlib xticks 频率

    我正在用字符串作为 x 标签绘制数据 我想控制标签频率 以免文本使轴过载 在下面的示例中 我只想每 3 个刻度看到一个标签 a d g j 我可以做到这一点的一种方法是每 n 个元素用 2 个空字符串替换 my xticks 元素 但我确信
  • 我可以创建一个 List> 吗?

    我正在尝试创建一个列表WeakReference使用 4 5 泛型实现 这样我就可以避免类型检查和转换WeakReference目标 但 WeakReference
  • Windows PowerShell 查找文件中的重复行

    我需要使用 powershell 查找文本文件中的重复值 假设文件内容是 Apple Orange Banana Orange Orange 期望的输出应该是 Orange Orange 您还可以使用 Group Object cmdlet
  • 如何找到所有带有某种装饰的类?

    在Java中 我们可以使用 类路径扫描 找到具有给定注释的所有类 我们如何在 TypeScript 中做类似的事情 有没有办法找到所有装饰有某种装饰的类 这是一个例子 它假设您有某种方式引用范围 这magical类装饰器创建一个名为的字符串
  • Node.js 进程内存不足错误

    FATAL ERROR CALL AND RETRY 2 Allocation Failed process out of memory 我看到这个错误 但不太确定它来自哪里 我正在从事的项目有以下基本工作流程 从其他来源接收 XML 帖子