尝试加载 6.4G 视频文件以创建文件哈希时,我也遇到了同样的问题。我通过 fs.readFile() 读取整个文件并导致错误 RangeError [ERR_FS_FILE_TOO_LARGE]。然后我使用流来做到这一点:
let hash = crypto.createHash('md5'),
stream = fs.createReadStream(file_path);
stream.on('data', _buff => { hash.update(_buff, 'utf8'); });
stream.on('end', () => {
const hashCheckSum = hash.digest('hex');
// Save the hashCheckSum into database.
});
Run Code Online (Sandbox Code Playgroud)
希望它有所帮助。
来自joyent常见问题解答:
节点进程的内存限制是多少?
目前,默认情况下,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 源代码并重建节点以消除内存限制。请自行决定尝试此操作。
| 归档时间: |
|
| 查看次数: |
10827 次 |
| 最近记录: |