首页 > 解决方案 > 具有多个用户的 NodeJS/ExpressJS 服务器中的可变存储限制?

问题描述

我想在节点服务器代码内的变量中存储一些临时数据(对象和数组)。这些变量存储在套接字的客户端变量中,并在与客户端的连接丢失时清除。我的问题是,当有成百上千的用户连接到服务器时,这种方法的内存使用限制是多少?有什么好担心的吗?这种方法是否比每分钟从 Mongo 数据库中为每个用户多次获取数据更好?关于系统性能,我真的很好奇

标签: javascriptnode.jsexpressmemory-managementperformance-testing

解决方案


这实际上取决于数据的大小。只需将估计的数据大小乘以同时连接的用户数,然后将其翻倍(对于 JS 存储开销),看看它有多大。这并不意味着是一个精确的计算,而是给你一个大概的数字来检查。

例如,如果您有 5k 的数据乘以 10,000 个用户,则上述等式将是:

5120 x 10,000 x 2 = 102,400,000 bytes or 98MB

在正常情况下,您将拥有一台具有千兆字节可用内存的服务器。

有什么好担心的吗?

因此,插入您自己的数据大小并与服务器中的典型可用内存进行比较。在大多数情况下,这个例子会很好,因为 100MB 没什么大不了的,除非你在一些低内存配置中运行。

这种方法是否比每分钟从 Mongo 数据库中为每个用户多次获取数据更好?

如果你有合适的内存并且你没有像这样缓存数据的更新问题,那么像这样在内存中缓存数据会比不断地查询 Mongo 更快。


推荐阅读