当前位置: 首页 > 面试题库 >

Node.js使用fs.readFileSync读取大文件

司寇光华
2023-03-14
问题内容

我尝试使用具有96GB RAM的服务器上的 fs.readFileSync 将大文件( 〜6Gb )加载到内存中。

问题是它失败并显示以下错误消息

RangeError:尝试分配大于最大大小的缓冲区:0x3fffffff字节

不幸的是,我没有发现增加Buffer的可能性,这似乎是一个常数。

如何克服此问题并使用Node.js加载大文件?

谢谢!


问题答案:

来自一个快乐的常见问题解答:

节点进程的内存限制是多少?

当前,默认情况下,v8在32位系统上的内存限制为512mb,在64位系统上的内存限制为1gb。可以通过将–
max_old_space_size设置为最大〜1024(〜1
GiB)(〜32位)和〜1741(〜1.7GiB)(〜64位)来提高限制,但是建议您拆分单个进程如果您要达到内存限制,则分成几个工作组。

如果您显示有关文件中的内容以及您对其进行的操作的更多详细信息,我们可能会提供一些有关如何分块使用它的想法。如果是纯数据,则您可能希望使用数据库,并让数据库根据需要从磁盘获取内容并管理内存。

以下是有关该问题的最新讨论:https :
//code.google.com/p/v8/issues/detail?id=847

并且,这是一篇博客文章,声称您可以编辑V8源代码并重建节点以消除内存限制。您可以自行决定尝试此操作。



 类似资料:
  • 问题内容: 我需要在终端中传递一个文本文件,然后从中读取数据,我该怎么办? 如何从终端进入路径,如何在另一侧阅读? 问题答案: 您将要使用数组访问命令行参数以获取文件名,并使用FileSystem模块(fs)来读取文件。例如: 为了稍微分解一下,通常长度为2,第零个为“节点”解释器,第一个为节点当前正在运行的脚本,其后的项目在命令行中传递。从argv中提取文件名后,就可以使用文件系统函数读取文件并

  • 问题内容: 好的,所以我正在使用该模块将我的文件从angular上传到my : 这被发送到以下功能: 现在,我的目标是读取文件,然后将每一行添加到数据库中。 但是我不太确定我如何从我的服务器中读取文件并调试了服务器,找不到文件,但是正在从我的应用程序中调用api。 谁能向正确的方向推动我?:) 问题答案: 有几种不同的库可以解析Excel文件(.xlsx)。我将列出两个我觉得有趣并且值得研究的项目

  • 问题内容: 我需要找到一种最佳方法,即使用node.js实时读取正在写入文件的数据。麻烦的是,Node是一艘飞速前进的船,这使得很难找到解决问题的最佳方法。 我要做什么我 有一个Java进程正在执行某项操作,然后将其执行的结果写入文本文件。运行通常需要5分钟到5个小时的时间,整个时间都会写入数据,并且可以达到相当高的吞吐率(大约1000行/秒)。 我想实时读取此文件,然后使用节点聚合数据并将其写入

  • 我不熟悉使用vertx,我正在使用vertx文件系统api来读取大文件。 但是RAM在读取时被消耗殆尽,资源在使用后甚至没有被刷新。vertx文件系统api还建议不要使用此方法读取非常大的文件,否则可能会耗尽可用的RAM。 除此之外还有其他选择吗?

  • 嗨,我在node.js中得到了以下代码 我试图以以下json格式显示键和所有的值:

  • 问题内容: 我正在努力使自己在Node.js中实现同步与异步,尤其是在读取html文件时。 在请求处理程序中,可以使用的同步版本如下: 使用readFile()的版本是什么? 我了解readFile是异步的,因此从理论上讲,我应该等待整个文件读取后再呈现,因此我应该引入addListener吗?我可能会混淆其他事情。 编辑:我试图重构这样的代码: 我得到一个空白页,我想这是因为它应该等待所有数据已