Node JS 中的最大可写流

Max writeable streams in Node JS

序言:

我正在试验 "multi-tenant" 平面文件数据库系统。在应用程序启动时,在启动服务器之前,每个平面文件数据库(我称之为日志)在内存中转换为一个大的 javascript 对象。应用程序从那里开始它的服务。

应用程序运行时行为将服务于来自许多不同数据库的请求(每个域一个数据库)。所有读取仅来自内存中的对象。虽然任何 CRUD 都会修改内存中的对象并将其流式传输到日志。

问题: 如果我在内存中有 N 个已经从平面文件加载的数据库对象(假设每个平均约 1MB),那么通过 N 个写入流我会处理什么样的限制?

如果您使用的流后面有一个打开的文件句柄,那么您对可以打开的文件数的限制可能会受到打开文件句柄的进程限制的限制,该限制会因 OS 和(在某些情况下)您如何配置 OS。每个打开的流也会消耗一些内存,用于流对象和与流关联的 read/write 缓冲区。

如果您正在使用某种仅 reads/writes 内存而不是文件的自定义流,则不会涉及文件句柄,您只会受到流对象消耗的内存的限制和他们的缓冲区。你可能有成千上万个这样的东西没有问题。

一些参考帖子:

Node.js and open files limit in linux

How do I change the number of open files limit in Linux?

Check the open FD limit for a given process in Linux