序幕:
我正在尝试使用“多租户”平面文件数据库系统。在应用程序启动时,在启动服务器之前,每个平面文件数据库(我称之为日志)都会转换为内存中的大型javascript对象。从那里,应用程序启动它的服务。
应用程序运行时行为将用于处理来自许多不同数据库的请求(每个域一个数据库)。所有读取都来自内存对象。虽然任何CRUD都修改内存对象以及将其流式传输到日志。
问题: 如果我在内存中有N个已经从平面文件加载的数据库对象(假设每个平均大约1MB),那么我将通过N个写入流来处理哪些限制?
答案 0 :(得分:0)
如果您正在使用在它们后面提供打开文件句柄的流,那么您可以打开多少个流的限制可能会受到打开文件句柄的进程限制的约束,这些限制因OS而异(在某些情况下) (例如)如何配置该操作系统。每个打开的流也会消耗一些内存,包括流对象和与流关联的读/写缓冲区。
如果您使用的某种自定义流只读取/写入内存而不是文件,那么就不会涉及文件句柄,您只会受到流对象及其缓冲区消耗的内存的限制。你可能有成千上万的这些没有问题。
一些参考文章:
Node.js and open files limit in linux